<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />




<title>Figure S6</title>

<script src="data:application/javascript;base64,Ly8gUGFuZG9jIDIuOSBhZGRzIGF0dHJpYnV0ZXMgb24gYm90aCBoZWFkZXIgYW5kIGRpdi4gV2UgcmVtb3ZlIHRoZSBmb3JtZXIgKHRvCi8vIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgYmVoYXZpb3Igb2YgUGFuZG9jIDwgMi44KS4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKGUpIHsKICB2YXIgaHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXYuc2VjdGlvbltjbGFzcyo9J2xldmVsJ10gPiA6Zmlyc3QtY2hpbGQiKTsKICB2YXIgaSwgaCwgYTsKICBmb3IgKGkgPSAwOyBpIDwgaHMubGVuZ3RoOyBpKyspIHsKICAgIGggPSBoc1tpXTsKICAgIGlmICghL15oWzEtNl0kL2kudGVzdChoLnRhZ05hbWUpKSBjb250aW51ZTsgIC8vIGl0IHNob3VsZCBiZSBhIGhlYWRlciBoMS1oNgogICAgYSA9IGguYXR0cmlidXRlczsKICAgIHdoaWxlIChhLmxlbmd0aCA+IDApIGgucmVtb3ZlQXR0cmlidXRlKGFbMF0ubmFtZSk7CiAgfQp9KTsK"></script>
<script src="data:application/javascript;base64,LyohIGpRdWVyeSB2MS4xMS4zIHwgKGMpIDIwMDUsIDIwMTUgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KIWZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsITApOmZ1bmN0aW9uKGEpe2lmKCFhLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9Yy5zbGljZSxlPWMuY29uY2F0LGY9Yy5wdXNoLGc9Yy5pbmRleE9mLGg9e30saT1oLnRvU3RyaW5nLGo9aC5oYXNPd25Qcm9wZXJ0eSxrPXt9LGw9IjEuMTEuMyIsbT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgbS5mbi5pbml0KGEsYil9LG49L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLG89L14tbXMtLyxwPS8tKFtcZGEtel0pL2dpLHE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfTttLmZuPW0ucHJvdG90eXBlPXtqcXVlcnk6bCxjb25zdHJ1Y3RvcjptLHNlbGVjdG9yOiIiLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZC5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/MD5hP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXTpkLmNhbGwodGhpcyl9LHB1c2hTdGFjazpmdW5jdGlvbihhKXt2YXIgYj1tLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxhKTtyZXR1cm4gYi5wcmV2T2JqZWN0PXRoaXMsYi5jb250ZXh0PXRoaXMuY29udGV4dCxifSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZWFjaCh0aGlzLGEsYil9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubGVuZ3RoLGM9K2ErKDA+YT9iOjApO3JldHVybiB0aGlzLnB1c2hTdGFjayhjPj0wJiZiPmM/W3RoaXNbY11dOltdKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpmLHNvcnQ6Yy5zb3J0LHNwbGljZTpjLnNwbGljZX0sbS5leHRlbmQ9bS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxpPWFyZ3VtZW50cy5sZW5ndGgsaj0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKSwib2JqZWN0Ij09dHlwZW9mIGd8fG0uaXNGdW5jdGlvbihnKXx8KGc9e30pLGg9PT1pJiYoZz10aGlzLGgtLSk7aT5oO2grKylpZihudWxsIT0oZT1hcmd1bWVudHNbaF0pKWZvcihkIGluIGUpYT1nW2RdLGM9ZVtkXSxnIT09YyYmKGomJmMmJihtLmlzUGxhaW5PYmplY3QoYyl8fChiPW0uaXNBcnJheShjKSkpPyhiPyhiPSExLGY9YSYmbS5pc0FycmF5KGEpP2E6W10pOmY9YSYmbS5pc1BsYWluT2JqZWN0KGEpP2E6e30sZ1tkXT1tLmV4dGVuZChqLGYsYykpOnZvaWQgMCE9PWMmJihnW2RdPWMpKTtyZXR1cm4gZ30sbS5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKGwrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PW0udHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iYXJyYXkiPT09bS50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4hbS5pc0FycmF5KGEpJiZhLXBhcnNlRmxvYXQoYSkrMT49MH0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiO2lmKCFhfHwib2JqZWN0IiE9PW0udHlwZShhKXx8YS5ub2RlVHlwZXx8bS5pc1dpbmRvdyhhKSlyZXR1cm4hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIWouY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhai5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9aWYoay5vd25MYXN0KWZvcihiIGluIGEpcmV0dXJuIGouY2FsbChhLGIpO2ZvcihiIGluIGEpO3JldHVybiB2b2lkIDA9PT1ifHxqLmNhbGwoYSxiKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9hKyIiOiJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGE/aFtpLmNhbGwoYSldfHwib2JqZWN0Ijp0eXBlb2YgYX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZtLnRyaW0oYikmJihhLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UobywibXMtIikucmVwbGFjZShwLHEpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9MCxmPWEubGVuZ3RoLGc9cihhKTtpZihjKXtpZihnKXtmb3IoO2Y+ZTtlKyspaWYoZD1iLmFwcGx5KGFbZV0sYyksZD09PSExKWJyZWFrfWVsc2UgZm9yKGUgaW4gYSlpZihkPWIuYXBwbHkoYVtlXSxjKSxkPT09ITEpYnJlYWt9ZWxzZSBpZihnKXtmb3IoO2Y+ZTtlKyspaWYoZD1iLmNhbGwoYVtlXSxlLGFbZV0pLGQ9PT0hMSlicmVha31lbHNlIGZvcihlIGluIGEpaWYoZD1iLmNhbGwoYVtlXSxlLGFbZV0pLGQ9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjooYSsiIikucmVwbGFjZShuLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107cmV0dXJuIG51bGwhPWEmJihyKE9iamVjdChhKSk/bS5tZXJnZShjLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6Zi5jYWxsKGMsYSkpLGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKGIpe2lmKGcpcmV0dXJuIGcuY2FsbChiLGEsYyk7Zm9yKGQ9Yi5sZW5ndGgsYz1jPzA+Yz9NYXRoLm1heCgwLGQrYyk6YzowO2Q+YztjKyspaWYoYyBpbiBiJiZiW2NdPT09YSlyZXR1cm4gY31yZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgYz0rYi5sZW5ndGgsZD0wLGU9YS5sZW5ndGg7d2hpbGUoYz5kKWFbZSsrXT1iW2QrK107aWYoYyE9PWMpd2hpbGUodm9pZCAwIT09YltkXSlhW2UrK109YltkKytdO3JldHVybiBhLmxlbmd0aD1lLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoLGg9IWM7Zz5mO2YrKylkPSFiKGFbZl0sZiksZCE9PWgmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxmPTAsZz1hLmxlbmd0aCxoPXIoYSksaT1bXTtpZihoKWZvcig7Zz5mO2YrKylkPWIoYVtmXSxmLGMpLG51bGwhPWQmJmkucHVzaChkKTtlbHNlIGZvcihmIGluIGEpZD1iKGFbZl0sZixjKSxudWxsIT1kJiZpLnB1c2goZCk7cmV0dXJuIGUuYXBwbHkoW10saSl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGIpe3ZhciBjLGUsZjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihmPWFbYl0sYj1hLGE9ZiksbS5pc0Z1bmN0aW9uKGEpPyhjPWQuY2FsbChhcmd1bWVudHMsMiksZT1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGJ8fHRoaXMsYy5jb25jYXQoZC5jYWxsKGFyZ3VtZW50cykpKX0sZS5ndWlkPWEuZ3VpZD1hLmd1aWR8fG0uZ3VpZCsrLGUpOnZvaWQgMH0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSxzdXBwb3J0Omt9KSxtLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtoWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2UoKX0pO2Z1bmN0aW9uIHIoYSl7dmFyIGI9Imxlbmd0aCJpbiBhJiZhLmxlbmd0aCxjPW0udHlwZShhKTtyZXR1cm4iZnVuY3Rpb24iPT09Y3x8bS5pc1dpbmRvdyhhKT8hMToxPT09YS5ub2RlVHlwZSYmYj8hMDoiYXJyYXkiPT09Y3x8MD09PWJ8fCJudW1iZXIiPT10eXBlb2YgYiYmYj4wJiZiLTEgaW4gYX12YXIgcz1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1PSJzaXp6bGUiKzEqbmV3IERhdGUsdj1hLmRvY3VtZW50LHc9MCx4PTAseT1oYSgpLHo9aGEoKSxBPWhhKCksQj1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09YiYmKGw9ITApLDB9LEM9MTw8MzEsRD17fS5oYXNPd25Qcm9wZXJ0eSxFPVtdLEY9RS5wb3AsRz1FLnB1c2gsSD1FLnB1c2gsST1FLnNsaWNlLEo9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2Q+YztjKyspaWYoYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9LEs9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixMPSJbXFx4MjBcXHRcXHJcXG5cXGZdIixNPSIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIsTj1NLnJlcGxhY2UoInciLCJ3IyIpLE89IlxcWyIrTCsiKigiK00rIikoPzoiK0wrIiooWypeJHwhfl0/PSkiK0wrIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitOKyIpKXwpIitMKyIqXFxdIixQPSI6KCIrTSsiKSg/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIrTysiKSopfC4qKVxcKXwpIixRPW5ldyBSZWdFeHAoTCsiKyIsImciKSxSPW5ldyBSZWdFeHAoIl4iK0wrIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrTCsiKyQiLCJnIiksUz1uZXcgUmVnRXhwKCJeIitMKyIqLCIrTCsiKiIpLFQ9bmV3IFJlZ0V4cCgiXiIrTCsiKihbPit+XXwiK0wrIikiK0wrIioiKSxVPW5ldyBSZWdFeHAoIj0iK0wrIiooW15cXF0nXCJdKj8pIitMKyIqXFxdIiwiZyIpLFY9bmV3IFJlZ0V4cChQKSxXPW5ldyBSZWdFeHAoIl4iK04rIiQiKSxYPXtJRDpuZXcgUmVnRXhwKCJeIygiK00rIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTSsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrTS5yZXBsYWNlKCJ3IiwidyoiKSsiKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrTyksUFNFVURPOm5ldyBSZWdFeHAoIl4iK1ApLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTCsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTCsiKig/OihbKy1dfCkiK0wrIiooXFxkKyl8KSkiK0wrIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK0srIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitMKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK0wrIiooKD86LVxcZCk/XFxkKikiK0wrIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxaPS9eaFxkJC9pLCQ9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLF89L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxhYT0vWyt+XS8sYmE9Lyd8XFwvZyxjYT1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK0wrIj98KCIrTCsiKXwuKSIsImlnIiksZGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/YjowPmQ/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9LGVhPWZ1bmN0aW9uKCl7bSgpfTt0cnl7SC5hcHBseShFPUkuY2FsbCh2LmNoaWxkTm9kZXMpLHYuY2hpbGROb2RlcyksRVt2LmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChmYSl7SD17YXBwbHk6RS5sZW5ndGg/ZnVuY3Rpb24oYSxiKXtHLmFwcGx5KGEsSS5jYWxsKGIpKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aCxkPTA7d2hpbGUoYVtjKytdPWJbZCsrXSk7YS5sZW5ndGg9Yy0xfX19ZnVuY3Rpb24gZ2EoYSxiLGQsZSl7dmFyIGYsaCxqLGssbCxvLHIscyx3LHg7aWYoKGI/Yi5vd25lckRvY3VtZW50fHxiOnYpIT09biYmbShiKSxiPWJ8fG4sZD1kfHxbXSxrPWIubm9kZVR5cGUsInN0cmluZyIhPXR5cGVvZiBhfHwhYXx8MSE9PWsmJjkhPT1rJiYxMSE9PWspcmV0dXJuIGQ7aWYoIWUmJnApe2lmKDExIT09ayYmKGY9Xy5leGVjKGEpKSlpZihqPWZbMV0pe2lmKDk9PT1rKXtpZihoPWIuZ2V0RWxlbWVudEJ5SWQoaiksIWh8fCFoLnBhcmVudE5vZGUpcmV0dXJuIGQ7aWYoaC5pZD09PWopcmV0dXJuIGQucHVzaChoKSxkfWVsc2UgaWYoYi5vd25lckRvY3VtZW50JiYoaD1iLm93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaikpJiZ0KGIsaCkmJmguaWQ9PT1qKXJldHVybiBkLnB1c2goaCksZH1lbHNle2lmKGZbMl0pcmV0dXJuIEguYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpKSxkO2lmKChqPWZbM10pJiZjLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEguYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaikpLGR9aWYoYy5xc2EmJighcXx8IXEudGVzdChhKSkpe2lmKHM9cj11LHc9Yix4PTEhPT1rJiZhLDE9PT1rJiYib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7bz1nKGEpLChyPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXIucmVwbGFjZShiYSwiXFwkJiIpOmIuc2V0QXR0cmlidXRlKCJpZCIscykscz0iW2lkPSciK3MrIiddICIsbD1vLmxlbmd0aDt3aGlsZShsLS0pb1tsXT1zK3JhKG9bbF0pO3c9YWEudGVzdChhKSYmcGEoYi5wYXJlbnROb2RlKXx8Yix4PW8uam9pbigiLCIpfWlmKHgpdHJ5e3JldHVybiBILmFwcGx5KGQsdy5xdWVyeVNlbGVjdG9yQWxsKHgpKSxkfWNhdGNoKHkpe31maW5hbGx5e3J8fGIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGkoYS5yZXBsYWNlKFIsIiQxIiksYixkLGUpfWZ1bmN0aW9uIGhhKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIgIl09ZX1yZXR1cm4gYn1mdW5jdGlvbiBpYShhKXtyZXR1cm4gYVt1XT0hMCxhfWZ1bmN0aW9uIGphKGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24ga2EoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1hLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24gbGEoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiYofmIuc291cmNlSW5kZXh8fEMpLSh+YS5zb3VyY2VJbmRleHx8Qyk7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIG1hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG5hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBvYShhKXtyZXR1cm4gaWEoZnVuY3Rpb24oYil7cmV0dXJuIGI9K2IsaWEoZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5sZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tlXSkpfSl9KX1mdW5jdGlvbiBwYShhKXtyZXR1cm4gYSYmInVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lJiZhfWM9Z2Euc3VwcG9ydD17fSxmPWdhLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj8iSFRNTCIhPT1iLm5vZGVOYW1lOiExfSxtPWdhLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGUsZz1hP2Eub3duZXJEb2N1bWVudHx8YTp2O3JldHVybiBnIT09biYmOT09PWcubm9kZVR5cGUmJmcuZG9jdW1lbnRFbGVtZW50PyhuPWcsbz1nLmRvY3VtZW50RWxlbWVudCxlPWcuZGVmYXVsdFZpZXcsZSYmZSE9PWUudG9wJiYoZS5hZGRFdmVudExpc3RlbmVyP2UuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixlYSwhMSk6ZS5hdHRhY2hFdmVudCYmZS5hdHRhY2hFdmVudCgib251bmxvYWQiLGVhKSkscD0hZihnKSxjLmF0dHJpYnV0ZXM9amEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksYy5nZXRFbGVtZW50c0J5VGFnTmFtZT1qYShmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChnLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT0kLnRlc3QoZy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxjLmdldEJ5SWQ9amEoZnVuY3Rpb24oYSl7cmV0dXJuIG8uYXBwZW5kQ2hpbGQoYSkuaWQ9dSwhZy5nZXRFbGVtZW50c0J5TmFtZXx8IWcuZ2V0RWxlbWVudHNCeU5hbWUodSkubGVuZ3RofSksYy5nZXRCeUlkPyhkLmZpbmQuSUQ9ZnVuY3Rpb24oYSxiKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQmJnApe3ZhciBjPWIuZ2V0RWxlbWVudEJ5SWQoYSk7cmV0dXJuIGMmJmMucGFyZW50Tm9kZT9bY106W119fSxkLmZpbHRlci5JRD1mdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoY2EsZGEpO3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifX0pOihkZWxldGUgZC5maW5kLklELGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYSxkYSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBjPSJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRBdHRyaWJ1dGVOb2RlJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGMmJmMudmFsdWU9PT1ifX0pLGQuZmluZC5UQUc9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihhLGIpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZT9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOmMucXNhP2IucXVlcnlTZWxlY3RvckFsbChhKTp2b2lkIDB9OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPTAsZj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lmKCIqIj09PWEpe3doaWxlKGM9ZltlKytdKTE9PT1jLm5vZGVUeXBlJiZkLnB1c2goYyk7cmV0dXJuIGR9cmV0dXJuIGZ9LGQuZmluZC5DTEFTUz1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGEsYil7cmV0dXJuIHA/Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scj1bXSxxPVtdLChjLnFzYT0kLnRlc3QoZy5xdWVyeVNlbGVjdG9yQWxsKSkmJihqYShmdW5jdGlvbihhKXtvLmFwcGVuZENoaWxkKGEpLmlubmVySFRNTD0iPGEgaWQ9JyIrdSsiJz48L2E+PHNlbGVjdCBpZD0nIit1KyItXGZdJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsYS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCYmcS5wdXNoKCJbKl4kXT0iK0wrIiooPzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8cS5wdXNoKCJcXFsiK0wrIiooPzp2YWx1ZXwiK0srIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH49Iit1KyItXSIpLmxlbmd0aHx8cS5wdXNoKCJ+PSIpLGEucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHEucHVzaCgiOmNoZWNrZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIit1KyIrKiIpLmxlbmd0aHx8cS5wdXNoKCIuIy4rWyt+XSIpfSksamEoZnVuY3Rpb24oYSl7dmFyIGI9Zy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksYS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmcS5wdXNoKCJuYW1lIitMKyIqWypeJHwhfl0/PSIpLGEucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGh8fHEucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSxxLnB1c2goIiwuKjoiKX0pKSwoYy5tYXRjaGVzU2VsZWN0b3I9JC50ZXN0KHM9by5tYXRjaGVzfHxvLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8by5tb3pNYXRjaGVzU2VsZWN0b3J8fG8ub01hdGNoZXNTZWxlY3Rvcnx8by5tc01hdGNoZXNTZWxlY3RvcikpJiZqYShmdW5jdGlvbihhKXtjLmRpc2Nvbm5lY3RlZE1hdGNoPXMuY2FsbChhLCJkaXYiKSxzLmNhbGwoYSwiW3MhPScnXTp4Iiksci5wdXNoKCIhPSIsUCl9KSxxPXEubGVuZ3RoJiZuZXcgUmVnRXhwKHEuam9pbigifCIpKSxyPXIubGVuZ3RoJiZuZXcgUmVnRXhwKHIuam9pbigifCIpKSxiPSQudGVzdChvLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSx0PWJ8fCQudGVzdChvLmNvbnRhaW5zKT9mdW5jdGlvbihhLGIpe3ZhciBjPTk9PT1hLm5vZGVUeXBlP2EuZG9jdW1lbnRFbGVtZW50OmEsZD1iJiZiLnBhcmVudE5vZGU7cmV0dXJuIGE9PT1kfHwhKCFkfHwxIT09ZC5ub2RlVHlwZXx8IShjLmNvbnRhaW5zP2MuY29udGFpbnMoZCk6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmMTYmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihkKSkpfTpmdW5jdGlvbihhLGIpe2lmKGIpd2hpbGUoYj1iLnBhcmVudE5vZGUpaWYoYj09PWEpcmV0dXJuITA7cmV0dXJuITF9LEI9Yj9mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGQ9IWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24tIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247cmV0dXJuIGQ/ZDooZD0oYS5vd25lckRvY3VtZW50fHxhKT09PShiLm93bmVyRG9jdW1lbnR8fGIpP2EuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYik6MSwxJmR8fCFjLnNvcnREZXRhY2hlZCYmYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKT09PWQ/YT09PWd8fGEub3duZXJEb2N1bWVudD09PXYmJnQodixhKT8tMTpiPT09Z3x8Yi5vd25lckRvY3VtZW50PT09diYmdCh2LGIpPzE6az9KKGssYSktSihrLGIpOjA6NCZkPy0xOjEpfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGMsZD0wLGU9YS5wYXJlbnROb2RlLGY9Yi5wYXJlbnROb2RlLGg9W2FdLGk9W2JdO2lmKCFlfHwhZilyZXR1cm4gYT09PWc/LTE6Yj09PWc/MTplPy0xOmY/MTprP0ooayxhKS1KKGssYik6MDtpZihlPT09ZilyZXR1cm4gbGEoYSxiKTtjPWE7d2hpbGUoYz1jLnBhcmVudE5vZGUpaC51bnNoaWZ0KGMpO2M9Yjt3aGlsZShjPWMucGFyZW50Tm9kZSlpLnVuc2hpZnQoYyk7d2hpbGUoaFtkXT09PWlbZF0pZCsrO3JldHVybiBkP2xhKGhbZF0saVtkXSk6aFtkXT09PXY/LTE6aVtkXT09PXY/MTowfSxnKTpufSxnYS5tYXRjaGVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdhKGEsbnVsbCxudWxsLGIpfSxnYS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtpZigoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSksYj1iLnJlcGxhY2UoVSwiPSckMSddIiksISghYy5tYXRjaGVzU2VsZWN0b3J8fCFwfHxyJiZyLnRlc3QoYil8fHEmJnEudGVzdChiKSkpdHJ5e3ZhciBkPXMuY2FsbChhLGIpO2lmKGR8fGMuZGlzY29ubmVjdGVkTWF0Y2h8fGEuZG9jdW1lbnQmJjExIT09YS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gZH1jYXRjaChlKXt9cmV0dXJuIGdhKGIsbixudWxsLFthXSkubGVuZ3RoPjB9LGdhLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLHQoYSxiKX0sZ2EuYXR0cj1mdW5jdGlvbihhLGIpeyhhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKTt2YXIgZT1kLmF0dHJIYW5kbGVbYi50b0xvd2VyQ2FzZSgpXSxmPWUmJkQuY2FsbChkLmF0dHJIYW5kbGUsYi50b0xvd2VyQ2FzZSgpKT9lKGEsYiwhcCk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1mP2Y6Yy5hdHRyaWJ1dGVzfHwhcD9hLmdldEF0dHJpYnV0ZShiKTooZj1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZmLnNwZWNpZmllZD9mLnZhbHVlOm51bGx9LGdhLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKX0sZ2EudW5pcXVlU29ydD1mdW5jdGlvbihhKXt2YXIgYixkPVtdLGU9MCxmPTA7aWYobD0hYy5kZXRlY3REdXBsaWNhdGVzLGs9IWMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoQiksbCl7d2hpbGUoYj1hW2YrK10pYj09PWFbZl0mJihlPWQucHVzaChmKSk7d2hpbGUoZS0tKWEuc3BsaWNlKGRbZV0sMSl9cmV0dXJuIGs9bnVsbCxhfSxlPWdhLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz0iIixkPTAsZj1hLm5vZGVUeXBlO2lmKGYpe2lmKDE9PT1mfHw5PT09Znx8MTE9PT1mKXtpZigic3RyaW5nIj09dHlwZW9mIGEudGV4dENvbnRlbnQpcmV0dXJuIGEudGV4dENvbnRlbnQ7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWMrPWUoYSl9ZWxzZSBpZigzPT09Znx8ND09PWYpcmV0dXJuIGEubm9kZVZhbHVlfWVsc2Ugd2hpbGUoYj1hW2QrK10pYys9ZShiKTtyZXR1cm4gY30sZD1nYS5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzppYSxtYXRjaDpYLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnJlcGxhY2UoY2EsZGEpLGFbM109KGFbM118fGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKGNhLGRhKSwifj0iPT09YVsyXSYmKGFbM109IiAiK2FbM10rIiAiKSxhLnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWFbMV0uc2xpY2UoMCwzKT8oYVszXXx8Z2EuZXJyb3IoYVswXSksYVs0XT0rKGFbNF0/YVs1XSsoYVs2XXx8MSk6MiooImV2ZW4iPT09YVszXXx8Im9kZCI9PT1hWzNdKSksYVs1XT0rKGFbN10rYVs4XXx8Im9kZCI9PT1hWzNdKSk6YVszXSYmZ2EuZXJyb3IoYVswXSksYX0sUFNFVURPOmZ1bmN0aW9uKGEpe3ZhciBiLGM9IWFbNl0mJmFbMl07cmV0dXJuIFguQ0hJTEQudGVzdChhWzBdKT9udWxsOihhWzNdP2FbMl09YVs0XXx8YVs1XXx8IiI6YyYmVi50ZXN0KGMpJiYoYj1nKGMsITApKSYmKGI9Yy5pbmRleE9mKCIpIixjLmxlbmd0aC1iKS1jLmxlbmd0aCkmJihhWzBdPWFbMF0uc2xpY2UoMCxiKSxhWzJdPWMuc2xpY2UoMCxiKSksYS5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYSxkYSkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1hP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1ifX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIGI9eVthKyIgIl07cmV0dXJuIGJ8fChiPW5ldyBSZWdFeHAoIihefCIrTCsiKSIrYSsiKCIrTCsifCQpIikpJiZ5KGEsZnVuY3Rpb24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZhLmNsYXNzTmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCl7dmFyIGU9Z2EuYXR0cihkLGEpO3JldHVybiBudWxsPT1lPyIhPSI9PT1iOmI/KGUrPSIiLCI9Ij09PWI/ZT09PWM6IiE9Ij09PWI/ZSE9PWM6Il49Ij09PWI/YyYmMD09PWUuaW5kZXhPZihjKToiKj0iPT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6IiQ9Ij09PWI/YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09Yzoifj0iPT09Yj8oIiAiK2UucmVwbGFjZShRLCIgIikrIiAiKS5pbmRleE9mKGMpPi0xOiJ8PSI9PT1iP2U9PT1jfHxlLnNsaWNlKDAsYy5sZW5ndGgrMSk9PT1jKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHM9IWkmJiFoO2lmKHEpe2lmKGYpe3doaWxlKHApe2w9Yjt3aGlsZShsPWxbcF0paWYoaD9sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1yOjE9PT1sLm5vZGVUeXBlKXJldHVybiExO289cD0ib25seSI9PT1hJiYhbyYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZihvPVtnP3EuZmlyc3RDaGlsZDpxLmxhc3RDaGlsZF0sZyYmcyl7az1xW3VdfHwocVt1XT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLG09alswXT09PXcmJmpbMl0sbD1uJiZxLmNoaWxkTm9kZXNbbl07d2hpbGUobD0rK24mJmwmJmxbcF18fChtPW49MCl8fG8ucG9wKCkpaWYoMT09PWwubm9kZVR5cGUmJisrbSYmbD09PWIpe2tbYV09W3csbixtXTticmVha319ZWxzZSBpZihzJiYoaj0oYlt1XXx8KGJbdV09e30pKVthXSkmJmpbMF09PT13KW09alsxXTtlbHNlIHdoaWxlKGw9KytuJiZsJiZsW3BdfHwobT1uPTApfHxvLnBvcCgpKWlmKChoP2wubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PWwubm9kZVR5cGUpJiYrK20mJihzJiYoKGxbdV18fChsW3VdPXt9KSlbYV09W3csbV0pLGw9PT1iKSlicmVhaztyZXR1cm4gbS09ZSxtPT09ZHx8bSVkPT09MCYmbS9kPj0wfX19LFBTRVVETzpmdW5jdGlvbihhLGIpe3ZhciBjLGU9ZC5wc2V1ZG9zW2FdfHxkLnNldEZpbHRlcnNbYS50b0xvd2VyQ2FzZSgpXXx8Z2EuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIithKTtyZXR1cm4gZVt1XT9lKGIpOmUubGVuZ3RoPjE/KGM9W2EsYSwiIixiXSxkLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT9pYShmdW5jdGlvbihhLGMpe3ZhciBkLGY9ZShhLGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0tKWQ9SihhLGZbZ10pLGFbZF09IShjW2RdPWZbZ10pfSk6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSwwLGMpfSk6ZX19LHBzZXVkb3M6e25vdDppYShmdW5jdGlvbihhKXt2YXIgYj1bXSxjPVtdLGQ9aChhLnJlcGxhY2UoUiwiJDEiKSk7cmV0dXJuIGRbdV0/aWEoZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZz1kKGEsbnVsbCxlLFtdKSxoPWEubGVuZ3RoO3doaWxlKGgtLSkoZj1nW2hdKSYmKGFbaF09IShiW2hdPWYpKX0pOmZ1bmN0aW9uKGEsZSxmKXtyZXR1cm4gYlswXT1hLGQoYixudWxsLGYsYyksYlswXT1udWxsLCFjLnBvcCgpfX0pLGhhczppYShmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGdhKGEsYikubGVuZ3RoPjB9fSksY29udGFpbnM6aWEoZnVuY3Rpb24oYSl7cmV0dXJuIGE9YS5yZXBsYWNlKGNhLGRhKSxmdW5jdGlvbihiKXtyZXR1cm4oYi50ZXh0Q29udGVudHx8Yi5pbm5lclRleHR8fGUoYikpLmluZGV4T2YoYSk+LTF9fSksbGFuZzppYShmdW5jdGlvbihhKXtyZXR1cm4gVy50ZXN0KGF8fCIiKXx8Z2EuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrYSksYT1hLnJlcGxhY2UoY2EsZGEpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7dmFyIGM7ZG8gaWYoYz1wP2IubGFuZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8Yi5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09PWF8fDA9PT1jLmluZGV4T2YoYSsiLSIpO3doaWxlKChiPWIucGFyZW50Tm9kZSkmJjE9PT1iLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oYil7dmFyIGM9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBjJiZjLnNsaWNlKDEpPT09Yi5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW99LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09bi5hY3RpdmVFbGVtZW50JiYoIW4uaGFzRm9jdXN8fG4uaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+YS50YWJJbmRleCl9LGVuYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMX0sZGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiEhYS5jaGVja2VkfHwib3B0aW9uIj09PWImJiEhYS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsYS5zZWxlY3RlZD09PSEwfSxlbXB0eTpmdW5jdGlvbihhKXtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpaWYoYS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIWQucHNldWRvcy5lbXB0eShhKX0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybiBaLnRlc3QoYS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybiBZLnRlc3QoYS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiJidXR0b24iPT09YS50eXBlfHwiYnV0dG9uIj09PWJ9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuImlucHV0Ij09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09YS50eXBlJiYobnVsbD09KGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PWIudG9Mb3dlckNhc2UoKSl9LGZpcnN0Om9hKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDpvYShmdW5jdGlvbihhLGIpe3JldHVybltiLTFdfSksZXE6b2EoZnVuY3Rpb24oYSxiLGMpe3JldHVyblswPmM/YytiOmNdfSksZXZlbjpvYShmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2I+YztjKz0yKWEucHVzaChjKTtyZXR1cm4gYX0pLG9kZDpvYShmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2I+YztjKz0yKWEucHVzaChjKTtyZXR1cm4gYX0pLGx0Om9hKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2MrYjpjOy0tZD49MDspYS5wdXNoKGQpO3JldHVybiBhfSksZ3Q6b2EoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wPmM/YytiOmM7KytkPGI7KWEucHVzaChkKTtyZXR1cm4gYX0pfX0sZC5wc2V1ZG9zLm50aD1kLnBzZXVkb3MuZXE7Zm9yKGIgaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pZC5wc2V1ZG9zW2JdPW1hKGIpO2ZvcihiIGlue3N1Ym1pdDohMCxyZXNldDohMH0pZC5wc2V1ZG9zW2JdPW5hKGIpO2Z1bmN0aW9uIHFhKCl7fXFhLnByb3RvdHlwZT1kLmZpbHRlcnM9ZC5wc2V1ZG9zLGQuc2V0RmlsdGVycz1uZXcgcWEsZz1nYS50b2tlbml6ZT1mdW5jdGlvbihhLGIpe3ZhciBjLGUsZixnLGgsaSxqLGs9elthKyIgIl07aWYoaylyZXR1cm4gYj8wOmsuc2xpY2UoMCk7aD1hLGk9W10saj1kLnByZUZpbHRlcjt3aGlsZShoKXsoIWN8fChlPVMuZXhlYyhoKSkpJiYoZSYmKGg9aC5zbGljZShlWzBdLmxlbmd0aCl8fGgpLGkucHVzaChmPVtdKSksYz0hMSwoZT1ULmV4ZWMoaCkpJiYoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZVswXS5yZXBsYWNlKFIsIiAiKX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2ZvcihnIGluIGQuZmlsdGVyKSEoZT1YW2ddLmV4ZWMoaCkpfHxqW2ddJiYhKGU9altnXShlKSl8fChjPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTpnLG1hdGNoZXM6ZX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2lmKCFjKWJyZWFrfXJldHVybiBiP2gubGVuZ3RoOmg/Z2EuZXJyb3IoYSk6eihhLGkpLnNsaWNlKDApfTtmdW5jdGlvbiByYShhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLGQ9IiI7Yz5iO2IrKylkKz1hW2JdLnZhbHVlO3JldHVybiBkfWZ1bmN0aW9uIHNhKGEsYixjKXt2YXIgZD1iLmRpcixlPWMmJiJwYXJlbnROb2RlIj09PWQsZj14Kys7cmV0dXJuIGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGYpe3doaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSlyZXR1cm4gYShiLGMsZil9OmZ1bmN0aW9uKGIsYyxnKXt2YXIgaCxpLGo9W3csZl07aWYoZyl7d2hpbGUoYj1iW2RdKWlmKCgxPT09Yi5ub2RlVHlwZXx8ZSkmJmEoYixjLGcpKXJldHVybiEwfWVsc2Ugd2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxlKXtpZihpPWJbdV18fChiW3VdPXt9KSwoaD1pW2RdKSYmaFswXT09PXcmJmhbMV09PT1mKXJldHVybiBqWzJdPWhbMl07aWYoaVtkXT1qLGpbMl09YShiLGMsZykpcmV0dXJuITB9fX1mdW5jdGlvbiB0YShhKXtyZXR1cm4gYS5sZW5ndGg+MT9mdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5sZW5ndGg7d2hpbGUoZS0tKWlmKCFhW2VdKGIsYyxkKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1mdW5jdGlvbiB1YShhLGIsYyl7Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtlPmQ7ZCsrKWdhKGEsYltkXSxjKTtyZXR1cm4gY31mdW5jdGlvbiB2YShhLGIsYyxkLGUpe2Zvcih2YXIgZixnPVtdLGg9MCxpPWEubGVuZ3RoLGo9bnVsbCE9YjtpPmg7aCsrKShmPWFbaF0pJiYoIWN8fGMoZixkLGUpKSYmKGcucHVzaChmKSxqJiZiLnB1c2goaCkpO3JldHVybiBnfWZ1bmN0aW9uIHdhKGEsYixjLGQsZSxmKXtyZXR1cm4gZCYmIWRbdV0mJihkPXdhKGQpKSxlJiYhZVt1XSYmKGU9d2EoZSxmKSksaWEoZnVuY3Rpb24oZixnLGgsaSl7dmFyIGosayxsLG09W10sbj1bXSxvPWcubGVuZ3RoLHA9Znx8dWEoYnx8IioiLGgubm9kZVR5cGU/W2hdOmgsW10pLHE9IWF8fCFmJiZiP3A6dmEocCxtLGEsaCxpKSxyPWM/ZXx8KGY/YTpvfHxkKT9bXTpnOnE7aWYoYyYmYyhxLHIsaCxpKSxkKXtqPXZhKHIsbiksZChqLFtdLGgsaSksaz1qLmxlbmd0aDt3aGlsZShrLS0pKGw9altrXSkmJihyW25ba11dPSEocVtuW2tdXT1sKSl9aWYoZil7aWYoZXx8YSl7aWYoZSl7aj1bXSxrPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmai5wdXNoKHFba109bCk7ZShudWxsLHI9W10saixpKX1rPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmKGo9ZT9KKGYsbCk6bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj12YShyPT09Zz9yLnNwbGljZShvLHIubGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6SC5hcHBseShnLHIpfSl9ZnVuY3Rpb24geGEoYSl7Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8ZC5yZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz1zYShmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgsITApLGw9c2EoZnVuY3Rpb24oYSl7cmV0dXJuIEooYixhKT4tMX0saCwhMCksbT1bZnVuY3Rpb24oYSxjLGQpe3ZhciBlPSFnJiYoZHx8YyE9PWopfHwoKGI9Yykubm9kZVR5cGU/ayhhLGMsZCk6bChhLGMsZCkpO3JldHVybiBiPW51bGwsZX1dO2Y+aTtpKyspaWYoYz1kLnJlbGF0aXZlW2FbaV0udHlwZV0pbT1bc2EodGEobSksYyldO2Vsc2V7aWYoYz1kLmZpbHRlclthW2ldLnR5cGVdLmFwcGx5KG51bGwsYVtpXS5tYXRjaGVzKSxjW3VdKXtmb3IoZT0rK2k7Zj5lO2UrKylpZihkLnJlbGF0aXZlW2FbZV0udHlwZV0pYnJlYWs7cmV0dXJuIHdhKGk+MSYmdGEobSksaT4xJiZyYShhLnNsaWNlKDAsaS0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PWFbaS0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKFIsIiQxIiksYyxlPmkmJnhhKGEuc2xpY2UoaSxlKSksZj5lJiZ4YShhPWEuc2xpY2UoZSkpLGY+ZSYmcmEoYSkpfW0ucHVzaChjKX1yZXR1cm4gdGEobSl9ZnVuY3Rpb24geWEoYSxiKXt2YXIgYz1iLmxlbmd0aD4wLGU9YS5sZW5ndGg+MCxmPWZ1bmN0aW9uKGYsZyxoLGksayl7dmFyIGwsbSxvLHA9MCxxPSIwIixyPWYmJltdLHM9W10sdD1qLHU9Znx8ZSYmZC5maW5kLlRBRygiKiIsayksdj13Kz1udWxsPT10PzE6TWF0aC5yYW5kb20oKXx8LjEseD11Lmxlbmd0aDtmb3IoayYmKGo9ZyE9PW4mJmcpO3EhPT14JiZudWxsIT0obD11W3FdKTtxKyspe2lmKGUmJmwpe209MDt3aGlsZShvPWFbbSsrXSlpZihvKGwsZyxoKSl7aS5wdXNoKGwpO2JyZWFrfWsmJih3PXYpfWMmJigobD0hbyYmbCkmJnAtLSxmJiZyLnB1c2gobCkpfWlmKHArPXEsYyYmcSE9PXApe209MDt3aGlsZShvPWJbbSsrXSlvKHIscyxnLGgpO2lmKGYpe2lmKHA+MCl3aGlsZShxLS0pcltxXXx8c1txXXx8KHNbcV09Ri5jYWxsKGkpKTtzPXZhKHMpfUguYXBwbHkoaSxzKSxrJiYhZiYmcy5sZW5ndGg+MCYmcCtiLmxlbmd0aD4xJiZnYS51bmlxdWVTb3J0KGkpfXJldHVybiBrJiYodz12LGo9dCkscn07cmV0dXJuIGM/aWEoZik6Zn1yZXR1cm4gaD1nYS5jb21waWxlPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPVtdLGY9QVthKyIgIl07aWYoIWYpe2J8fChiPWcoYSkpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWY9eGEoYltjXSksZlt1XT9kLnB1c2goZik6ZS5wdXNoKGYpO2Y9QShhLHlhKGUsZCkpLGYuc2VsZWN0b3I9YX1yZXR1cm4gZn0saT1nYS5zZWxlY3Q9ZnVuY3Rpb24oYSxiLGUsZil7dmFyIGksaixrLGwsbSxuPSJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhLG89IWYmJmcoYT1uLnNlbGVjdG9yfHxhKTtpZihlPWV8fFtdLDE9PT1vLmxlbmd0aCl7aWYoaj1vWzBdPW9bMF0uc2xpY2UoMCksai5sZW5ndGg+MiYmIklEIj09PShrPWpbMF0pLnR5cGUmJmMuZ2V0QnlJZCYmOT09PWIubm9kZVR5cGUmJnAmJmQucmVsYXRpdmVbalsxXS50eXBlXSl7aWYoYj0oZC5maW5kLklEKGsubWF0Y2hlc1swXS5yZXBsYWNlKGNhLGRhKSxiKXx8W10pWzBdLCFiKXJldHVybiBlO24mJihiPWIucGFyZW50Tm9kZSksYT1hLnNsaWNlKGouc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWk9WC5uZWVkc0NvbnRleHQudGVzdChhKT8wOmoubGVuZ3RoO3doaWxlKGktLSl7aWYoaz1qW2ldLGQucmVsYXRpdmVbbD1rLnR5cGVdKWJyZWFrO2lmKChtPWQuZmluZFtsXSkmJihmPW0oay5tYXRjaGVzWzBdLnJlcGxhY2UoY2EsZGEpLGFhLnRlc3QoalswXS50eXBlKSYmcGEoYi5wYXJlbnROb2RlKXx8YikpKXtpZihqLnNwbGljZShpLDEpLGE9Zi5sZW5ndGgmJnJhKGopLCFhKXJldHVybiBILmFwcGx5KGUsZiksZTticmVha319fXJldHVybihufHxoKGEsbykpKGYsYiwhcCxlLGFhLnRlc3QoYSkmJnBhKGIucGFyZW50Tm9kZSl8fGIpLGV9LGMuc29ydFN0YWJsZT11LnNwbGl0KCIiKS5zb3J0KEIpLmpvaW4oIiIpPT09dSxjLmRldGVjdER1cGxpY2F0ZXM9ISFsLG0oKSxjLnNvcnREZXRhY2hlZD1qYShmdW5jdGlvbihhKXtyZXR1cm4gMSZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG4uY3JlYXRlRWxlbWVudCgiZGl2IikpfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IiwiIyI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIil9KXx8a2EoInR5cGV8aHJlZnxoZWlnaHR8d2lkdGgiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYz92b2lkIDA6YS5nZXRBdHRyaWJ1dGUoYiwidHlwZSI9PT1iLnRvTG93ZXJDYXNlKCk/MToyKX0pLGMuYXR0cmlidXRlcyYmamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8aW5wdXQvPiIsYS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSwiIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIil9KXx8a2EoInZhbHVlIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGN8fCJpbnB1dCIhPT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/dm9pZCAwOmEuZGVmYXVsdFZhbHVlfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWEuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpfSl8fGthKEssZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiBjP3ZvaWQgMDphW2JdPT09ITA/Yi50b0xvd2VyQ2FzZSgpOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJmQuc3BlY2lmaWVkP2QudmFsdWU6bnVsbH0pLGdhfShhKTttLmZpbmQ9cyxtLmV4cHI9cy5zZWxlY3RvcnMsbS5leHByWyI6Il09bS5leHByLnBzZXVkb3MsbS51bmlxdWU9cy51bmlxdWVTb3J0LG0udGV4dD1zLmdldFRleHQsbS5pc1hNTERvYz1zLmlzWE1MLG0uY29udGFpbnM9cy5jb250YWluczt2YXIgdD1tLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LHU9L148KFx3KylccypcLz8+KD86PFwvXDE+fCkkLyx2PS9eLlteOiNcW1wuLF0qJC87ZnVuY3Rpb24gdyhhLGIsYyl7aWYobS5pc0Z1bmN0aW9uKGIpKXJldHVybiBtLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiEhYi5jYWxsKGEsZCxhKSE9PWN9KTtpZihiLm5vZGVUeXBlKXJldHVybiBtLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYT09PWIhPT1jfSk7aWYoInN0cmluZyI9PXR5cGVvZiBiKXtpZih2LnRlc3QoYikpcmV0dXJuIG0uZmlsdGVyKGIsYSxjKTtiPW0uZmlsdGVyKGIsYSl9cmV0dXJuIG0uZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBtLmluQXJyYXkoYSxiKT49MCE9PWN9KX1tLmZpbHRlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YlswXTtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksMT09PWIubGVuZ3RoJiYxPT09ZC5ub2RlVHlwZT9tLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGQsYSk/W2RdOltdOm0uZmluZC5tYXRjaGVzKGEsbS5ncmVwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfSkpfSxtLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYixjPVtdLGQ9dGhpcyxlPWQubGVuZ3RoO2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2sobShhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2U+YjtiKyspaWYobS5jb250YWlucyhkW2JdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihiPTA7ZT5iO2IrKyltLmZpbmQoYSxkW2JdLGMpO3JldHVybiBjPXRoaXMucHVzaFN0YWNrKGU+MT9tLnVuaXF1ZShjKTpjKSxjLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3I/dGhpcy5zZWxlY3RvcisiICIrYTphLGN9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sodyh0aGlzLGF8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sodyh0aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhdyh0aGlzLCJzdHJpbmciPT10eXBlb2YgYSYmdC50ZXN0KGEpP20oYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgeCx5PWEuZG9jdW1lbnQsej0vXig/OlxzKig8W1x3XFddKz4pW14+XSp8IyhbXHctXSopKSQvLEE9bS5mbi5pbml0PWZ1bmN0aW9uKGEsYil7dmFyIGMsZDtpZighYSlyZXR1cm4gdGhpcztpZigic3RyaW5nIj09dHlwZW9mIGEpe2lmKGM9IjwiPT09YS5jaGFyQXQoMCkmJiI+Ij09PWEuY2hhckF0KGEubGVuZ3RoLTEpJiZhLmxlbmd0aD49Mz9bbnVsbCxhLG51bGxdOnouZXhlYyhhKSwhY3x8IWNbMV0mJmIpcmV0dXJuIWJ8fGIuanF1ZXJ5PyhifHx4KS5maW5kKGEpOnRoaXMuY29uc3RydWN0b3IoYikuZmluZChhKTtpZihjWzFdKXtpZihiPWIgaW5zdGFuY2VvZiBtP2JbMF06YixtLm1lcmdlKHRoaXMsbS5wYXJzZUhUTUwoY1sxXSxiJiZiLm5vZGVUeXBlP2Iub3duZXJEb2N1bWVudHx8Yjp5LCEwKSksdS50ZXN0KGNbMV0pJiZtLmlzUGxhaW5PYmplY3QoYikpZm9yKGMgaW4gYiltLmlzRnVuY3Rpb24odGhpc1tjXSk/dGhpc1tjXShiW2NdKTp0aGlzLmF0dHIoYyxiW2NdKTtyZXR1cm4gdGhpc31pZihkPXkuZ2V0RWxlbWVudEJ5SWQoY1syXSksZCYmZC5wYXJlbnROb2RlKXtpZihkLmlkIT09Y1syXSlyZXR1cm4geC5maW5kKGEpO3RoaXMubGVuZ3RoPTEsdGhpc1swXT1kfXJldHVybiB0aGlzLmNvbnRleHQ9eSx0aGlzLnNlbGVjdG9yPWEsdGhpc31yZXR1cm4gYS5ub2RlVHlwZT8odGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xLHRoaXMpOm0uaXNGdW5jdGlvbihhKT8idW5kZWZpbmVkIiE9dHlwZW9mIHgucmVhZHk/eC5yZWFkeShhKTphKG0pOih2b2lkIDAhPT1hLnNlbGVjdG9yJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1hLmNvbnRleHQpLG0ubWFrZUFycmF5KGEsdGhpcykpfTtBLnByb3RvdHlwZT1tLmZuLHg9bSh5KTt2YXIgQj0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxDPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O20uZXh0ZW5kKHtkaXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9YVtiXTt3aGlsZShlJiY5IT09ZS5ub2RlVHlwZSYmKHZvaWQgMD09PWN8fDEhPT1lLm5vZGVUeXBlfHwhbShlKS5pcyhjKSkpMT09PWUubm9kZVR5cGUmJmQucHVzaChlKSxlPWVbYl07cmV0dXJuIGR9LHNpYmxpbmc6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSksbS5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYixjPW0oYSx0aGlzKSxkPWMubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2ZvcihiPTA7ZD5iO2IrKylpZihtLmNvbnRhaW5zKHRoaXMsY1tiXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkPTAsZT10aGlzLmxlbmd0aCxmPVtdLGc9dC50ZXN0KGEpfHwic3RyaW5nIiE9dHlwZW9mIGE/bShhLGJ8fHRoaXMuY29udGV4dCk6MDtlPmQ7ZCsrKWZvcihjPXRoaXNbZF07YyYmYyE9PWI7Yz1jLnBhcmVudE5vZGUpaWYoYy5ub2RlVHlwZTwxMSYmKGc/Zy5pbmRleChjKT4tMToxPT09Yy5ub2RlVHlwZSYmbS5maW5kLm1hdGNoZXNTZWxlY3RvcihjLGEpKSl7Zi5wdXNoKGMpO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjayhmLmxlbmd0aD4xP20udW5pcXVlKGYpOmYpfSxpbmRleDpmdW5jdGlvbihhKXtyZXR1cm4gYT8ic3RyaW5nIj09dHlwZW9mIGE/bS5pbkFycmF5KHRoaXNbMF0sbShhKSk6bS5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlzKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnB1c2hTdGFjayhtLnVuaXF1ZShtLm1lcmdlKHRoaXMuZ2V0KCksbShhLGIpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT1hP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19KTtmdW5jdGlvbiBEKGEsYil7ZG8gYT1hW2JdO3doaWxlKGEmJjEhPT1hLm5vZGVUeXBlKTtyZXR1cm4gYX1tLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJjExIT09Yi5ub2RlVHlwZT9iOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZGlyKGEsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5kaXIoYSwicGFyZW50Tm9kZSIsYyl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEQoYSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gRChhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4gbS5kaXIoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4gbS5kaXIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsIm5leHRTaWJsaW5nIixjKX0scHJldlVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5kaXIoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uc2libGluZygoYS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIG0uc2libGluZyhhLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gbS5ub2RlTmFtZShhLCJpZnJhbWUiKT9hLmNvbnRlbnREb2N1bWVudHx8YS5jb250ZW50V2luZG93LmRvY3VtZW50Om0ubWVyZ2UoW10sYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPW0ubWFwKHRoaXMsYixjKTtyZXR1cm4iVW50aWwiIT09YS5zbGljZSgtNSkmJihkPWMpLGQmJiJzdHJpbmciPT10eXBlb2YgZCYmKGU9bS5maWx0ZXIoZCxlKSksdGhpcy5sZW5ndGg+MSYmKENbYV18fChlPW0udW5pcXVlKGUpKSxCLnRlc3QoYSkmJihlPWUucmV2ZXJzZSgpKSksdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIEU9L1xTKy9nLEY9e307ZnVuY3Rpb24gRyhhKXt2YXIgYj1GW2FdPXt9O3JldHVybiBtLmVhY2goYS5tYXRjaChFKXx8W10sZnVuY3Rpb24oYSxjKXtiW2NdPSEwfSksYn1tLkNhbGxiYWNrcz1mdW5jdGlvbihhKXthPSJzdHJpbmciPT10eXBlb2YgYT9GW2FdfHxHKGEpOm0uZXh0ZW5kKHt9LGEpO3ZhciBiLGMsZCxlLGYsZyxoPVtdLGk9IWEub25jZSYmW10saj1mdW5jdGlvbihsKXtmb3IoYz1hLm1lbW9yeSYmbCxkPSEwLGY9Z3x8MCxnPTAsZT1oLmxlbmd0aCxiPSEwO2gmJmU+ZjtmKyspaWYoaFtmXS5hcHBseShsWzBdLGxbMV0pPT09ITEmJmEuc3RvcE9uRmFsc2Upe2M9ITE7YnJlYWt9Yj0hMSxoJiYoaT9pLmxlbmd0aCYmaihpLnNoaWZ0KCkpOmM/aD1bXTprLmRpc2FibGUoKSl9LGs9e2FkZDpmdW5jdGlvbigpe2lmKGgpe3ZhciBkPWgubGVuZ3RoOyFmdW5jdGlvbiBmKGIpe20uZWFjaChiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9bS50eXBlKGMpOyJmdW5jdGlvbiI9PT1kP2EudW5pcXVlJiZrLmhhcyhjKXx8aC5wdXNoKGMpOmMmJmMubGVuZ3RoJiYic3RyaW5nIiE9PWQmJmYoYyl9KX0oYXJndW1lbnRzKSxiP2U9aC5sZW5ndGg6YyYmKGc9ZCxqKGMpKX1yZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIGgmJm0uZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oYSxjKXt2YXIgZDt3aGlsZSgoZD1tLmluQXJyYXkoYyxoLGQpKT4tMSloLnNwbGljZShkLDEpLGImJihlPj1kJiZlLS0sZj49ZCYmZi0tKX0pLHRoaXN9LGhhczpmdW5jdGlvbihhKXtyZXR1cm4gYT9tLmluQXJyYXkoYSxoKT4tMTohKCFofHwhaC5sZW5ndGgpfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBoPVtdLGU9MCx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGg9aT1jPXZvaWQgMCx0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFofSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGk9dm9pZCAwLGN8fGsuZGlzYWJsZSgpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiFpfSxmaXJlV2l0aDpmdW5jdGlvbihhLGMpe3JldHVybiFofHxkJiYhaXx8KGM9Y3x8W10sYz1bYSxjLnNsaWNlP2Muc2xpY2UoKTpjXSxiP2kucHVzaChjKTpqKGMpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGsuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFkfX07cmV0dXJuIGt9LG0uZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihhKXt2YXIgYj1bWyJyZXNvbHZlIiwiZG9uZSIsbS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixtLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVqZWN0ZWQiXSxbIm5vdGlmeSIsInByb2dyZXNzIixtLkNhbGxiYWNrcygibWVtb3J5IildXSxjPSJwZW5kaW5nIixkPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBjfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LHRoZW46ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHM7cmV0dXJuIG0uRGVmZXJyZWQoZnVuY3Rpb24oYyl7bS5lYWNoKGIsZnVuY3Rpb24oYixmKXt2YXIgZz1tLmlzRnVuY3Rpb24oYVtiXSkmJmFbYl07ZVtmWzFdXShmdW5jdGlvbigpe3ZhciBhPWcmJmcuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EmJm0uaXNGdW5jdGlvbihhLnByb21pc2UpP2EucHJvbWlzZSgpLmRvbmUoYy5yZXNvbHZlKS5mYWlsKGMucmVqZWN0KS5wcm9ncmVzcyhjLm5vdGlmeSk6Y1tmWzBdKyJXaXRoIl0odGhpcz09PWQ/Yy5wcm9taXNlKCk6dGhpcyxnP1thXTphcmd1bWVudHMpfSl9KSxhPW51bGx9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/bS5leHRlbmQoYSxkKTpkfX0sZT17fTtyZXR1cm4gZC5waXBlPWQudGhlbixtLmVhY2goYixmdW5jdGlvbihhLGYpe3ZhciBnPWZbMl0saD1mWzNdO2RbZlsxXV09Zy5hZGQsaCYmZy5hZGQoZnVuY3Rpb24oKXtjPWh9LGJbMV5hXVsyXS5kaXNhYmxlLGJbMl1bMl0ubG9jayksZVtmWzBdXT1mdW5jdGlvbigpe3JldHVybiBlW2ZbMF0rIldpdGgiXSh0aGlzPT09ZT9kOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxlW2ZbMF0rIldpdGgiXT1nLmZpcmVXaXRofSksZC5wcm9taXNlKGUpLGEmJmEuY2FsbChlLGUpLGV9LHdoZW46ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPWQuY2FsbChhcmd1bWVudHMpLGU9Yy5sZW5ndGgsZj0xIT09ZXx8YSYmbS5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/ZTowLGc9MT09PWY/YTptLkRlZmVycmVkKCksaD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGUpe2JbYV09dGhpcyxjW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9kLmNhbGwoYXJndW1lbnRzKTplLGM9PT1pP2cubm90aWZ5V2l0aChiLGMpOi0tZnx8Zy5yZXNvbHZlV2l0aChiLGMpfX0saSxqLGs7aWYoZT4xKWZvcihpPW5ldyBBcnJheShlKSxqPW5ldyBBcnJheShlKSxrPW5ldyBBcnJheShlKTtlPmI7YisrKWNbYl0mJm0uaXNGdW5jdGlvbihjW2JdLnByb21pc2UpP2NbYl0ucHJvbWlzZSgpLmRvbmUoaChiLGssYykpLmZhaWwoZy5yZWplY3QpLnByb2dyZXNzKGgoYixqLGkpKTotLWY7cmV0dXJuIGZ8fGcucmVzb2x2ZVdpdGgoayxjKSxnLnByb21pc2UoKX19KTt2YXIgSDttLmZuLnJlYWR5PWZ1bmN0aW9uKGEpe3JldHVybiBtLnJlYWR5LnByb21pc2UoKS5kb25lKGEpLHRoaXN9LG0uZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLGhvbGRSZWFkeTpmdW5jdGlvbihhKXthP20ucmVhZHlXYWl0Kys6bS5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9uKGEpe2lmKGE9PT0hMD8hLS1tLnJlYWR5V2FpdDohbS5pc1JlYWR5KXtpZigheS5ib2R5KXJldHVybiBzZXRUaW1lb3V0KG0ucmVhZHkpO20uaXNSZWFkeT0hMCxhIT09ITAmJi0tbS5yZWFkeVdhaXQ+MHx8KEgucmVzb2x2ZVdpdGgoeSxbbV0pLG0uZm4udHJpZ2dlckhhbmRsZXImJihtKHkpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpLG0oeSkub2ZmKCJyZWFkeSIpKSl9fX0pO2Z1bmN0aW9uIEkoKXt5LmFkZEV2ZW50TGlzdGVuZXI/KHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsSiwhMSksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixKLCExKSk6KHkuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsSiksYS5kZXRhY2hFdmVudCgib25sb2FkIixKKSl9ZnVuY3Rpb24gSigpeyh5LmFkZEV2ZW50TGlzdGVuZXJ8fCJsb2FkIj09PWV2ZW50LnR5cGV8fCJjb21wbGV0ZSI9PT15LnJlYWR5U3RhdGUpJiYoSSgpLG0ucmVhZHkoKSl9bS5yZWFkeS5wcm9taXNlPWZ1bmN0aW9uKGIpe2lmKCFIKWlmKEg9bS5EZWZlcnJlZCgpLCJjb21wbGV0ZSI9PT15LnJlYWR5U3RhdGUpc2V0VGltZW91dChtLnJlYWR5KTtlbHNlIGlmKHkuYWRkRXZlbnRMaXN0ZW5lcil5LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEosITEpLGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsSiwhMSk7ZWxzZXt5LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEopLGEuYXR0YWNoRXZlbnQoIm9ubG9hZCIsSik7dmFyIGM9ITE7dHJ5e2M9bnVsbD09YS5mcmFtZUVsZW1lbnQmJnkuZG9jdW1lbnRFbGVtZW50fWNhdGNoKGQpe31jJiZjLmRvU2Nyb2xsJiYhZnVuY3Rpb24gZSgpe2lmKCFtLmlzUmVhZHkpe3RyeXtjLmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goYSl7cmV0dXJuIHNldFRpbWVvdXQoZSw1MCl9SSgpLG0ucmVhZHkoKX19KCl9cmV0dXJuIEgucHJvbWlzZShiKX07dmFyIEs9InVuZGVmaW5lZCIsTDtmb3IoTCBpbiBtKGspKWJyZWFrO2sub3duTGFzdD0iMCIhPT1MLGsuaW5saW5lQmxvY2tOZWVkc0xheW91dD0hMSxtKGZ1bmN0aW9uKCl7dmFyIGEsYixjLGQ7Yz15LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0sYyYmYy5zdHlsZSYmKGI9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweCIsYy5hcHBlbmRDaGlsZChkKS5hcHBlbmRDaGlsZChiKSx0eXBlb2YgYi5zdHlsZS56b29tIT09SyYmKGIuc3R5bGUuY3NzVGV4dD0iZGlzcGxheTppbmxpbmU7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzoxcHg7d2lkdGg6MXB4O3pvb206MSIsay5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PWE9Mz09PWIub2Zmc2V0V2lkdGgsYSYmKGMuc3R5bGUuem9vbT0xKSksYy5yZW1vdmVDaGlsZChkKSl9KSxmdW5jdGlvbigpe3ZhciBhPXkuY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYobnVsbD09ay5kZWxldGVFeHBhbmRvKXtrLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBhLnRlc3R9Y2F0Y2goYil7ay5kZWxldGVFeHBhbmRvPSExfX1hPW51bGx9KCksbS5hY2NlcHREYXRhPWZ1bmN0aW9uKGEpe3ZhciBiPW0ubm9EYXRhWyhhLm5vZGVOYW1lKyIgIikudG9Mb3dlckNhc2UoKV0sYz0rYS5ub2RlVHlwZXx8MTtyZXR1cm4gMSE9PWMmJjkhPT1jPyExOiFifHxiIT09ITAmJmEuZ2V0QXR0cmlidXRlKCJjbGFzc2lkIik9PT1ifTt2YXIgTT0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLE49LyhbQS1aXSkvZztmdW5jdGlvbiBPKGEsYixjKXtpZih2b2lkIDA9PT1jJiYxPT09YS5ub2RlVHlwZSl7dmFyIGQ9ImRhdGEtIitiLnJlcGxhY2UoTiwiLSQxIikudG9Mb3dlckNhc2UoKTtpZihjPWEuZ2V0QXR0cmlidXRlKGQpLCJzdHJpbmciPT10eXBlb2YgYyl7dHJ5e2M9InRydWUiPT09Yz8hMDoiZmFsc2UiPT09Yz8hMToibnVsbCI9PT1jP251bGw6K2MrIiI9PT1jPytjOk0udGVzdChjKT9tLnBhcnNlSlNPTihjKTpjfWNhdGNoKGUpe31tLmRhdGEoYSxiLGMpfWVsc2UgYz12b2lkIDB9cmV0dXJuIGN9ZnVuY3Rpb24gUChhKXt2YXIgYjtmb3IoYiBpbiBhKWlmKCgiZGF0YSIhPT1ifHwhbS5pc0VtcHR5T2JqZWN0KGFbYl0pKSYmInRvSlNPTiIhPT1iKXJldHVybiExOwoKcmV0dXJuITB9ZnVuY3Rpb24gUShhLGIsZCxlKXtpZihtLmFjY2VwdERhdGEoYSkpe3ZhciBmLGcsaD1tLmV4cGFuZG8saT1hLm5vZGVUeXBlLGo9aT9tLmNhY2hlOmEsaz1pP2FbaF06YVtoXSYmaDtpZihrJiZqW2tdJiYoZXx8altrXS5kYXRhKXx8dm9pZCAwIT09ZHx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBrfHwoaz1pP2FbaF09Yy5wb3AoKXx8bS5ndWlkKys6aCksaltrXXx8KGpba109aT97fTp7dG9KU09OOm0ubm9vcH0pLCgib2JqZWN0Ij09dHlwZW9mIGJ8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGU/altrXT1tLmV4dGVuZChqW2tdLGIpOmpba10uZGF0YT1tLmV4dGVuZChqW2tdLmRhdGEsYikpLGc9altrXSxlfHwoZy5kYXRhfHwoZy5kYXRhPXt9KSxnPWcuZGF0YSksdm9pZCAwIT09ZCYmKGdbbS5jYW1lbENhc2UoYildPWQpLCJzdHJpbmciPT10eXBlb2YgYj8oZj1nW2JdLG51bGw9PWYmJihmPWdbbS5jYW1lbENhc2UoYildKSk6Zj1nLGZ9fWZ1bmN0aW9uIFIoYSxiLGMpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGQsZSxmPWEubm9kZVR5cGUsZz1mP20uY2FjaGU6YSxoPWY/YVttLmV4cGFuZG9dOm0uZXhwYW5kbztpZihnW2hdKXtpZihiJiYoZD1jP2dbaF06Z1toXS5kYXRhKSl7bS5pc0FycmF5KGIpP2I9Yi5jb25jYXQobS5tYXAoYixtLmNhbWVsQ2FzZSkpOmIgaW4gZD9iPVtiXTooYj1tLmNhbWVsQ2FzZShiKSxiPWIgaW4gZD9bYl06Yi5zcGxpdCgiICIpKSxlPWIubGVuZ3RoO3doaWxlKGUtLSlkZWxldGUgZFtiW2VdXTtpZihjPyFQKGQpOiFtLmlzRW1wdHlPYmplY3QoZCkpcmV0dXJufShjfHwoZGVsZXRlIGdbaF0uZGF0YSxQKGdbaF0pKSkmJihmP20uY2xlYW5EYXRhKFthXSwhMCk6ay5kZWxldGVFeHBhbmRvfHxnIT1nLndpbmRvdz9kZWxldGUgZ1toXTpnW2hdPW51bGwpfX19bS5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7ImFwcGxldCAiOiEwLCJlbWJlZCAiOiEwLCJvYmplY3QgIjoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP20uY2FjaGVbYVttLmV4cGFuZG9dXTphW20uZXhwYW5kb10sISFhJiYhUChhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFEoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFIoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRKGEsYixjLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUihhLGIsITApfX0pLG0uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9bS5kYXRhKGYpLDE9PT1mLm5vZGVUeXBlJiYhbS5fZGF0YShmLCJwYXJzZWRBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPW0uY2FtZWxDYXNlKGQuc2xpY2UoNSkpLE8oZixkLGVbZF0pKSk7bS5fZGF0YShmLCJwYXJzZWRBdHRycyIsITApfXJldHVybiBlfXJldHVybiJvYmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhKX0pOmFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhLGIpfSk6Zj9PKGYsYSxtLmRhdGEoZixhKSk6dm9pZCAwfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXttLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLG0uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGE/KGI9KGJ8fCJmeCIpKyJxdWV1ZSIsZD1tLl9kYXRhKGEsYiksYyYmKCFkfHxtLmlzQXJyYXkoYyk/ZD1tLl9kYXRhKGEsYixtLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKSxkfHxbXSk6dm9pZCAwfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPW0ucXVldWUoYSxiKSxkPWMubGVuZ3RoLGU9Yy5zaGlmdCgpLGY9bS5fcXVldWVIb29rcyhhLGIpLGc9ZnVuY3Rpb24oKXttLmRlcXVldWUoYSxiKX07ImlucHJvZ3Jlc3MiPT09ZSYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKCJmeCI9PT1iJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZi5zdG9wLGUuY2FsbChhLGcsZikpLCFkJiZmJiZmLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gbS5fZGF0YShhLGMpfHxtLl9kYXRhKGEsYyx7ZW1wdHk6bS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7bS5fcmVtb3ZlRGF0YShhLGIrInF1ZXVlIiksbS5fcmVtb3ZlRGF0YShhLGMpfSl9KX19KSxtLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPSJmeCIsYy0tKSxhcmd1bWVudHMubGVuZ3RoPGM/bS5xdWV1ZSh0aGlzWzBdLGEpOnZvaWQgMD09PWI/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1tLnF1ZXVlKHRoaXMsYSxiKTttLl9xdWV1ZUhvb2tzKHRoaXMsYSksImZ4Ij09PWEmJiJpbnByb2dyZXNzIiE9PWNbMF0mJm0uZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZGVxdWV1ZSh0aGlzLGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTEsZT1tLkRlZmVycmVkKCksZj10aGlzLGc9dGhpcy5sZW5ndGgsaD1mdW5jdGlvbigpey0tZHx8ZS5yZXNvbHZlV2l0aChmLFtmXSl9OyJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCksYT1hfHwiZngiO3doaWxlKGctLSljPW0uX2RhdGEoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIFM9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsVD1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLFU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1ifHxhLCJub25lIj09PW0uY3NzKGEsImRpc3BsYXkiKXx8IW0uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfSxWPW0uYWNjZXNzPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1tLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYyltLmFjY2VzcyhhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxtLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwobShhKSxjKX0pKSxiKSlmb3IoO2k+aDtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfSxXPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pOyFmdW5jdGlvbigpe3ZhciBhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYz15LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixrLmxlYWRpbmdXaGl0ZXNwYWNlPTM9PT1iLmZpcnN0Q2hpbGQubm9kZVR5cGUsay50Ym9keT0hYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsay5odG1sU2VyaWFsaXplPSEhYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxrLmh0bWw1Q2xvbmU9Ijw6bmF2PjwvOm5hdj4iIT09eS5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxhLnR5cGU9ImNoZWNrYm94IixhLmNoZWNrZWQ9ITAsYy5hcHBlbmRDaGlsZChhKSxrLmFwcGVuZENoZWNrZWQ9YS5jaGVja2VkLGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixrLm5vQ2xvbmVDaGVja2VkPSEhYi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsYy5hcHBlbmRDaGlsZChiKSxiLmlubmVySFRNTD0iPGlucHV0IHR5cGU9J3JhZGlvJyBjaGVja2VkPSdjaGVja2VkJyBuYW1lPSd0Jy8+IixrLmNoZWNrQ2xvbmU9Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsay5ub0Nsb25lRXZlbnQ9ITAsYi5hdHRhY2hFdmVudCYmKGIuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7ay5ub0Nsb25lRXZlbnQ9ITF9KSxiLmNsb25lTm9kZSghMCkuY2xpY2soKSksbnVsbD09ay5kZWxldGVFeHBhbmRvKXtrLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBiLnRlc3R9Y2F0Y2goZCl7ay5kZWxldGVFeHBhbmRvPSExfX19KCksZnVuY3Rpb24oKXt2YXIgYixjLGQ9eS5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IoYiBpbntzdWJtaXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWM9Im9uIitiLChrW2IrIkJ1YmJsZXMiXT1jIGluIGEpfHwoZC5zZXRBdHRyaWJ1dGUoYywidCIpLGtbYisiQnViYmxlcyJdPWQuYXR0cmlidXRlc1tjXS5leHBhbmRvPT09ITEpO2Q9bnVsbH0oKTt2YXIgWD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksWT0vXmtleS8sWj0vXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnUpfGNsaWNrLywkPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxfPS9eKFteLl0qKSg/OlwuKC4rKXwpJC87ZnVuY3Rpb24gYWEoKXtyZXR1cm4hMH1mdW5jdGlvbiBiYSgpe3JldHVybiExfWZ1bmN0aW9uIGNhKCl7dHJ5e3JldHVybiB5LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1tLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixvLHAscSxyPW0uX2RhdGEoYSk7aWYocil7Yy5oYW5kbGVyJiYoaT1jLGM9aS5oYW5kbGVyLGU9aS5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPW0uZ3VpZCsrKSwoZz1yLmV2ZW50cyl8fChnPXIuZXZlbnRzPXt9KSwoaz1yLmhhbmRsZSl8fChrPXIuaGFuZGxlPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgbT09PUt8fGEmJm0uZXZlbnQudHJpZ2dlcmVkPT09YS50eXBlP3ZvaWQgMDptLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGsuZWxlbSxhcmd1bWVudHMpfSxrLmVsZW09YSksYj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGg9Yi5sZW5ndGg7d2hpbGUoaC0tKWY9Xy5leGVjKGJbaF0pfHxbXSxvPXE9ZlsxXSxwPShmWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyYmKGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxvPShlP2ouZGVsZWdhdGVUeXBlOmouYmluZFR5cGUpfHxvLGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxsPW0uZXh0ZW5kKHt0eXBlOm8sb3JpZ1R5cGU6cSxkYXRhOmQsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmUsbmVlZHNDb250ZXh0OmUmJm0uZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChlKSxuYW1lc3BhY2U6cC5qb2luKCIuIil9LGkpLChuPWdbb10pfHwobj1nW29dPVtdLG4uZGVsZWdhdGVDb3VudD0wLGouc2V0dXAmJmouc2V0dXAuY2FsbChhLGQscCxrKSE9PSExfHwoYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihvLGssITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIitvLGspKSksai5hZGQmJihqLmFkZC5jYWxsKGEsbCksbC5oYW5kbGVyLmd1aWR8fChsLmhhbmRsZXIuZ3VpZD1jLmd1aWQpKSxlP24uc3BsaWNlKG4uZGVsZWdhdGVDb3VudCsrLDAsbCk6bi5wdXNoKGwpLG0uZXZlbnQuZ2xvYmFsW29dPSEwKTthPW51bGx9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxuLG8scCxxLHI9bS5oYXNEYXRhKGEpJiZtLl9kYXRhKGEpO2lmKHImJihrPXIuZXZlbnRzKSl7Yj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGo9Yi5sZW5ndGg7d2hpbGUoai0tKWlmKGg9Xy5leGVjKGJbal0pfHxbXSxvPXE9aFsxXSxwPShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyl7bD1tLmV2ZW50LnNwZWNpYWxbb118fHt9LG89KGQ/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG8sbj1rW29dfHxbXSxoPWhbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK3Auam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksaT1mPW4ubGVuZ3RoO3doaWxlKGYtLSlnPW5bZl0sIWUmJnEhPT1nLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1nLmd1aWR8fGgmJiFoLnRlc3QoZy5uYW1lc3BhY2UpfHxkJiZkIT09Zy5zZWxlY3RvciYmKCIqKiIhPT1kfHwhZy5zZWxlY3Rvcil8fChuLnNwbGljZShmLDEpLGcuc2VsZWN0b3ImJm4uZGVsZWdhdGVDb3VudC0tLGwucmVtb3ZlJiZsLnJlbW92ZS5jYWxsKGEsZykpO2kmJiFuLmxlbmd0aCYmKGwudGVhcmRvd24mJmwudGVhcmRvd24uY2FsbChhLHAsci5oYW5kbGUpIT09ITF8fG0ucmVtb3ZlRXZlbnQoYSxvLHIuaGFuZGxlKSxkZWxldGUga1tvXSl9ZWxzZSBmb3IobyBpbiBrKW0uZXZlbnQucmVtb3ZlKGEsbytiW2pdLGMsZCwhMCk7bS5pc0VtcHR5T2JqZWN0KGspJiYoZGVsZXRlIHIuaGFuZGxlLG0uX3JlbW92ZURhdGEoYSwiZXZlbnRzIikpfX0sdHJpZ2dlcjpmdW5jdGlvbihiLGMsZCxlKXt2YXIgZixnLGgsaSxrLGwsbixvPVtkfHx5XSxwPWouY2FsbChiLCJ0eXBlIik/Yi50eXBlOmIscT1qLmNhbGwoYiwibmFtZXNwYWNlIik/Yi5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihoPWw9ZD1kfHx5LDMhPT1kLm5vZGVUeXBlJiY4IT09ZC5ub2RlVHlwZSYmISQudGVzdChwK20uZXZlbnQudHJpZ2dlcmVkKSYmKHAuaW5kZXhPZigiLiIpPj0wJiYocT1wLnNwbGl0KCIuIikscD1xLnNoaWZ0KCkscS5zb3J0KCkpLGc9cC5pbmRleE9mKCI6Iik8MCYmIm9uIitwLGI9YlttLmV4cGFuZG9dP2I6bmV3IG0uRXZlbnQocCwib2JqZWN0Ij09dHlwZW9mIGImJmIpLGIuaXNUcmlnZ2VyPWU/MjozLGIubmFtZXNwYWNlPXEuam9pbigiLiIpLGIubmFtZXNwYWNlX3JlPWIubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3Euam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxiLnJlc3VsdD12b2lkIDAsYi50YXJnZXR8fChiLnRhcmdldD1kKSxjPW51bGw9PWM/W2JdOm0ubWFrZUFycmF5KGMsW2JdKSxrPW0uZXZlbnQuc3BlY2lhbFtwXXx8e30sZXx8IWsudHJpZ2dlcnx8ay50cmlnZ2VyLmFwcGx5KGQsYykhPT0hMSkpe2lmKCFlJiYhay5ub0J1YmJsZSYmIW0uaXNXaW5kb3coZCkpe2ZvcihpPWsuZGVsZWdhdGVUeXBlfHxwLCQudGVzdChpK3ApfHwoaD1oLnBhcmVudE5vZGUpO2g7aD1oLnBhcmVudE5vZGUpby5wdXNoKGgpLGw9aDtsPT09KGQub3duZXJEb2N1bWVudHx8eSkmJm8ucHVzaChsLmRlZmF1bHRWaWV3fHxsLnBhcmVudFdpbmRvd3x8YSl9bj0wO3doaWxlKChoPW9bbisrXSkmJiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYi50eXBlPW4+MT9pOmsuYmluZFR5cGV8fHAsZj0obS5fZGF0YShoLCJldmVudHMiKXx8e30pW2IudHlwZV0mJm0uX2RhdGEoaCwiaGFuZGxlIiksZiYmZi5hcHBseShoLGMpLGY9ZyYmaFtnXSxmJiZmLmFwcGx5JiZtLmFjY2VwdERhdGEoaCkmJihiLnJlc3VsdD1mLmFwcGx5KGgsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtpZihiLnR5cGU9cCwhZSYmIWIuaXNEZWZhdWx0UHJldmVudGVkKCkmJighay5fZGVmYXVsdHx8ay5fZGVmYXVsdC5hcHBseShvLnBvcCgpLGMpPT09ITEpJiZtLmFjY2VwdERhdGEoZCkmJmcmJmRbcF0mJiFtLmlzV2luZG93KGQpKXtsPWRbZ10sbCYmKGRbZ109bnVsbCksbS5ldmVudC50cmlnZ2VyZWQ9cDt0cnl7ZFtwXSgpfWNhdGNoKHIpe31tLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsbCYmKGRbZ109bCl9cmV0dXJuIGIucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YT1tLmV2ZW50LmZpeChhKTt2YXIgYixjLGUsZixnLGg9W10saT1kLmNhbGwoYXJndW1lbnRzKSxqPShtLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYS50eXBlXXx8W10saz1tLmV2ZW50LnNwZWNpYWxbYS50eXBlXXx8e307aWYoaVswXT1hLGEuZGVsZWdhdGVUYXJnZXQ9dGhpcywhay5wcmVEaXNwYXRjaHx8ay5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsYSkhPT0hMSl7aD1tLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxhLGopLGI9MDt3aGlsZSgoZj1oW2IrK10pJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXthLmN1cnJlbnRUYXJnZXQ9Zi5lbGVtLGc9MDt3aGlsZSgoZT1mLmhhbmRsZXJzW2crK10pJiYhYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKSghYS5uYW1lc3BhY2VfcmV8fGEubmFtZXNwYWNlX3JlLnRlc3QoZS5uYW1lc3BhY2UpKSYmKGEuaGFuZGxlT2JqPWUsYS5kYXRhPWUuZGF0YSxjPSgobS5ldmVudC5zcGVjaWFsW2Uub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxlLmhhbmRsZXIpLmFwcGx5KGYuZWxlbSxpKSx2b2lkIDAhPT1jJiYoYS5yZXN1bHQ9Yyk9PT0hMSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGsucG9zdERpc3BhdGNoJiZrLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsYSksYS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsaT1hLnRhcmdldDtpZihoJiZpLm5vZGVUeXBlJiYoIWEuYnV0dG9ufHwiY2xpY2siIT09YS50eXBlKSlmb3IoO2khPXRoaXM7aT1pLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWkubm9kZVR5cGUmJihpLmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1hLnR5cGUpKXtmb3IoZT1bXSxmPTA7aD5mO2YrKylkPWJbZl0sYz1kLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1lW2NdJiYoZVtjXT1kLm5lZWRzQ29udGV4dD9tKGMsdGhpcykuaW5kZXgoaSk+PTA6bS5maW5kKGMsdGhpcyxudWxsLFtpXSkubGVuZ3RoKSxlW2NdJiZlLnB1c2goZCk7ZS5sZW5ndGgmJmcucHVzaCh7ZWxlbTppLGhhbmRsZXJzOmV9KX1yZXR1cm4gaDxiLmxlbmd0aCYmZy5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6Yi5zbGljZShoKX0pLGd9LGZpeDpmdW5jdGlvbihhKXtpZihhW20uZXhwYW5kb10pcmV0dXJuIGE7dmFyIGIsYyxkLGU9YS50eXBlLGY9YSxnPXRoaXMuZml4SG9va3NbZV07Z3x8KHRoaXMuZml4SG9va3NbZV09Zz1aLnRlc3QoZSk/dGhpcy5tb3VzZUhvb2tzOlkudGVzdChlKT90aGlzLmtleUhvb2tzOnt9KSxkPWcucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQoZy5wcm9wcyk6dGhpcy5wcm9wcyxhPW5ldyBtLkV2ZW50KGYpLGI9ZC5sZW5ndGg7d2hpbGUoYi0tKWM9ZFtiXSxhW2NdPWZbY107cmV0dXJuIGEudGFyZ2V0fHwoYS50YXJnZXQ9Zi5zcmNFbGVtZW50fHx5KSwzPT09YS50YXJnZXQubm9kZVR5cGUmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSxhLm1ldGFLZXk9ISFhLm1ldGFLZXksZy5maWx0ZXI/Zy5maWx0ZXIoYSxmKTphfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09YS53aGljaCYmKGEud2hpY2g9bnVsbCE9Yi5jaGFyQ29kZT9iLmNoYXJDb2RlOmIua2V5Q29kZSksYX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9Yi5idXR0b24sZz1iLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1hLnBhZ2VYJiZudWxsIT1iLmNsaWVudFgmJihkPWEudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fHksZT1kLmRvY3VtZW50RWxlbWVudCxjPWQuYm9keSxhLnBhZ2VYPWIuY2xpZW50WCsoZSYmZS5zY3JvbGxMZWZ0fHxjJiZjLnNjcm9sbExlZnR8fDApLShlJiZlLmNsaWVudExlZnR8fGMmJmMuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1iLmNsaWVudFkrKGUmJmUuc2Nyb2xsVG9wfHxjJiZjLnNjcm9sbFRvcHx8MCktKGUmJmUuY2xpZW50VG9wfHxjJiZjLmNsaWVudFRvcHx8MCkpLCFhLnJlbGF0ZWRUYXJnZXQmJmcmJihhLnJlbGF0ZWRUYXJnZXQ9Zz09PWEudGFyZ2V0P2IudG9FbGVtZW50OmcpLGEud2hpY2h8fHZvaWQgMD09PWZ8fChhLndoaWNoPTEmZj8xOjImZj8zOjQmZj8yOjApLGF9fSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09Y2EoKSYmdGhpcy5mb2N1cyl0cnl7cmV0dXJuIHRoaXMuZm9jdXMoKSwhMX1jYXRjaChhKXt9fSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT1jYSgpJiZ0aGlzLmJsdXI/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImlucHV0IikmJiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2s/KHRoaXMuY2xpY2soKSwhMSk6dm9pZCAwfSxfZGVmYXVsdDpmdW5jdGlvbihhKXtyZXR1cm4gbS5ub2RlTmFtZShhLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dm9pZCAwIT09YS5yZXN1bHQmJmEub3JpZ2luYWxFdmVudCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5leHRlbmQobmV3IG0uRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtkP20uZXZlbnQudHJpZ2dlcihlLG51bGwsYik6bS5ldmVudC5kaXNwYXRjaC5jYWxsKGIsZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sbS5yZW1vdmVFdmVudD15LnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRhY2hFdmVudCYmKHR5cGVvZiBhW2RdPT09SyYmKGFbZF09bnVsbCksYS5kZXRhY2hFdmVudChkLGMpKX0sbS5FdmVudD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgbS5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiZhLnJldHVyblZhbHVlPT09ITE/YWE6YmEpOnRoaXMudHlwZT1hLGImJm0uZXh0ZW5kKHRoaXMsYiksdGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fG0ubm93KCksdm9pZCh0aGlzW20uZXhwYW5kb109ITApKTpuZXcgbS5FdmVudChhLGIpfSxtLkV2ZW50LnByb3RvdHlwZT17aXNEZWZhdWx0UHJldmVudGVkOmJhLGlzUHJvcGFnYXRpb25TdG9wcGVkOmJhLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOmJhLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWFhLGEmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YWEsYSYmKGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YWEsYSYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24mJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LG0uZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXttLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybighZXx8ZSE9PWQmJiFtLmNvbnRhaW5zKGQsZSkpJiYoYS50eXBlPWYub3JpZ1R5cGUsYz1mLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iKSxjfX19KSxrLnN1Ym1pdEJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImZvcm0iKT8hMTp2b2lkIG0uZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1tLm5vZGVOYW1lKGIsImlucHV0Iil8fG0ubm9kZU5hbWUoYiwiYnV0dG9uIik/Yi5mb3JtOnZvaWQgMDtjJiYhbS5fZGF0YShjLCJzdWJtaXRCdWJibGVzIikmJihtLmV2ZW50LmFkZChjLCJzdWJtaXQuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZT0hMH0pLG0uX2RhdGEoYywic3VibWl0QnViYmxlcyIsITApKX0pfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZSYmKGRlbGV0ZSBhLl9zdWJtaXRfYnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWEuaXNUcmlnZ2VyJiZtLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50Tm9kZSxhLCEwKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIG0ubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOnZvaWQgbS5ldmVudC5yZW1vdmUodGhpcywiLl9zdWJtaXQiKX19KSxrLmNoYW5nZUJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBYLnRlc3QodGhpcy5ub2RlTmFtZSk/KCgiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlKSYmKG0uZXZlbnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpeyJjaGVja2VkIj09PWEub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUmJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksbS5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5fanVzdF9jaGFuZ2VkJiYhYS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEpLG0uZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcyxhLCEwKX0pKSwhMSk6dm9pZCBtLmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtYLnRlc3QoYi5ub2RlTmFtZSkmJiFtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiKSYmKG0uZXZlbnQuYWRkKGIsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXshdGhpcy5wYXJlbnROb2RlfHxhLmlzU2ltdWxhdGVkfHxhLmlzVHJpZ2dlcnx8bS5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLnBhcmVudE5vZGUsYSwhMCl9KSxtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiLCEwKSl9KX0saGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O3JldHVybiB0aGlzIT09Ynx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fCJyYWRpbyIhPT1iLnR5cGUmJiJjaGVja2JveCIhPT1iLnR5cGU/YS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBtLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpLCFYLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksay5mb2N1c2luQnViYmxlc3x8bS5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe20uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxtLmV2ZW50LmZpeChhKSwhMCl9O20uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1tLl9kYXRhKGQsYik7ZXx8ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCksbS5fZGF0YShkLGIsKGV8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPW0uX2RhdGEoZCxiKS0xO2U/bS5fZGF0YShkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLG0uX3JlbW92ZURhdGEoZCxiKSl9fX0pLG0uZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGc7aWYoIm9iamVjdCI9PXR5cGVvZiBhKXsic3RyaW5nIiE9dHlwZW9mIGImJihjPWN8fGIsYj12b2lkIDApO2ZvcihmIGluIGEpdGhpcy5vbihmLGIsYyxhW2ZdLGUpO3JldHVybiB0aGlzfWlmKG51bGw9PWMmJm51bGw9PWQ/KGQ9YixjPWI9dm9pZCAwKTpudWxsPT1kJiYoInN0cmluZyI9PXR5cGVvZiBiPyhkPWMsYz12b2lkIDApOihkPWMsYz1iLGI9dm9pZCAwKSksZD09PSExKWQ9YmE7ZWxzZSBpZighZClyZXR1cm4gdGhpcztyZXR1cm4gMT09PWUmJihnPWQsZD1mdW5jdGlvbihhKXtyZXR1cm4gbSgpLm9mZihhKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZC5ndWlkPWcuZ3VpZHx8KGcuZ3VpZD1tLmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQuYWRkKHRoaXMsYSxkLGMsYil9KX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixtKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuKGI9PT0hMXx8ImZ1bmN0aW9uIj09dHlwZW9mIGIpJiYoYz1iLGI9dm9pZCAwKSxjPT09ITEmJihjPWJhKSx0aGlzLmVhY2goZnVuY3Rpb24oKXttLmV2ZW50LnJlbW92ZSh0aGlzLGEsYyxiKX0pfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzWzBdO3JldHVybiBjP20uZXZlbnQudHJpZ2dlcihhLGIsYywhMCk6dm9pZCAwfX0pO2Z1bmN0aW9uIGRhKGEpe3ZhciBiPWVhLnNwbGl0KCJ8IiksYz1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihjLmNyZWF0ZUVsZW1lbnQpd2hpbGUoYi5sZW5ndGgpYy5jcmVhdGVFbGVtZW50KGIucG9wKCkpO3JldHVybiBjfXZhciBlYT0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsZmE9LyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZyxnYT1uZXcgUmVnRXhwKCI8KD86IitlYSsiKVtcXHMvPl0iLCJpIiksaGE9L15ccysvLGlhPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2ksamE9LzwoW1x3Ol0rKS8sa2E9Lzx0Ym9keS9pLGxhPS88fCYjP1x3KzsvLG1hPS88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksbmE9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksb2E9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLHBhPS9edHJ1ZVwvKC4qKS8scWE9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLHJhPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9vYmplY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDprLmh0bWxTZXJpYWxpemU/WzAsIiIsIiJdOlsxLCJYPGRpdj4iLCI8L2Rpdj4iXX0sc2E9ZGEoeSksdGE9c2EuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSk7cmEub3B0Z3JvdXA9cmEub3B0aW9uLHJhLnRib2R5PXJhLnRmb290PXJhLmNvbGdyb3VwPXJhLmNhcHRpb249cmEudGhlYWQscmEudGg9cmEudGQ7ZnVuY3Rpb24gdWEoYSxiKXt2YXIgYyxkLGU9MCxmPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09Sz9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGJ8fCIqIik6dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbCE9PUs/YS5xdWVyeVNlbGVjdG9yQWxsKGJ8fCIqIik6dm9pZCAwO2lmKCFmKWZvcihmPVtdLGM9YS5jaGlsZE5vZGVzfHxhO251bGwhPShkPWNbZV0pO2UrKykhYnx8bS5ub2RlTmFtZShkLGIpP2YucHVzaChkKTptLm1lcmdlKGYsdWEoZCxiKSk7cmV0dXJuIHZvaWQgMD09PWJ8fGImJm0ubm9kZU5hbWUoYSxiKT9tLm1lcmdlKFthXSxmKTpmfWZ1bmN0aW9uIHZhKGEpe1cudGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIHdhKGEsYil7cmV0dXJuIG0ubm9kZU5hbWUoYSwidGFibGUiKSYmbS5ub2RlTmFtZSgxMSE9PWIubm9kZVR5cGU/YjpiLmZpcnN0Q2hpbGQsInRyIik/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiB4YShhKXtyZXR1cm4gYS50eXBlPShudWxsIT09bS5maW5kLmF0dHIoYSwidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24geWEoYSl7dmFyIGI9cGEuZXhlYyhhLnR5cGUpO3JldHVybiBiP2EudHlwZT1iWzFdOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksYX1mdW5jdGlvbiB6YShhLGIpe2Zvcih2YXIgYyxkPTA7bnVsbCE9KGM9YVtkXSk7ZCsrKW0uX2RhdGEoYywiZ2xvYmFsRXZhbCIsIWJ8fG0uX2RhdGEoYltkXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBBYShhLGIpe2lmKDE9PT1iLm5vZGVUeXBlJiZtLmhhc0RhdGEoYSkpe3ZhciBjLGQsZSxmPW0uX2RhdGEoYSksZz1tLl9kYXRhKGIsZiksaD1mLmV2ZW50cztpZihoKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGMgaW4gaClmb3IoZD0wLGU9aFtjXS5sZW5ndGg7ZT5kO2QrKyltLmV2ZW50LmFkZChiLGMsaFtjXVtkXSl9Zy5kYXRhJiYoZy5kYXRhPW0uZXh0ZW5kKHt9LGcuZGF0YSkpfX1mdW5jdGlvbiBCYShhLGIpe3ZhciBjLGQsZTtpZigxPT09Yi5ub2RlVHlwZSl7aWYoYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIWsubm9DbG9uZUV2ZW50JiZiW20uZXhwYW5kb10pe2U9bS5fZGF0YShiKTtmb3IoZCBpbiBlLmV2ZW50cyltLnJlbW92ZUV2ZW50KGIsZCxlLmhhbmRsZSk7Yi5yZW1vdmVBdHRyaWJ1dGUobS5leHBhbmRvKX0ic2NyaXB0Ij09PWMmJmIudGV4dCE9PWEudGV4dD8oeGEoYikudGV4dD1hLnRleHQseWEoYikpOiJvYmplY3QiPT09Yz8oYi5wYXJlbnROb2RlJiYoYi5vdXRlckhUTUw9YS5vdXRlckhUTUwpLGsuaHRtbDVDbG9uZSYmYS5pbm5lckhUTUwmJiFtLnRyaW0oYi5pbm5lckhUTUwpJiYoYi5pbm5lckhUTUw9YS5pbm5lckhUTUwpKToiaW5wdXQiPT09YyYmVy50ZXN0KGEudHlwZSk/KGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSkpOiJvcHRpb24iPT09Yz9iLmRlZmF1bHRTZWxlY3RlZD1iLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkOigiaW5wdXQiPT09Y3x8InRleHRhcmVhIj09PWMpJiYoYi5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWUpfX1tLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaT1tLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZihrLmh0bWw1Q2xvbmV8fG0uaXNYTUxEb2MoYSl8fCFnYS50ZXN0KCI8IithLm5vZGVOYW1lKyI+Iik/Zj1hLmNsb25lTm9kZSghMCk6KHRhLmlubmVySFRNTD1hLm91dGVySFRNTCx0YS5yZW1vdmVDaGlsZChmPXRhLmZpcnN0Q2hpbGQpKSwhKGsubm9DbG9uZUV2ZW50JiZrLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxtLmlzWE1MRG9jKGEpKSlmb3IoZD11YShmKSxoPXVhKGEpLGc9MDtudWxsIT0oZT1oW2ddKTsrK2cpZFtnXSYmQmEoZSxkW2ddKTtpZihiKWlmKGMpZm9yKGg9aHx8dWEoYSksZD1kfHx1YShmKSxnPTA7bnVsbCE9KGU9aFtnXSk7ZysrKUFhKGUsZFtnXSk7ZWxzZSBBYShhLGYpO3JldHVybiBkPXVhKGYsInNjcmlwdCIpLGQubGVuZ3RoPjAmJnphKGQsIWkmJnVhKGEsInNjcmlwdCIpKSxkPWg9ZT1udWxsLGZ9LGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlLGYsZyxoLGksaixsLG49YS5sZW5ndGgsbz1kYShiKSxwPVtdLHE9MDtuPnE7cSsrKWlmKGY9YVtxXSxmfHwwPT09ZilpZigib2JqZWN0Ij09PW0udHlwZShmKSltLm1lcmdlKHAsZi5ub2RlVHlwZT9bZl06Zik7ZWxzZSBpZihsYS50ZXN0KGYpKXtoPWh8fG8uYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksaT0oamEuZXhlYyhmKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxsPXJhW2ldfHxyYS5fZGVmYXVsdCxoLmlubmVySFRNTD1sWzFdK2YucmVwbGFjZShpYSwiPCQxPjwvJDI+IikrbFsyXSxlPWxbMF07d2hpbGUoZS0tKWg9aC5sYXN0Q2hpbGQ7aWYoIWsubGVhZGluZ1doaXRlc3BhY2UmJmhhLnRlc3QoZikmJnAucHVzaChiLmNyZWF0ZVRleHROb2RlKGhhLmV4ZWMoZilbMF0pKSwhay50Ym9keSl7Zj0idGFibGUiIT09aXx8a2EudGVzdChmKT8iPHRhYmxlPiIhPT1sWzFdfHxrYS50ZXN0KGYpPzA6aDpoLmZpcnN0Q2hpbGQsZT1mJiZmLmNoaWxkTm9kZXMubGVuZ3RoO3doaWxlKGUtLSltLm5vZGVOYW1lKGo9Zi5jaGlsZE5vZGVzW2VdLCJ0Ym9keSIpJiYhai5jaGlsZE5vZGVzLmxlbmd0aCYmZi5yZW1vdmVDaGlsZChqKX1tLm1lcmdlKHAsaC5jaGlsZE5vZGVzKSxoLnRleHRDb250ZW50PSIiO3doaWxlKGguZmlyc3RDaGlsZCloLnJlbW92ZUNoaWxkKGguZmlyc3RDaGlsZCk7aD1vLmxhc3RDaGlsZH1lbHNlIHAucHVzaChiLmNyZWF0ZVRleHROb2RlKGYpKTtoJiZvLnJlbW92ZUNoaWxkKGgpLGsuYXBwZW5kQ2hlY2tlZHx8bS5ncmVwKHVhKHAsImlucHV0IiksdmEpLHE9MDt3aGlsZShmPXBbcSsrXSlpZigoIWR8fC0xPT09bS5pbkFycmF5KGYsZCkpJiYoZz1tLmNvbnRhaW5zKGYub3duZXJEb2N1bWVudCxmKSxoPXVhKG8uYXBwZW5kQ2hpbGQoZiksInNjcmlwdCIpLGcmJnphKGgpLGMpKXtlPTA7d2hpbGUoZj1oW2UrK10pb2EudGVzdChmLnR5cGV8fCIiKSYmYy5wdXNoKGYpfXJldHVybiBoPW51bGwsb30sY2xlYW5EYXRhOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkLGUsZixnLGg9MCxpPW0uZXhwYW5kbyxqPW0uY2FjaGUsbD1rLmRlbGV0ZUV4cGFuZG8sbj1tLmV2ZW50LnNwZWNpYWw7bnVsbCE9KGQ9YVtoXSk7aCsrKWlmKChifHxtLmFjY2VwdERhdGEoZCkpJiYoZj1kW2ldLGc9ZiYmaltmXSkpe2lmKGcuZXZlbnRzKWZvcihlIGluIGcuZXZlbnRzKW5bZV0/bS5ldmVudC5yZW1vdmUoZCxlKTptLnJlbW92ZUV2ZW50KGQsZSxnLmhhbmRsZSk7altmXSYmKGRlbGV0ZSBqW2ZdLGw/ZGVsZXRlIGRbaV06dHlwZW9mIGQucmVtb3ZlQXR0cmlidXRlIT09Sz9kLnJlbW92ZUF0dHJpYnV0ZShpKTpkW2ldPW51bGwsYy5wdXNoKGYpKX19fSksbS5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9tLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHx5KS5jcmVhdGVUZXh0Tm9kZShhKSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj13YSh0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPXdhKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9YT9tLmZpbHRlcihhLHRoaXMpOnRoaXMsZT0wO251bGwhPShjPWRbZV0pO2UrKylifHwxIT09Yy5ub2RlVHlwZXx8bS5jbGVhbkRhdGEodWEoYykpLGMucGFyZW50Tm9kZSYmKGImJm0uY29udGFpbnMoYy5vd25lckRvY3VtZW50LGMpJiZ6YSh1YShjLCJzY3JpcHQiKSksYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKyl7MT09PWEubm9kZVR5cGUmJm0uY2xlYW5EYXRhKHVhKGEsITEpKTt3aGlsZShhLmZpcnN0Q2hpbGQpYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Eub3B0aW9ucyYmbS5ub2RlTmFtZShhLCJzZWxlY3QiKSYmKGEub3B0aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bnVsbD09YT8hMTphLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbS5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWEpcmV0dXJuIDE9PT1iLm5vZGVUeXBlP2IuaW5uZXJIVE1MLnJlcGxhY2UoZmEsIiIpOnZvaWQgMDtpZighKCJzdHJpbmciIT10eXBlb2YgYXx8bWEudGVzdChhKXx8IWsuaHRtbFNlcmlhbGl6ZSYmZ2EudGVzdChhKXx8IWsubGVhZGluZ1doaXRlc3BhY2UmJmhhLnRlc3QoYSl8fHJhWyhqYS5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkpe2E9YS5yZXBsYWNlKGlhLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtkPmM7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihtLmNsZWFuRGF0YSh1YShiLCExKSksYi5pbm5lckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYil7YT10aGlzLnBhcmVudE5vZGUsbS5jbGVhbkRhdGEodWEodGhpcykpLGEmJmEucmVwbGFjZUNoaWxkKGIsdGhpcyl9KSxhJiYoYS5sZW5ndGh8fGEubm9kZVR5cGUpP3RoaXM6dGhpcy5yZW1vdmUoKX0sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxiKXthPWUuYXBwbHkoW10sYSk7dmFyIGMsZCxmLGcsaCxpLGo9MCxsPXRoaXMubGVuZ3RoLG49dGhpcyxvPWwtMSxwPWFbMF0scT1tLmlzRnVuY3Rpb24ocCk7aWYocXx8bD4xJiYic3RyaW5nIj09dHlwZW9mIHAmJiFrLmNoZWNrQ2xvbmUmJm5hLnRlc3QocCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZD1uLmVxKGMpO3EmJihhWzBdPXAuY2FsbCh0aGlzLGMsZC5odG1sKCkpKSxkLmRvbU1hbmlwKGEsYil9KTtpZihsJiYoaT1tLmJ1aWxkRnJhZ21lbnQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQsITEsdGhpcyksYz1pLmZpcnN0Q2hpbGQsMT09PWkuY2hpbGROb2Rlcy5sZW5ndGgmJihpPWMpLGMpKXtmb3IoZz1tLm1hcCh1YShpLCJzY3JpcHQiKSx4YSksZj1nLmxlbmd0aDtsPmo7aisrKWQ9aSxqIT09byYmKGQ9bS5jbG9uZShkLCEwLCEwKSxmJiZtLm1lcmdlKGcsdWEoZCwic2NyaXB0IikpKSxiLmNhbGwodGhpc1tqXSxkLGopO2lmKGYpZm9yKGg9Z1tnLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LG0ubWFwKGcseWEpLGo9MDtmPmo7aisrKWQ9Z1tqXSxvYS50ZXN0KGQudHlwZXx8IiIpJiYhbS5fZGF0YShkLCJnbG9iYWxFdmFsIikmJm0uY29udGFpbnMoaCxkKSYmKGQuc3JjP20uX2V2YWxVcmwmJm0uX2V2YWxVcmwoZC5zcmMpOm0uZ2xvYmFsRXZhbCgoZC50ZXh0fHxkLnRleHRDb250ZW50fHxkLmlubmVySFRNTHx8IiIpLnJlcGxhY2UocWEsIiIpKSk7aT1jPW51bGx9cmV0dXJuIHRoaXN9fSksbS5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXttLmZuW2FdPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYyxkPTAsZT1bXSxnPW0oYSksaD1nLmxlbmd0aC0xO2g+PWQ7ZCsrKWM9ZD09PWg/dGhpczp0aGlzLmNsb25lKCEwKSxtKGdbZF0pW2JdKGMpLGYuYXBwbHkoZSxjLmdldCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIENhLERhPXt9O2Z1bmN0aW9uIEVhKGIsYyl7dmFyIGQsZT1tKGMuY3JlYXRlRWxlbWVudChiKSkuYXBwZW5kVG8oYy5ib2R5KSxmPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUmJihkPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUoZVswXSkpP2QuZGlzcGxheTptLmNzcyhlWzBdLCJkaXNwbGF5Iik7cmV0dXJuIGUuZGV0YWNoKCksZn1mdW5jdGlvbiBGYShhKXt2YXIgYj15LGM9RGFbYV07cmV0dXJuIGN8fChjPUVhKGEsYiksIm5vbmUiIT09YyYmY3x8KENhPShDYXx8bSgiPGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgd2lkdGg9JzAnIGhlaWdodD0nMCcvPiIpKS5hcHBlbmRUbyhiLmRvY3VtZW50RWxlbWVudCksYj0oQ2FbMF0uY29udGVudFdpbmRvd3x8Q2FbMF0uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxiLndyaXRlKCksYi5jbG9zZSgpLGM9RWEoYSxiKSxDYS5kZXRhY2goKSksRGFbYV09YyksY30hZnVuY3Rpb24oKXt2YXIgYTtrLnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXtpZihudWxsIT1hKXJldHVybiBhO2E9ITE7dmFyIGIsYyxkO3JldHVybiBjPXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlPyhiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlwZW9mIGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGIuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc3R5bGUud2lkdGg9IjVweCIsYT0zIT09Yi5vZmZzZXRXaWR0aCksYy5yZW1vdmVDaGlsZChkKSxhKTp2b2lkIDB9fSgpO3ZhciBHYT0vXm1hcmdpbi8sSGE9bmV3IFJlZ0V4cCgiXigiK1MrIikoPyFweClbYS16JV0rJCIsImkiKSxJYSxKYSxLYT0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC87YS5nZXRDb21wdXRlZFN0eWxlPyhJYT1mdW5jdGlvbihiKXtyZXR1cm4gYi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3Lm9wZW5lcj9iLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmEuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpfSxKYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLnN0eWxlO3JldHVybiBjPWN8fElhKGEpLGc9Yz9jLmdldFByb3BlcnR5VmFsdWUoYil8fGNbYl06dm9pZCAwLGMmJigiIiE9PWd8fG0uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfHwoZz1tLnN0eWxlKGEsYikpLEhhLnRlc3QoZykmJkdhLnRlc3QoYikmJihkPWgud2lkdGgsZT1oLm1pbldpZHRoLGY9aC5tYXhXaWR0aCxoLm1pbldpZHRoPWgubWF4V2lkdGg9aC53aWR0aD1nLGc9Yy53aWR0aCxoLndpZHRoPWQsaC5taW5XaWR0aD1lLGgubWF4V2lkdGg9ZikpLHZvaWQgMD09PWc/ZzpnKyIifSk6eS5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxlJiYoSWE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY3VycmVudFN0eWxlfSxKYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLnN0eWxlO3JldHVybiBjPWN8fElhKGEpLGc9Yz9jW2JdOnZvaWQgMCxudWxsPT1nJiZoJiZoW2JdJiYoZz1oW2JdKSxIYS50ZXN0KGcpJiYhS2EudGVzdChiKSYmKGQ9aC5sZWZ0LGU9YS5ydW50aW1lU3R5bGUsZj1lJiZlLmxlZnQsZiYmKGUubGVmdD1hLmN1cnJlbnRTdHlsZS5sZWZ0KSxoLmxlZnQ9ImZvbnRTaXplIj09PWI/IjFlbSI6ZyxnPWgucGl4ZWxMZWZ0KyJweCIsaC5sZWZ0PWQsZiYmKGUubGVmdD1mKSksdm9pZCAwPT09Zz9nOmcrIiJ8fCJhdXRvIn0pO2Z1bmN0aW9uIExhKGEsYil7cmV0dXJue2dldDpmdW5jdGlvbigpe3ZhciBjPWEoKTtpZihudWxsIT1jKXJldHVybiBjP3ZvaWQgZGVsZXRlIHRoaXMuZ2V0Oih0aGlzLmdldD1iKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX0hZnVuY3Rpb24oKXt2YXIgYixjLGQsZSxmLGcsaDtpZihiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYi5pbm5lckhUTUw9IiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiIsZD1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF0sYz1kJiZkLnN0eWxlKXtjLmNzc1RleHQ9ImZsb2F0OmxlZnQ7b3BhY2l0eTouNSIsay5vcGFjaXR5PSIwLjUiPT09Yy5vcGFjaXR5LGsuY3NzRmxvYXQ9ISFjLmNzc0Zsb2F0LGIuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixiLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIsay5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWIuc3R5bGUuYmFja2dyb3VuZENsaXAsay5ib3hTaXppbmc9IiI9PT1jLmJveFNpemluZ3x8IiI9PT1jLk1vekJveFNpemluZ3x8IiI9PT1jLldlYmtpdEJveFNpemluZyxtLmV4dGVuZChrLHtyZWxpYWJsZUhpZGRlbk9mZnNldHM6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09ZyYmaSgpLGd9LGJveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWYmJmkoKSxmfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWUmJmkoKSxlfSxyZWxpYWJsZU1hcmdpblJpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWgmJmkoKSxofX0pO2Z1bmN0aW9uIGkoKXt2YXIgYixjLGQsaTtjPXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlJiYoYj15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2JvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4IixjLmFwcGVuZENoaWxkKGQpLmFwcGVuZENoaWxkKGIpLGIuc3R5bGUuY3NzVGV4dD0iLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDoxJTt0b3A6MSU7Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo0cHg7cG9zaXRpb246YWJzb2x1dGUiLGU9Zj0hMSxoPSEwLGEuZ2V0Q29tcHV0ZWRTdHlsZSYmKGU9IjElIiE9PShhLmdldENvbXB1dGVkU3R5bGUoYixudWxsKXx8e30pLnRvcCxmPSI0cHgiPT09KGEuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpfHx7d2lkdGg6IjRweCJ9KS53aWR0aCxpPWIuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSksaS5zdHlsZS5jc3NUZXh0PWIuc3R5bGUuY3NzVGV4dD0iLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowIixpLnN0eWxlLm1hcmdpblJpZ2h0PWkuc3R5bGUud2lkdGg9IjAiLGIuc3R5bGUud2lkdGg9IjFweCIsaD0hcGFyc2VGbG9hdCgoYS5nZXRDb21wdXRlZFN0eWxlKGksbnVsbCl8fHt9KS5tYXJnaW5SaWdodCksYi5yZW1vdmVDaGlsZChpKSksYi5pbm5lckhUTUw9Ijx0YWJsZT48dHI+PHRkPjwvdGQ+PHRkPnQ8L3RkPjwvdHI+PC90YWJsZT4iLGk9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKSxpWzBdLnN0eWxlLmNzc1RleHQ9Im1hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MDtkaXNwbGF5Om5vbmUiLGc9MD09PWlbMF0ub2Zmc2V0SGVpZ2h0LGcmJihpWzBdLnN0eWxlLmRpc3BsYXk9IiIsaVsxXS5zdHlsZS5kaXNwbGF5PSJub25lIixnPTA9PT1pWzBdLm9mZnNldEhlaWdodCksYy5yZW1vdmVDaGlsZChkKSl9fX0oKSxtLnN3YXA9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnPXt9O2ZvcihmIGluIGIpZ1tmXT1hLnN0eWxlW2ZdLGEuc3R5bGVbZl09YltmXTtlPWMuYXBwbHkoYSxkfHxbXSk7Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWdbZl07cmV0dXJuIGV9O3ZhciBNYT0vYWxwaGFcKFteKV0qXCkvaSxOYT0vb3BhY2l0eVxzKj1ccyooW14pXSopLyxPYT0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sUGE9bmV3IFJlZ0V4cCgiXigiK1MrIikoLiopJCIsImkiKSxRYT1uZXcgUmVnRXhwKCJeKFsrLV0pPSgiK1MrIikiLCJpIiksUmE9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LFNhPXtsZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0MDAifSxUYT1bIldlYmtpdCIsIk8iLCJNb3oiLCJtcyJdO2Z1bmN0aW9uIFVhKGEsYil7aWYoYiBpbiBhKXJldHVybiBiO3ZhciBjPWIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKSxkPWIsZT1UYS5sZW5ndGg7d2hpbGUoZS0tKWlmKGI9VGFbZV0rYyxiIGluIGEpcmV0dXJuIGI7cmV0dXJuIGR9ZnVuY3Rpb24gVmEoYSxiKXtmb3IodmFyIGMsZCxlLGY9W10sZz0wLGg9YS5sZW5ndGg7aD5nO2crKylkPWFbZ10sZC5zdHlsZSYmKGZbZ109bS5fZGF0YShkLCJvbGRkaXNwbGF5IiksYz1kLnN0eWxlLmRpc3BsYXksYj8oZltnXXx8Im5vbmUiIT09Y3x8KGQuc3R5bGUuZGlzcGxheT0iIiksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJlUoZCkmJihmW2ddPW0uX2RhdGEoZCwib2xkZGlzcGxheSIsRmEoZC5ub2RlTmFtZSkpKSk6KGU9VShkKSwoYyYmIm5vbmUiIT09Y3x8IWUpJiZtLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGU/YzptLmNzcyhkLCJkaXNwbGF5IikpKSk7Zm9yKGc9MDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoYiYmIm5vbmUiIT09ZC5zdHlsZS5kaXNwbGF5JiYiIiE9PWQuc3R5bGUuZGlzcGxheXx8KGQuc3R5bGUuZGlzcGxheT1iP2ZbZ118fCIiOiJub25lIikpO3JldHVybiBhfWZ1bmN0aW9uIFdhKGEsYixjKXt2YXIgZD1QYS5leGVjKGIpO3JldHVybiBkP01hdGgubWF4KDAsZFsxXS0oY3x8MCkpKyhkWzJdfHwicHgiKTpifWZ1bmN0aW9uIFhhKGEsYixjLGQsZSl7Zm9yKHZhciBmPWM9PT0oZD8iYm9yZGVyIjoiY29udGVudCIpPzQ6IndpZHRoIj09PWI/MTowLGc9MDs0PmY7Zis9MikibWFyZ2luIj09PWMmJihnKz1tLmNzcyhhLGMrVFtmXSwhMCxlKSksZD8oImNvbnRlbnQiPT09YyYmKGctPW0uY3NzKGEsInBhZGRpbmciK1RbZl0sITAsZSkpLCJtYXJnaW4iIT09YyYmKGctPW0uY3NzKGEsImJvcmRlciIrVFtmXSsiV2lkdGgiLCEwLGUpKSk6KGcrPW0uY3NzKGEsInBhZGRpbmciK1RbZl0sITAsZSksInBhZGRpbmciIT09YyYmKGcrPW0uY3NzKGEsImJvcmRlciIrVFtmXSsiV2lkdGgiLCEwLGUpKSk7cmV0dXJuIGd9ZnVuY3Rpb24gWWEoYSxiLGMpe3ZhciBkPSEwLGU9IndpZHRoIj09PWI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxmPUlhKGEpLGc9ay5ib3hTaXppbmcmJiJib3JkZXItYm94Ij09PW0uY3NzKGEsImJveFNpemluZyIsITEsZik7aWYoMD49ZXx8bnVsbD09ZSl7aWYoZT1KYShhLGIsZiksKDA+ZXx8bnVsbD09ZSkmJihlPWEuc3R5bGVbYl0pLEhhLnRlc3QoZSkpcmV0dXJuIGU7ZD1nJiYoay5ib3hTaXppbmdSZWxpYWJsZSgpfHxlPT09YS5zdHlsZVtiXSksZT1wYXJzZUZsb2F0KGUpfHwwfXJldHVybiBlK1hhKGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGQsZikrInB4In1tLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGIpe2lmKGIpe3ZhciBjPUphKGEsIm9wYWNpdHkiKTtyZXR1cm4iIj09PWM/IjEiOmN9fX19LGNzc051bWJlcjp7Y29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6ay5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSYmMyE9PWEubm9kZVR5cGUmJjghPT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZSxmLGcsaD1tLmNhbWVsQ2FzZShiKSxpPWEuc3R5bGU7aWYoYj1tLmNzc1Byb3BzW2hdfHwobS5jc3NQcm9wc1toXT1VYShpLGgpKSxnPW0uY3NzSG9va3NbYl18fG0uY3NzSG9va3NbaF0sdm9pZCAwPT09YylyZXR1cm4gZyYmImdldCJpbiBnJiZ2b2lkIDAhPT0oZT1nLmdldChhLCExLGQpKT9lOmlbYl07aWYoZj10eXBlb2YgYywic3RyaW5nIj09PWYmJihlPVFhLmV4ZWMoYykpJiYoYz0oZVsxXSsxKSplWzJdK3BhcnNlRmxvYXQobS5jc3MoYSxiKSksZj0ibnVtYmVyIiksbnVsbCE9YyYmYz09PWMmJigibnVtYmVyIiE9PWZ8fG0uY3NzTnVtYmVyW2hdfHwoYys9InB4Iiksay5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLCEoZyYmInNldCJpbiBnJiZ2b2lkIDA9PT0oYz1nLnNldChhLGMsZCkpKSkpdHJ5e2lbYl09Y31jYXRjaChqKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZyxoPW0uY2FtZWxDYXNlKGIpO3JldHVybiBiPW0uY3NzUHJvcHNbaF18fChtLmNzc1Byb3BzW2hdPVVhKGEuc3R5bGUsaCkpLGc9bS5jc3NIb29rc1tiXXx8bS5jc3NIb29rc1toXSxnJiYiZ2V0ImluIGcmJihmPWcuZ2V0KGEsITAsYykpLHZvaWQgMD09PWYmJihmPUphKGEsYixkKSksIm5vcm1hbCI9PT1mJiZiIGluIFNhJiYoZj1TYVtiXSksIiI9PT1jfHxjPyhlPXBhcnNlRmxvYXQoZiksYz09PSEwfHxtLmlzTnVtZXJpYyhlKT9lfHwwOmYpOmZ9fSksbS5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe20uY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGM/T2EudGVzdChtLmNzcyhhLCJkaXNwbGF5IikpJiYwPT09YS5vZmZzZXRXaWR0aD9tLnN3YXAoYSxSYSxmdW5jdGlvbigpe3JldHVybiBZYShhLGIsZCl9KTpZYShhLGIsZCk6dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPWQmJklhKGEpO3JldHVybiBXYShhLGMsZD9YYShhLGIsZCxrLmJveFNpemluZyYmImJvcmRlci1ib3giPT09bS5jc3MoYSwiYm94U2l6aW5nIiwhMSxlKSxlKTowKX19fSksay5vcGFjaXR5fHwobS5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gTmEudGVzdCgoYiYmYS5jdXJyZW50U3R5bGU/YS5jdXJyZW50U3R5bGUuZmlsdGVyOmEuc3R5bGUuZmlsdGVyKXx8IiIpPy4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkrIiI6Yj8iMSI6IiJ9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWEuc3R5bGUsZD1hLmN1cnJlbnRTdHlsZSxlPW0uaXNOdW1lcmljKGIpPyJhbHBoYShvcGFjaXR5PSIrMTAwKmIrIikiOiIiLGY9ZCYmZC5maWx0ZXJ8fGMuZmlsdGVyfHwiIjtjLnpvb209MSwoYj49MXx8IiI9PT1iKSYmIiI9PT1tLnRyaW0oZi5yZXBsYWNlKE1hLCIiKSkmJmMucmVtb3ZlQXR0cmlidXRlJiYoYy5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpLCIiPT09Ynx8ZCYmIWQuZmlsdGVyKXx8KGMuZmlsdGVyPU1hLnRlc3QoZik/Zi5yZXBsYWNlKE1hLGUpOmYrIiAiK2UpfX0pLG0uY3NzSG9va3MubWFyZ2luUmlnaHQ9TGEoay5yZWxpYWJsZU1hcmdpblJpZ2h0LGZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/bS5zd2FwKGEse2Rpc3BsYXk6ImlubGluZS1ibG9jayJ9LEphLFthLCJtYXJnaW5SaWdodCJdKTp2b2lkIDB9KSxtLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihhLGIpe20uY3NzSG9va3NbYStiXT17ZXhwYW5kOmZ1bmN0aW9uKGMpe2Zvcih2YXIgZD0wLGU9e30sZj0ic3RyaW5nIj09dHlwZW9mIGM/Yy5zcGxpdCgiICIpOltjXTs0PmQ7ZCsrKWVbYStUW2RdK2JdPWZbZF18fGZbZC0yXXx8ZlswXTtyZXR1cm4gZX19LEdhLnRlc3QoYSl8fChtLmNzc0hvb2tzW2ErYl0uc2V0PVdhKX0pLG0uZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9e30sZz0wO2lmKG0uaXNBcnJheShiKSl7Zm9yKGQ9SWEoYSksZT1iLmxlbmd0aDtlPmc7ZysrKWZbYltnXV09bS5jc3MoYSxiW2ddLCExLGQpO3JldHVybiBmfXJldHVybiB2b2lkIDAhPT1jP20uc3R5bGUoYSxiLGMpOm0uY3NzKGEsYil9LGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIFZhKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIFZhKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYT9hP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe1UodGhpcyk/bSh0aGlzKS5zaG93KCk6bSh0aGlzKS5oaWRlKCl9KX19KTtmdW5jdGlvbiBaYShhLGIsYyxkLGUpewpyZXR1cm4gbmV3IFphLnByb3RvdHlwZS5pbml0KGEsYixjLGQsZSl9bS5Ud2Vlbj1aYSxaYS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlphLGluaXQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMuZWxlbT1hLHRoaXMucHJvcD1jLHRoaXMuZWFzaW5nPWV8fCJzd2luZyIsdGhpcy5vcHRpb25zPWIsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPWQsdGhpcy51bml0PWZ8fChtLmNzc051bWJlcltjXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGE9WmEucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGEmJmEuZ2V0P2EuZ2V0KHRoaXMpOlphLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihhKXt2YXIgYixjPVphLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9Yj1tLmVhc2luZ1t0aGlzLmVhc2luZ10oYSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qYSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz1iPWEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmIrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksYyYmYy5zZXQ/Yy5zZXQodGhpcyk6WmEucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sWmEucHJvdG90eXBlLmluaXQucHJvdG90eXBlPVphLnByb3RvdHlwZSxaYS5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIG51bGw9PWEuZWxlbVthLnByb3BdfHxhLmVsZW0uc3R5bGUmJm51bGwhPWEuZWxlbS5zdHlsZVthLnByb3BdPyhiPW0uY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKTphLmVsZW1bYS5wcm9wXX0sc2V0OmZ1bmN0aW9uKGEpe20uZnguc3RlcFthLnByb3BdP20uZnguc3RlcFthLnByb3BdKGEpOmEuZWxlbS5zdHlsZSYmKG51bGwhPWEuZWxlbS5zdHlsZVttLmNzc1Byb3BzW2EucHJvcF1dfHxtLmNzc0hvb2tzW2EucHJvcF0pP20uc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpOmEuZWxlbVthLnByb3BdPWEubm93fX19LFphLnByb3BIb29rcy5zY3JvbGxUb3A9WmEucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sbS5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfX0sbS5meD1aYS5wcm90b3R5cGUuaW5pdCxtLmZ4LnN0ZXA9e307dmFyICRhLF9hLGFiPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxiYj1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrUysiKShbYS16JV0qKSQiLCJpIiksY2I9L3F1ZXVlSG9va3MkLyxkYj1baWJdLGViPXsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpLGQ9Yy5jdXIoKSxlPWJiLmV4ZWMoYiksZj1lJiZlWzNdfHwobS5jc3NOdW1iZXJbYV0/IiI6InB4IiksZz0obS5jc3NOdW1iZXJbYV18fCJweCIhPT1mJiYrZCkmJmJiLmV4ZWMobS5jc3MoYy5lbGVtLGEpKSxoPTEsaT0yMDtpZihnJiZnWzNdIT09Zil7Zj1mfHxnWzNdLGU9ZXx8W10sZz0rZHx8MTtkbyBoPWh8fCIuNSIsZy89aCxtLnN0eWxlKGMuZWxlbSxhLGcrZik7d2hpbGUoaCE9PShoPWMuY3VyKCkvZCkmJjEhPT1oJiYtLWkpfXJldHVybiBlJiYoZz1jLnN0YXJ0PStnfHwrZHx8MCxjLnVuaXQ9ZixjLmVuZD1lWzFdP2crKGVbMV0rMSkqZVsyXTorZVsyXSksY31dfTtmdW5jdGlvbiBmYigpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JGE9dm9pZCAwfSksJGE9bS5ub3coKX1mdW5jdGlvbiBnYihhLGIpe3ZhciBjLGQ9e2hlaWdodDphfSxlPTA7Zm9yKGI9Yj8xOjA7ND5lO2UrPTItYiljPVRbZV0sZFsibWFyZ2luIitjXT1kWyJwYWRkaW5nIitjXT1hO3JldHVybiBiJiYoZC5vcGFjaXR5PWQud2lkdGg9YSksZH1mdW5jdGlvbiBoYihhLGIsYyl7Zm9yKHZhciBkLGU9KGViW2JdfHxbXSkuY29uY2F0KGViWyIqIl0pLGY9MCxnPWUubGVuZ3RoO2c+ZjtmKyspaWYoZD1lW2ZdLmNhbGwoYyxiLGEpKXJldHVybiBkfWZ1bmN0aW9uIGliKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixsLG49dGhpcyxvPXt9LHA9YS5zdHlsZSxxPWEubm9kZVR5cGUmJlUoYSkscj1tLl9kYXRhKGEsImZ4c2hvdyIpO2MucXVldWV8fChoPW0uX3F1ZXVlSG9va3MoYSwiZngiKSxudWxsPT1oLnVucXVldWVkJiYoaC51bnF1ZXVlZD0wLGk9aC5lbXB0eS5maXJlLGguZW1wdHkuZmlyZT1mdW5jdGlvbigpe2gudW5xdWV1ZWR8fGkoKX0pLGgudW5xdWV1ZWQrKyxuLmFsd2F5cyhmdW5jdGlvbigpe24uYWx3YXlzKGZ1bmN0aW9uKCl7aC51bnF1ZXVlZC0tLG0ucXVldWUoYSwiZngiKS5sZW5ndGh8fGguZW1wdHkuZmlyZSgpfSl9KSksMT09PWEubm9kZVR5cGUmJigiaGVpZ2h0ImluIGJ8fCJ3aWR0aCJpbiBiKSYmKGMub3ZlcmZsb3c9W3Aub3ZlcmZsb3cscC5vdmVyZmxvd1gscC5vdmVyZmxvd1ldLGo9bS5jc3MoYSwiZGlzcGxheSIpLGw9Im5vbmUiPT09aj9tLl9kYXRhKGEsIm9sZGRpc3BsYXkiKXx8RmEoYS5ub2RlTmFtZSk6aiwiaW5saW5lIj09PWwmJiJub25lIj09PW0uY3NzKGEsImZsb2F0IikmJihrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQmJiJpbmxpbmUiIT09RmEoYS5ub2RlTmFtZSk/cC56b29tPTE6cC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksYy5vdmVyZmxvdyYmKHAub3ZlcmZsb3c9ImhpZGRlbiIsay5zaHJpbmtXcmFwQmxvY2tzKCl8fG4uYWx3YXlzKGZ1bmN0aW9uKCl7cC5vdmVyZmxvdz1jLm92ZXJmbG93WzBdLHAub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV0scC5vdmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSxhYi5leGVjKGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxlPT09KHE/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWV8fCFyfHx2b2lkIDA9PT1yW2RdKWNvbnRpbnVlO3E9ITB9b1tkXT1yJiZyW2RdfHxtLnN0eWxlKGEsZCl9ZWxzZSBqPXZvaWQgMDtpZihtLmlzRW1wdHlPYmplY3QobykpImlubGluZSI9PT0oIm5vbmUiPT09aj9GYShhLm5vZGVOYW1lKTpqKSYmKHAuZGlzcGxheT1qKTtlbHNle3I/ImhpZGRlbiJpbiByJiYocT1yLmhpZGRlbik6cj1tLl9kYXRhKGEsImZ4c2hvdyIse30pLGYmJihyLmhpZGRlbj0hcSkscT9tKGEpLnNob3coKTpuLmRvbmUoZnVuY3Rpb24oKXttKGEpLmhpZGUoKX0pLG4uZG9uZShmdW5jdGlvbigpe3ZhciBiO20uX3JlbW92ZURhdGEoYSwiZnhzaG93Iik7Zm9yKGIgaW4gbyltLnN0eWxlKGEsYixvW2JdKX0pO2ZvcihkIGluIG8pZz1oYihxP3JbZF06MCxkLG4pLGQgaW4gcnx8KHJbZF09Zy5zdGFydCxxJiYoZy5lbmQ9Zy5zdGFydCxnLnN0YXJ0PSJ3aWR0aCI9PT1kfHwiaGVpZ2h0Ij09PWQ/MTowKSl9fWZ1bmN0aW9uIGpiKGEsYil7dmFyIGMsZCxlLGYsZztmb3IoYyBpbiBhKWlmKGQ9bS5jYW1lbENhc2UoYyksZT1iW2RdLGY9YVtjXSxtLmlzQXJyYXkoZikmJihlPWZbMV0sZj1hW2NdPWZbMF0pLGMhPT1kJiYoYVtkXT1mLGRlbGV0ZSBhW2NdKSxnPW0uY3NzSG9va3NbZF0sZyYmImV4cGFuZCJpbiBnKXtmPWcuZXhwYW5kKGYpLGRlbGV0ZSBhW2RdO2ZvcihjIGluIGYpYyBpbiBhfHwoYVtjXT1mW2NdLGJbY109ZSl9ZWxzZSBiW2RdPWV9ZnVuY3Rpb24ga2IoYSxiLGMpe3ZhciBkLGUsZj0wLGc9ZGIubGVuZ3RoLGg9bS5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBpLmVsZW19KSxpPWZ1bmN0aW9uKCl7aWYoZSlyZXR1cm4hMTtmb3IodmFyIGI9JGF8fGZiKCksYz1NYXRoLm1heCgwLGouc3RhcnRUaW1lK2ouZHVyYXRpb24tYiksZD1jL2ouZHVyYXRpb258fDAsZj0xLWQsZz0wLGk9ai50d2VlbnMubGVuZ3RoO2k+ZztnKyspai50d2VlbnNbZ10ucnVuKGYpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbaixmLGNdKSwxPmYmJmk/YzooaC5yZXNvbHZlV2l0aChhLFtqXSksITEpfSxqPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOm0uZXh0ZW5kKHt9LGIpLG9wdHM6bS5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTokYXx8ZmIoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihiLGMpe3ZhciBkPW0uVHdlZW4oYSxqLm9wdHMsYixjLGoub3B0cy5zcGVjaWFsRWFzaW5nW2JdfHxqLm9wdHMuZWFzaW5nKTtyZXR1cm4gai50d2VlbnMucHVzaChkKSxkfSxzdG9wOmZ1bmN0aW9uKGIpe3ZhciBjPTAsZD1iP2oudHdlZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJuIHRoaXM7Zm9yKGU9ITA7ZD5jO2MrKylqLnR3ZWVuc1tjXS5ydW4oMSk7cmV0dXJuIGI/aC5yZXNvbHZlV2l0aChhLFtqLGJdKTpoLnJlamVjdFdpdGgoYSxbaixiXSksdGhpc319KSxrPWoucHJvcHM7Zm9yKGpiKGssai5vcHRzLnNwZWNpYWxFYXNpbmcpO2c+ZjtmKyspaWYoZD1kYltmXS5jYWxsKGosYSxrLGoub3B0cykpcmV0dXJuIGQ7cmV0dXJuIG0ubWFwKGssaGIsaiksbS5pc0Z1bmN0aW9uKGoub3B0cy5zdGFydCkmJmoub3B0cy5zdGFydC5jYWxsKGEsaiksbS5meC50aW1lcihtLmV4dGVuZChpLHtlbGVtOmEsYW5pbTpqLHF1ZXVlOmoub3B0cy5xdWV1ZX0pKSxqLnByb2dyZXNzKGoub3B0cy5wcm9ncmVzcykuZG9uZShqLm9wdHMuZG9uZSxqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRzLmZhaWwpLmFsd2F5cyhqLm9wdHMuYWx3YXlzKX1tLkFuaW1hdGlvbj1tLmV4dGVuZChrYix7dHdlZW5lcjpmdW5jdGlvbihhLGIpe20uaXNGdW5jdGlvbihhKT8oYj1hLGE9WyIqIl0pOmE9YS5zcGxpdCgiICIpO2Zvcih2YXIgYyxkPTAsZT1hLmxlbmd0aDtlPmQ7ZCsrKWM9YVtkXSxlYltjXT1lYltjXXx8W10sZWJbY10udW5zaGlmdChiKX0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsYil7Yj9kYi51bnNoaWZ0KGEpOmRiLnB1c2goYSl9fSksbS5zcGVlZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmIm9iamVjdCI9PXR5cGVvZiBhP20uZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8bS5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFtLmlzRnVuY3Rpb24oYikmJmJ9O3JldHVybiBkLmR1cmF0aW9uPW0uZngub2ZmPzA6Im51bWJlciI9PXR5cGVvZiBkLmR1cmF0aW9uP2QuZHVyYXRpb246ZC5kdXJhdGlvbiBpbiBtLmZ4LnNwZWVkcz9tLmZ4LnNwZWVkc1tkLmR1cmF0aW9uXTptLmZ4LnNwZWVkcy5fZGVmYXVsdCwobnVsbD09ZC5xdWV1ZXx8ZC5xdWV1ZT09PSEwKSYmKGQucXVldWU9ImZ4IiksZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bS5pc0Z1bmN0aW9uKGQub2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlJiZtLmRlcXVldWUodGhpcyxkLnF1ZXVlKX0sZH0sbS5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0ZXIoVSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5pc0VtcHR5T2JqZWN0KGEpLGY9bS5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWtiKHRoaXMsbS5leHRlbmQoe30sYSksZik7KGV8fG0uX2RhdGEodGhpcywiZmluaXNoIikpJiZiLnN0b3AoITApfTtyZXR1cm4gZy5maW5pc2g9ZyxlfHxmLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZi5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zdG9wO2RlbGV0ZSBhLnN0b3AsYihjKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYz1iLGI9YSxhPXZvaWQgMCksYiYmYSE9PSExJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPSEwLGU9bnVsbCE9YSYmYSsicXVldWVIb29rcyIsZj1tLnRpbWVycyxnPW0uX2RhdGEodGhpcyk7aWYoZSlnW2VdJiZnW2VdLnN0b3AmJmQoZ1tlXSk7ZWxzZSBmb3IoZSBpbiBnKWdbZV0mJmdbZV0uc3RvcCYmY2IudGVzdChlKSYmZChnW2VdKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZbZV0uZWxlbSE9PXRoaXN8fG51bGwhPWEmJmZbZV0ucXVldWUhPT1hfHwoZltlXS5hbmltLnN0b3AoYyksYj0hMSxmLnNwbGljZShlLDEpKTsoYnx8IWMpJiZtLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1tLl9kYXRhKHRoaXMpLGQ9Y1thKyJxdWV1ZSJdLGU9Y1thKyJxdWV1ZUhvb2tzIl0sZj1tLnRpbWVycyxnPWQ/ZC5sZW5ndGg6MDtmb3IoYy5maW5pc2g9ITAsbS5xdWV1ZSh0aGlzLGEsW10pLGUmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCksYj1mLmxlbmd0aDtiLS07KWZbYl0uZWxlbT09PXRoaXMmJmZbYl0ucXVldWU9PT1hJiYoZltiXS5hbmltLnN0b3AoITApLGYuc3BsaWNlKGIsMSkpO2ZvcihiPTA7Zz5iO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYmZFtiXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxtLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9bS5mbltiXTttLmZuW2JdPWZ1bmN0aW9uKGEsZCxlKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoZ2IoYiwhMCksYSxkLGUpfX0pLG0uZWFjaCh7c2xpZGVEb3duOmdiKCJzaG93Iiksc2xpZGVVcDpnYigiaGlkZSIpLHNsaWRlVG9nZ2xlOmdiKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxtLnRpbWVycz1bXSxtLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxiPW0udGltZXJzLGM9MDtmb3IoJGE9bS5ub3coKTtjPGIubGVuZ3RoO2MrKylhPWJbY10sYSgpfHxiW2NdIT09YXx8Yi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxtLmZ4LnN0b3AoKSwkYT12b2lkIDB9LG0uZngudGltZXI9ZnVuY3Rpb24oYSl7bS50aW1lcnMucHVzaChhKSxhKCk/bS5meC5zdGFydCgpOm0udGltZXJzLnBvcCgpfSxtLmZ4LmludGVydmFsPTEzLG0uZnguc3RhcnQ9ZnVuY3Rpb24oKXtfYXx8KF9hPXNldEludGVydmFsKG0uZngudGljayxtLmZ4LmludGVydmFsKSl9LG0uZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoX2EpLF9hPW51bGx9LG0uZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LG0uZm4uZGVsYXk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1tLmZ4P20uZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiLHRoaXMucXVldWUoYixmdW5jdGlvbihiLGMpe3ZhciBkPXNldFRpbWVvdXQoYixhKTtjLnN0b3A9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZCl9fSl9LGZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZTtiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYi5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixkPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxjPXkuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksZT1jLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxkLnN0eWxlLmNzc1RleHQ9InRvcDoxcHgiLGsuZ2V0U2V0QXR0cmlidXRlPSJ0IiE9PWIuY2xhc3NOYW1lLGsuc3R5bGU9L3RvcC8udGVzdChkLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksay5ocmVmTm9ybWFsaXplZD0iL2EiPT09ZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSxrLmNoZWNrT249ISFhLnZhbHVlLGsub3B0U2VsZWN0ZWQ9ZS5zZWxlY3RlZCxrLmVuY3R5cGU9ISF5LmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLGMuZGlzYWJsZWQ9ITAsay5vcHREaXNhYmxlZD0hZS5kaXNhYmxlZCxhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSxrLmlucHV0PSIiPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIiksYS52YWx1ZT0idCIsYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGsucmFkaW9WYWx1ZT0idCI9PT1hLnZhbHVlfSgpO3ZhciBsYj0vXHIvZzttLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9bS5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZTsxPT09dGhpcy5ub2RlVHlwZSYmKGU9ZD9hLmNhbGwodGhpcyxjLG0odGhpcykudmFsKCkpOmEsbnVsbD09ZT9lPSIiOiJudW1iZXIiPT10eXBlb2YgZT9lKz0iIjptLmlzQXJyYXkoZSkmJihlPW0ubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPW0udmFsSG9va3NbdGhpcy50eXBlXXx8bS52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1lKSl9KTtpZihlKXJldHVybiBiPW0udmFsSG9va3NbZS50eXBlXXx8bS52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwidmFsdWUiKSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UobGIsIiIpOm51bGw9PWM/IiI6Yyl9fX0pLG0uZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9bS5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOm0udHJpbShtLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZD1hLm9wdGlvbnMsZT1hLnNlbGVjdGVkSW5kZXgsZj0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxnPWY/bnVsbDpbXSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sISghYy5zZWxlY3RlZCYmaSE9PWV8fChrLm9wdERpc2FibGVkP2MuZGlzYWJsZWQ6bnVsbCE9PWMuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8Yy5wYXJlbnROb2RlLmRpc2FibGVkJiZtLm5vZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9bShjKS52YWwoKSxmKXJldHVybiBiO2cucHVzaChiKX1yZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0aW9ucyxmPW0ubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWlmKGQ9ZVtnXSxtLmluQXJyYXkobS52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPj0wKXRyeXtkLnNlbGVjdGVkPWM9ITB9Y2F0Y2goaCl7ZC5zY3JvbGxIZWlnaHR9ZWxzZSBkLnNlbGVjdGVkPSExO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxlfX19fSksbS5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7bS52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uaXNBcnJheShiKT9hLmNoZWNrZWQ9bS5pbkFycmF5KG0oYSkudmFsKCksYik+PTA6dm9pZCAwfX0say5jaGVja09ufHwobS52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBtYixuYixvYj1tLmV4cHIuYXR0ckhhbmRsZSxwYj0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLHFiPWsuZ2V0U2V0QXR0cmlidXRlLHJiPWsuaW5wdXQ7bS5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0uYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxtLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoYSYmMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gdHlwZW9mIGEuZ2V0QXR0cmlidXRlPT09Sz9tLnByb3AoYSxiLGMpOigxPT09ZiYmbS5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9bS5hdHRySG9va3NbYl18fChtLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP25iOm1iKSksdm9pZCAwPT09Yz9kJiYiZ2V0ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPW0uZmluZC5hdHRyKGEsYiksbnVsbD09ZT92b2lkIDA6ZSk6bnVsbCE9PWM/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oZT1kLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6dm9pZCBtLnJlbW92ZUF0dHIoYSxiKSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9MCxmPWImJmIubWF0Y2goRSk7aWYoZiYmMT09PWEubm9kZVR5cGUpd2hpbGUoYz1mW2UrK10pZD1tLnByb3BGaXhbY118fGMsbS5leHByLm1hdGNoLmJvb2wudGVzdChjKT9yYiYmcWJ8fCFwYi50ZXN0KGMpP2FbZF09ITE6YVttLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2MpXT1hW2RdPSExOm0uYXR0cihhLGMsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHFiP2M6ZCl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIWsucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJm0ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSksbmI9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9tLnJlbW92ZUF0dHIoYSxjKTpyYiYmcWJ8fCFwYi50ZXN0KGMpP2Euc2V0QXR0cmlidXRlKCFxYiYmbS5wcm9wRml4W2NdfHxjLGMpOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitjKV09YVtjXT0hMCxjfX0sbS5lYWNoKG0uZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9b2JbYl18fG0uZmluZC5hdHRyO29iW2JdPXJiJiZxYnx8IXBiLnRlc3QoYik/ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY7cmV0dXJuIGR8fChmPW9iW2JdLG9iW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG93ZXJDYXNlKCk6bnVsbCxvYltiXT1mKSxlfTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitiKV0/Yi50b0xvd2VyQ2FzZSgpOm51bGx9fSkscmImJnFifHwobS5hdHRySG9va3MudmFsdWU9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaW5wdXQiKT92b2lkKGEuZGVmYXVsdFZhbHVlPWIpOm1iJiZtYi5zZXQoYSxiLGMpfX0pLHFifHwobWI9e3NldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkfHxhLnNldEF0dHJpYnV0ZU5vZGUoZD1hLm93bmVyRG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKGMpKSxkLnZhbHVlPWIrPSIiLCJ2YWx1ZSI9PT1jfHxiPT09YS5nZXRBdHRyaWJ1dGUoYyk/Yjp2b2lkIDB9fSxvYi5pZD1vYi5uYW1lPW9iLmNvb3Jkcz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJiIiIT09ZC52YWx1ZT9kLnZhbHVlOm51bGx9LG0udmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoYik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP2MudmFsdWU6dm9pZCAwfSxzZXQ6bWIuc2V0fSxtLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e3NldDpmdW5jdGlvbihhLGIsYyl7bWIuc2V0KGEsIiI9PT1iPyExOmIsYyl9fSxtLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7bS5hdHRySG9va3NbYl09e3NldDpmdW5jdGlvbihhLGMpe3JldHVybiIiPT09Yz8oYS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpLGMpOnZvaWQgMH19fSkpLGsuc3R5bGV8fChtLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHR8fHZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD1iKyIifX0pO3ZhciBzYj0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSx0Yj0vXig/OmF8YXJlYSkkL2k7bS5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0ucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1tLnByb3BGaXhbYV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09dm9pZCAwLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGIpe319KX19KSxtLmV4dGVuZCh7cHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9LHByb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPWEubm9kZVR5cGU7aWYoYSYmMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4gZj0xIT09Z3x8IW0uaXNYTUxEb2MoYSksZiYmKGI9bS5wcm9wRml4W2JdfHxiLGU9bS5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW0uZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI/cGFyc2VJbnQoYiwxMCk6c2IudGVzdChhLm5vZGVOYW1lKXx8dGIudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX19KSxrLmhyZWZOb3JtYWxpemVkfHxtLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxiKXttLnByb3BIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShiLDQpfX19KSxrLm9wdFNlbGVjdGVkfHwobS5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH19KSxtLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe20ucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxrLmVuY3R5cGV8fChtLnByb3BGaXguZW5jdHlwZT0iZW5jb2RpbmciKTt2YXIgdWI9L1tcdFxyXG5cZl0vZzttLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9InN0cmluZyI9PXR5cGVvZiBhJiZhO2lmKG0uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20odGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoailmb3IoYj0oYXx8IiIpLm1hdGNoKEUpfHxbXTtpPmg7aCsrKWlmKGM9dGhpc1toXSxkPTE9PT1jLm5vZGVUeXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWIsIiAiKToiICIpKXtmPTA7d2hpbGUoZT1iW2YrK10pZC5pbmRleE9mKCIgIitlKyIgIik8MCYmKGQrPWUrIiAiKTtnPW0udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgYSYmYTtpZihtLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXttKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGopZm9yKGI9KGF8fCIiKS5tYXRjaChFKXx8W107aT5oO2grKylpZihjPXRoaXNbaF0sZD0xPT09Yy5ub2RlVHlwZSYmKGMuY2xhc3NOYW1lPygiICIrYy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHViLCIgIik6IiIpKXtmPTA7d2hpbGUoZT1iW2YrK10pd2hpbGUoZC5pbmRleE9mKCIgIitlKyIgIik+PTApZD1kLnJlcGxhY2UoIiAiK2UrIiAiLCIgIik7Zz1hP20udHJpbShkKToiIixjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6dGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihjKXttKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9OmZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1jKXt2YXIgYixkPTAsZT1tKHRoaXMpLGY9YS5tYXRjaChFKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZShjPT09S3x8ImJvb2xlYW4iPT09YykmJih0aGlzLmNsYXNzTmFtZSYmbS5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjptLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7ZD5jO2MrKylpZigxPT09dGhpc1tjXS5ub2RlVHlwZSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWIsIiAiKS5pbmRleE9mKGIpPj0wKXJldHVybiEwO3JldHVybiExfX0pLG0uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe20uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLG0uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9fSk7dmFyIHZiPW0ubm93KCksd2I9L1w/Lyx4Yj0vKCwpfChcW3x7KXwofXxdKXwiKD86W14iXFxcclxuXXxcXFsiXFxcL2JmbnJ0XXxcXHVbXGRhLWZBLUZdezR9KSoiXHMqOj98dHJ1ZXxmYWxzZXxudWxsfC0/KD8hMFxkKVxkKyg/OlwuXGQrfCkoPzpbZUVdWystXT9cZCt8KS9nO20ucGFyc2VKU09OPWZ1bmN0aW9uKGIpe2lmKGEuSlNPTiYmYS5KU09OLnBhcnNlKXJldHVybiBhLkpTT04ucGFyc2UoYisiIik7dmFyIGMsZD1udWxsLGU9bS50cmltKGIrIiIpO3JldHVybiBlJiYhbS50cmltKGUucmVwbGFjZSh4YixmdW5jdGlvbihhLGIsZSxmKXtyZXR1cm4gYyYmYiYmKGQ9MCksMD09PWQ/YTooYz1lfHxiLGQrPSFmLSFlLCIiKX0pKT9GdW5jdGlvbigicmV0dXJuICIrZSkoKTptLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LG0ucGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFyIGMsZDtpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBudWxsO3RyeXthLkRPTVBhcnNlcj8oZD1uZXcgRE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKSk6KGM9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGIpKX1jYXRjaChlKXtjPXZvaWQgMH1yZXR1cm4gYyYmYy5kb2N1bWVudEVsZW1lbnQmJiFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8bS5lcnJvcigiSW52YWxpZCBYTUw6ICIrYiksY307dmFyIHliLHpiLEFiPS8jLiokLyxCYj0vKFs/Jl0pXz1bXiZdKi8sQ2I9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9nbSxEYj0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxFYj0vXig/OkdFVHxIRUFEKSQvLEZiPS9eXC9cLy8sR2I9L14oW1x3ListXSs6KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sSGI9e30sSWI9e30sSmI9IiovIi5jb25jYXQoIioiKTt0cnl7emI9bG9jYXRpb24uaHJlZn1jYXRjaChLYil7emI9eS5jcmVhdGVFbGVtZW50KCJhIiksemIuaHJlZj0iIix6Yj16Yi5ocmVmfXliPUdiLmV4ZWMoemIudG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIExiKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbXTtpZihtLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZC5jaGFyQXQoMCk/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gTWIoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09SWI7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxtLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBOYihhLGIpe3ZhciBjLGQsZT1tLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2b2lkIDAhPT1iW2RdJiYoKGVbZF0/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZtLmV4dGVuZCghMCxhLGMpLGF9ZnVuY3Rpb24gT2IoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWUmJihlPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihlKWZvcihnIGluIGgpaWYoaFtnXSYmaFtnXS50ZXN0KGUpKXtpLnVuc2hpZnQoZyk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGcgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tnKyIgIitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gUGIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1tLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6emIsdHlwZToiR0VUIixpc0xvY2FsOkRiLnRlc3QoeWJbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6SmIsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjptLnBhcnNlSlNPTiwidGV4dCB4bWwiOm0ucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihhLGIpe3JldHVybiBiP05iKE5iKGEsbS5hamF4U2V0dGluZ3MpLGIpOk5iKG0uYWpheFNldHRpbmdzLGEpfSxhamF4UHJlZmlsdGVyOkxiKEhiKSxhamF4VHJhbnNwb3J0OkxiKEliKSxhamF4OmZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxiPWJ8fHt9O3ZhciBjLGQsZSxmLGcsaCxpLGosaz1tLmFqYXhTZXR1cCh7fSxiKSxsPWsuY29udGV4dHx8ayxuPWsuY29udGV4dCYmKGwubm9kZVR5cGV8fGwuanF1ZXJ5KT9tKGwpOm0uZXZlbnQsbz1tLkRlZmVycmVkKCkscD1tLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxxPWsuc3RhdHVzQ29kZXx8e30scj17fSxzPXt9LHQ9MCx1PSJjYW5jZWxlZCIsdj17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKDI9PT10KXtpZighail7aj17fTt3aGlsZShiPUNiLmV4ZWMoZikpaltiWzFdLnRvTG93ZXJDYXNlKCldPWJbMl19Yj1qW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI/bnVsbDpifSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXQ/ZjpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO3JldHVybiB0fHwoYT1zW2NdPXNbY118fGEsclthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiB0fHwoay5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpaWYoMj50KWZvcihiIGluIGEpcVtiXT1bcVtiXSxhW2JdXTtlbHNlIHYuYWx3YXlzKGFbdi5zdGF0dXNdKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dTtyZXR1cm4gaSYmaS5hYm9ydChiKSx4KDAsYiksdGhpc319O2lmKG8ucHJvbWlzZSh2KS5jb21wbGV0ZT1wLmFkZCx2LnN1Y2Nlc3M9di5kb25lLHYuZXJyb3I9di5mYWlsLGsudXJsPSgoYXx8ay51cmx8fHpiKSsiIikucmVwbGFjZShBYiwiIikucmVwbGFjZShGYix5YlsxXSsiLy8iKSxrLnR5cGU9Yi5tZXRob2R8fGIudHlwZXx8ay5tZXRob2R8fGsudHlwZSxrLmRhdGFUeXBlcz1tLnRyaW0oay5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbIiJdLG51bGw9PWsuY3Jvc3NEb21haW4mJihjPUdiLmV4ZWMoay51cmwudG9Mb3dlckNhc2UoKSksay5jcm9zc0RvbWFpbj0hKCFjfHxjWzFdPT09eWJbMV0mJmNbMl09PT15YlsyXSYmKGNbM118fCgiaHR0cDoiPT09Y1sxXT8iODAiOiI0NDMiKSk9PT0oeWJbM118fCgiaHR0cDoiPT09eWJbMV0/IjgwIjoiNDQzIikpKSksay5kYXRhJiZrLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIGsuZGF0YSYmKGsuZGF0YT1tLnBhcmFtKGsuZGF0YSxrLnRyYWRpdGlvbmFsKSksTWIoSGIsayxiLHYpLDI9PT10KXJldHVybiB2O2g9bS5ldmVudCYmay5nbG9iYWwsaCYmMD09PW0uYWN0aXZlKysmJm0uZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksay50eXBlPWsudHlwZS50b1VwcGVyQ2FzZSgpLGsuaGFzQ29udGVudD0hRWIudGVzdChrLnR5cGUpLGU9ay51cmwsay5oYXNDb250ZW50fHwoay5kYXRhJiYoZT1rLnVybCs9KHdiLnRlc3QoZSk/IiYiOiI/Iikray5kYXRhLGRlbGV0ZSBrLmRhdGEpLGsuY2FjaGU9PT0hMSYmKGsudXJsPUJiLnRlc3QoZSk/ZS5yZXBsYWNlKEJiLCIkMV89Iit2YisrKTplKyh3Yi50ZXN0KGUpPyImIjoiPyIpKyJfPSIrdmIrKykpLGsuaWZNb2RpZmllZCYmKG0ubGFzdE1vZGlmaWVkW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixtLmxhc3RNb2RpZmllZFtlXSksbS5ldGFnW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLG0uZXRhZ1tlXSkpLChrLmRhdGEmJmsuaGFzQ29udGVudCYmay5jb250ZW50VHlwZSE9PSExfHxiLmNvbnRlbnRUeXBlKSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGsuY29udGVudFR5cGUpLHYuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixrLmRhdGFUeXBlc1swXSYmay5hY2NlcHRzW2suZGF0YVR5cGVzWzBdXT9rLmFjY2VwdHNbay5kYXRhVHlwZXNbMF1dKygiKiIhPT1rLmRhdGFUeXBlc1swXT8iLCAiK0piKyI7IHE9MC4wMSI6IiIpOmsuYWNjZXB0c1siKiJdKTtmb3IoZCBpbiBrLmhlYWRlcnMpdi5zZXRSZXF1ZXN0SGVhZGVyKGQsay5oZWFkZXJzW2RdKTtpZihrLmJlZm9yZVNlbmQmJihrLmJlZm9yZVNlbmQuY2FsbChsLHYsayk9PT0hMXx8Mj09PXQpKXJldHVybiB2LmFib3J0KCk7dT0iYWJvcnQiO2ZvcihkIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbZF0oa1tkXSk7aWYoaT1NYihJYixrLGIsdikpe3YucmVhZHlTdGF0ZT0xLGgmJm4udHJpZ2dlcigiYWpheFNlbmQiLFt2LGtdKSxrLmFzeW5jJiZrLnRpbWVvdXQ+MCYmKGc9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0say50aW1lb3V0KSk7dHJ5e3Q9MSxpLnNlbmQocix4KX1jYXRjaCh3KXtpZighKDI+dCkpdGhyb3cgdzt4KC0xLHcpfX1lbHNlIHgoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIHgoYSxiLGMsZCl7dmFyIGoscixzLHUsdyx4PWI7MiE9PXQmJih0PTIsZyYmY2xlYXJUaW1lb3V0KGcpLGk9dm9pZCAwLGY9ZHx8IiIsdi5yZWFkeVN0YXRlPWE+MD80OjAsaj1hPj0yMDAmJjMwMD5hfHwzMDQ9PT1hLGMmJih1PU9iKGssdixjKSksdT1QYihrLHUsdixqKSxqPyhrLmlmTW9kaWZpZWQmJih3PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx3JiYobS5sYXN0TW9kaWZpZWRbZV09dyksdz12LmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksdyYmKG0uZXRhZ1tlXT13KSksMjA0PT09YXx8IkhFQUQiPT09ay50eXBlP3g9Im5vY29udGVudCI6MzA0PT09YT94PSJub3Rtb2RpZmllZCI6KHg9dS5zdGF0ZSxyPXUuZGF0YSxzPXUuZXJyb3Isaj0hcykpOihzPXgsKGF8fCF4KSYmKHg9ImVycm9yIiwwPmEmJihhPTApKSksdi5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9KGJ8fHgpKyIiLGo/by5yZXNvbHZlV2l0aChsLFtyLHgsdl0pOm8ucmVqZWN0V2l0aChsLFt2LHgsc10pLHYuc3RhdHVzQ29kZShxKSxxPXZvaWQgMCxoJiZuLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt2LGssaj9yOnNdKSxwLmZpcmVXaXRoKGwsW3YseF0pLGgmJihuLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3Ysa10pLC0tbS5hY3RpdmV8fG0uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB2fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLG0uZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe21bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG0uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG0uYWpheCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0pfX0pLG0uX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIG0uYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sbS5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7aWYobS5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bSh0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPW0oYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJjE9PT1hLmZpcnN0Q2hpbGQubm9kZVR5cGUpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihiKXttKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9bSh0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1tLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXttKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7bS5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fG0odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLG0uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB8fCFrLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cygpJiYibm9uZSI9PT0oYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxtLmNzcyhhLCJkaXNwbGF5IikpfSxtLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFtLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9O3ZhciBRYj0vJTIwL2csUmI9L1xbXF0kLyxTYj0vXHI/XG4vZyxUYj0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksVWI9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIFZiKGEsYixjLGQpe3ZhciBlO2lmKG0uaXNBcnJheShiKSltLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fFJiLnRlc3QoYSk/ZChhLGUpOlZiKGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGU/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoY3x8Im9iamVjdCIhPT1tLnR5cGUoYikpZChhLGIpO2Vsc2UgZm9yKGUgaW4gYilWYihhKyJbIitlKyJdIixiW2VdLGMsZCl9bS5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9bS5pc0Z1bmN0aW9uKGIpP2IoKTpudWxsPT1iPyIiOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2lmKHZvaWQgMD09PWImJihiPW0uYWpheFNldHRpbmdzJiZtLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksbS5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIW0uaXNQbGFpbk9iamVjdChhKSltLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKVZiKGMsYVtjXSxiLGUpO3JldHVybiBkLmpvaW4oIiYiKS5yZXBsYWNlKFFiLCIrIil9LG0uZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gbS5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPW0ucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP20ubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIW0odGhpcykuaXMoIjpkaXNhYmxlZCIpJiZVYi50ZXN0KHRoaXMubm9kZU5hbWUpJiYhVGIudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IVcudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1tKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1jP251bGw6bS5pc0FycmF5KGMpP20ubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShTYiwiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoU2IsIlxyXG4iKX19KS5nZXQoKX19KSxtLmFqYXhTZXR0aW5ncy54aHI9dm9pZCAwIT09YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmL14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBlKSYmWmIoKXx8JGIoKX06WmI7dmFyIFdiPTAsWGI9e30sWWI9bS5hamF4U2V0dGluZ3MueGhyKCk7YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudCgib251bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIFhiKVhiW2FdKHZvaWQgMCwhMCl9KSxrLmNvcnM9ISFZYiYmIndpdGhDcmVkZW50aWFscyJpbiBZYixZYj1rLmFqYXg9ISFZYixZYiYmbS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe2lmKCFhLmNyb3NzRG9tYWlufHxrLmNvcnMpe3ZhciBiO3JldHVybntzZW5kOmZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hLnhocigpLGc9KytXYjtpZihmLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZSBpbiBhLnhockZpZWxkcylmW2VdPWEueGhyRmllbGRzW2VdO2EubWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGNbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGNbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZSBpbiBjKXZvaWQgMCE9PWNbZV0mJmYuc2V0UmVxdWVzdEhlYWRlcihlLGNbZV0rIiIpO2Yuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCksYj1mdW5jdGlvbihjLGUpe3ZhciBoLGksajtpZihiJiYoZXx8ND09PWYucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIFhiW2ddLGI9dm9pZCAwLGYub25yZWFkeXN0YXRlY2hhbmdlPW0ubm9vcCxlKTQhPT1mLnJlYWR5U3RhdGUmJmYuYWJvcnQoKTtlbHNle2o9e30saD1mLnN0YXR1cywic3RyaW5nIj09dHlwZW9mIGYucmVzcG9uc2VUZXh0JiYoai50ZXh0PWYucmVzcG9uc2VUZXh0KTt0cnl7aT1mLnN0YXR1c1RleHR9Y2F0Y2goayl7aT0iIn1ofHwhYS5pc0xvY2FsfHxhLmNyb3NzRG9tYWluPzEyMjM9PT1oJiYoaD0yMDQpOmg9ai50ZXh0PzIwMDo0MDR9aiYmZChoLGksaixmLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sYS5hc3luYz80PT09Zi5yZWFkeVN0YXRlP3NldFRpbWVvdXQoYik6Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9WGJbZ109YjpiKCl9LGFib3J0OmZ1bmN0aW9uKCl7YiYmYih2b2lkIDAsITApfX19fSk7ZnVuY3Rpb24gWmIoKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gJGIoKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1tLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBtLmdsb2JhbEV2YWwoYSksYX19fSksbS5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLG0uYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPXkuaGVhZHx8bSgiaGVhZCIpWzBdfHx5LmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihkLGUpe2I9eS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxiLmFzeW5jPSEwLGEuc2NyaXB0Q2hhcnNldCYmKGIuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGIuc3JjPWEudXJsLGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7KGN8fCFiLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoYi5yZWFkeVN0YXRlKSkmJihiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbCxjfHxlKDIwMCwic3VjY2VzcyIpKX0sYy5pbnNlcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMCwhMCl9fX19KTt2YXIgX2I9W10sYWM9Lyg9KVw/KD89JnwkKXxcP1w/LzttLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9X2IucG9wKCl8fG0uZXhwYW5kbysiXyIrdmIrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG0uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGFjLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYhKGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmYWMudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW0uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKGFjLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPSh3Yi50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bS5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXthW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssX2IucHVzaChlKSksZyYmbS5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbS5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fHk7dmFyIGQ9dS5leGVjKGEpLGU9IWMmJltdO3JldHVybiBkP1tiLmNyZWF0ZUVsZW1lbnQoZFsxXSldOihkPW0uYnVpbGRGcmFnbWVudChbYV0sYixlKSxlJiZlLmxlbmd0aCYmbShlKS5yZW1vdmUoKSxtLm1lcmdlKFtdLGQuY2hpbGROb2RlcykpfTt2YXIgYmM9bS5mbi5sb2FkO20uZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhJiZiYylyZXR1cm4gYmMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD49MCYmKGQ9bS50cmltKGEuc2xpY2UoaCxhLmxlbmd0aCkpLGE9YS5zbGljZSgwLGgpKSxtLmlzRnVuY3Rpb24oYik/KGM9YixiPXZvaWQgMCk6YiYmIm9iamVjdCI9PXR5cGVvZiBiJiYoZj0iUE9TVCIpLGcubGVuZ3RoPjAmJm0uYWpheCh7dXJsOmEsdHlwZTpmLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2U9YXJndW1lbnRzLGcuaHRtbChkP20oIjxkaXY+IikuYXBwZW5kKG0ucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuY29tcGxldGUoYyYmZnVuY3Rpb24oYSxiKXtnLmVhY2goYyxlfHxbYS5yZXNwb25zZVRleHQsYixhXSl9KSx0aGlzfSxtLmVhY2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0ZSIsImFqYXhFcnJvciIsImFqYXhTdWNjZXNzIiwiYWpheFNlbmQiXSxmdW5jdGlvbihhLGIpe20uZm5bYl09ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMub24oYixhKX19KSxtLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gbS5ncmVwKG0udGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofTt2YXIgY2M9YS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7ZnVuY3Rpb24gZGMoYSl7cmV0dXJuIG0uaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1tLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPW0uY3NzKGEsInBvc2l0aW9uIiksbD1tKGEpLG49e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1tLmNzcyhhLCJ0b3AiKSxpPW0uY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiZtLmluQXJyYXkoImF1dG8iLFtmLGldKT4tMSxqPyhkPWwucG9zaXRpb24oKSxnPWQudG9wLGU9ZC5sZWZ0KTooZz1wYXJzZUZsb2F0KGYpfHwwLGU9cGFyc2VGbG9hdChpKXx8MCksbS5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGgpKSxudWxsIT1iLnRvcCYmKG4udG9wPWIudG9wLWgudG9wK2cpLG51bGwhPWIubGVmdCYmKG4ubGVmdD1iLmxlZnQtaC5sZWZ0K2UpLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLG4pOmwuY3NzKG4pfX0sbS5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1hP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20ub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTt2YXIgYixjLGQ9e3RvcDowLGxlZnQ6MH0sZT10aGlzWzBdLGY9ZSYmZS5vd25lckRvY3VtZW50O2lmKGYpcmV0dXJuIGI9Zi5kb2N1bWVudEVsZW1lbnQsbS5jb250YWlucyhiLGUpPyh0eXBlb2YgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPT1LJiYoZD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxjPWRjKGYpLHt0b3A6ZC50b3ArKGMucGFnZVlPZmZzZXR8fGIuc2Nyb2xsVG9wKS0oYi5jbGllbnRUb3B8fDApLGxlZnQ6ZC5sZWZ0KyhjLnBhZ2VYT2Zmc2V0fHxiLnNjcm9sbExlZnQpLShiLmNsaWVudExlZnR8fDApfSk6ZH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgYSxiLGM9e3RvcDowLGxlZnQ6MH0sZD10aGlzWzBdO3JldHVybiJmaXhlZCI9PT1tLmNzcyhkLCJwb3NpdGlvbiIpP2I9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooYT10aGlzLm9mZnNldFBhcmVudCgpLGI9dGhpcy5vZmZzZXQoKSxtLm5vZGVOYW1lKGFbMF0sImh0bWwiKXx8KGM9YS5vZmZzZXQoKSksYy50b3ArPW0uY3NzKGFbMF0sImJvcmRlclRvcFdpZHRoIiwhMCksYy5sZWZ0Kz1tLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSkse3RvcDpiLnRvcC1jLnRvcC1tLmNzcyhkLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OmIubGVmdC1jLmxlZnQtbS5jc3MoZCwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxjYzt3aGlsZShhJiYhbS5ub2RlTmFtZShhLCJodG1sIikmJiJzdGF0aWMiPT09bS5jc3MoYSwicG9zaXRpb24iKSlhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfHxjY30pfX0pLG0uZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPS9ZLy50ZXN0KGIpO20uZm5bYV09ZnVuY3Rpb24oZCl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhLGQsZSl7dmFyIGY9ZGMoYSk7cmV0dXJuIHZvaWQgMD09PWU/Zj9iIGluIGY/ZltiXTpmLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM/bShmKS5zY3JvbGxMZWZ0KCk6ZSxjP2U6bShmKS5zY3JvbGxUb3AoKSk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksbS5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1tiXT1MYShrLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz8oYz1KYShhLGIpLEhhLnRlc3QoYyk/bShhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxtLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe20uZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXttLmZuW2RdPWZ1bmN0aW9uKGQsZSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGQpLGc9Y3x8KGQ9PT0hMHx8ZT09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGIsYyxkKXt2YXIgZTtyZXR1cm4gbS5pc1dpbmRvdyhiKT9iLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09Yi5ub2RlVHlwZT8oZT1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlbInNjcm9sbCIrYV0sZVsic2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZVsib2Zmc2V0IithXSxlWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09ZD9tLmNzcyhiLGMsZyk6bS5zdHlsZShiLGMsZCxnKX0sYixmP2Q6dm9pZCAwLGYsbnVsbCl9fSl9KSxtLmZuLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LG0uZm4uYW5kU2VsZj1tLmZuLmFkZEJhY2ssImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIG19KTt2YXIgZWM9YS5qUXVlcnksZmM9YS4kO3JldHVybiBtLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oYil7cmV0dXJuIGEuJD09PW0mJihhLiQ9ZmMpLGImJmEualF1ZXJ5PT09bSYmKGEualF1ZXJ5PWVjKSxtfSx0eXBlb2YgYj09PUsmJihhLmpRdWVyeT1hLiQ9bSksbX0pOwo="></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="data:text/css,html%7Bfont%2Dfamily%3Asans%2Dserif%3B%2Dwebkit%2Dtext%2Dsize%2Dadjust%3A100%25%3B%2Dms%2Dtext%2Dsize%2Dadjust%3A100%25%7Dbody%7Bmargin%3A0%7Darticle%2Caside%2Cdetails%2Cfigcaption%2Cfigure%2Cfooter%2Cheader%2Chgroup%2Cmain%2Cmenu%2Cnav%2Csection%2Csummary%7Bdisplay%3Ablock%7Daudio%2Ccanvas%2Cprogress%2Cvideo%7Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Abaseline%7Daudio%3Anot%28%5Bcontrols%5D%29%7Bdisplay%3Anone%3Bheight%3A0%7D%5Bhidden%5D%2Ctemplate%7Bdisplay%3Anone%7Da%7Bbackground%2Dcolor%3Atransparent%7Da%3Aactive%2Ca%3Ahover%7Boutline%3A0%7Dabbr%5Btitle%5D%7Bborder%2Dbottom%3A1px%20dotted%7Db%2Cstrong%7Bfont%2Dweight%3A700%7Ddfn%7Bfont%2Dstyle%3Aitalic%7Dh1%7Bmargin%3A%2E67em%200%3Bfont%2Dsize%3A2em%7Dmark%7Bcolor%3A%23000%3Bbackground%3A%23ff0%7Dsmall%7Bfont%2Dsize%3A80%25%7Dsub%2Csup%7Bposition%3Arelative%3Bfont%2Dsize%3A75%25%3Bline%2Dheight%3A0%3Bvertical%2Dalign%3Abaseline%7Dsup%7Btop%3A%2D%2E5em%7Dsub%7Bbottom%3A%2D%2E25em%7Dimg%7Bborder%3A0%7Dsvg%3Anot%28%3Aroot%29%7Boverflow%3Ahidden%7Dfigure%7Bmargin%3A1em%2040px%7Dhr%7Bheight%3A0%3B%2Dwebkit%2Dbox%2Dsizing%3Acontent%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Acontent%2Dbox%3Bbox%2Dsizing%3Acontent%2Dbox%7Dpre%7Boverflow%3Aauto%7Dcode%2Ckbd%2Cpre%2Csamp%7Bfont%2Dfamily%3Amonospace%2Cmonospace%3Bfont%2Dsize%3A1em%7Dbutton%2Cinput%2Coptgroup%2Cselect%2Ctextarea%7Bmargin%3A0%3Bfont%3Ainherit%3Bcolor%3Ainherit%7Dbutton%7Boverflow%3Avisible%7Dbutton%2Cselect%7Btext%2Dtransform%3Anone%7Dbutton%2Chtml%20input%5Btype%3Dbutton%5D%2Cinput%5Btype%3Dreset%5D%2Cinput%5Btype%3Dsubmit%5D%7B%2Dwebkit%2Dappearance%3Abutton%3Bcursor%3Apointer%7Dbutton%5Bdisabled%5D%2Chtml%20input%5Bdisabled%5D%7Bcursor%3Adefault%7Dbutton%3A%3A%2Dmoz%2Dfocus%2Dinner%2Cinput%3A%3A%2Dmoz%2Dfocus%2Dinner%7Bpadding%3A0%3Bborder%3A0%7Dinput%7Bline%2Dheight%3Anormal%7Dinput%5Btype%3Dcheckbox%5D%2Cinput%5Btype%3Dradio%5D%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%3Bpadding%3A0%7Dinput%5Btype%3Dnumber%5D%3A%3A%2Dwebkit%2Dinner%2Dspin%2Dbutton%2Cinput%5Btype%3Dnumber%5D%3A%3A%2Dwebkit%2Douter%2Dspin%2Dbutton%7Bheight%3Aauto%7Dinput%5Btype%3Dsearch%5D%7B%2Dwebkit%2Dbox%2Dsizing%3Acontent%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Acontent%2Dbox%3Bbox%2Dsizing%3Acontent%2Dbox%3B%2Dwebkit%2Dappearance%3Atextfield%7Dinput%5Btype%3Dsearch%5D%3A%3A%2Dwebkit%2Dsearch%2Dcancel%2Dbutton%2Cinput%5Btype%3Dsearch%5D%3A%3A%2Dwebkit%2Dsearch%2Ddecoration%7B%2Dwebkit%2Dappearance%3Anone%7Dfieldset%7Bpadding%3A%2E35em%20%2E625em%20%2E75em%3Bmargin%3A0%202px%3Bborder%3A1px%20solid%20silver%7Dlegend%7Bpadding%3A0%3Bborder%3A0%7Dtextarea%7Boverflow%3Aauto%7Doptgroup%7Bfont%2Dweight%3A700%7Dtable%7Bborder%2Dspacing%3A0%3Bborder%2Dcollapse%3Acollapse%7Dtd%2Cth%7Bpadding%3A0%7D%40media%20print%7B%2A%2C%3Aafter%2C%3Abefore%7Bcolor%3A%23000%21important%3Btext%2Dshadow%3Anone%21important%3Bbackground%3A0%200%21important%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%21important%3Bbox%2Dshadow%3Anone%21important%7Da%2Ca%3Avisited%7Btext%2Ddecoration%3Aunderline%7Da%5Bhref%5D%3Aafter%7Bcontent%3A%22%20%28%22%20attr%28href%29%20%22%29%22%7Dabbr%5Btitle%5D%3Aafter%7Bcontent%3A%22%20%28%22%20attr%28title%29%20%22%29%22%7Da%5Bhref%5E%3D%22javascript%3A%22%5D%3Aafter%2Ca%5Bhref%5E%3D%22%23%22%5D%3Aafter%7Bcontent%3A%22%22%7Dblockquote%2Cpre%7Bborder%3A1px%20solid%20%23999%3Bpage%2Dbreak%2Dinside%3Aavoid%7Dthead%7Bdisplay%3Atable%2Dheader%2Dgroup%7Dimg%2Ctr%7Bpage%2Dbreak%2Dinside%3Aavoid%7Dimg%7Bmax%2Dwidth%3A100%25%21important%7Dh2%2Ch3%2Cp%7Borphans%3A3%3Bwidows%3A3%7Dh2%2Ch3%7Bpage%2Dbreak%2Dafter%3Aavoid%7D%2Enavbar%7Bdisplay%3Anone%7D%2Ebtn%3E%2Ecaret%2C%2Edropup%3E%2Ebtn%3E%2Ecaret%7Bborder%2Dtop%2Dcolor%3A%23000%21important%7D%2Elabel%7Bborder%3A1px%20solid%20%23000%7D%2Etable%7Bborder%2Dcollapse%3Acollapse%21important%7D%2Etable%20td%2C%2Etable%20th%7Bbackground%2Dcolor%3A%23fff%21important%7D%2Etable%2Dbordered%20td%2C%2Etable%2Dbordered%20th%7Bborder%3A1px%20solid%20%23ddd%21important%7D%7D%40font%2Dface%7Bfont%2Dfamily%3A%27Glyphicons%20Halflings%27%3Bsrc%3Aurl%28data%3Aapplication%2Fvnd%2Ems%2Dfontobject%3Bbase64%2Cn04AAEFNAAACAAIABAAAAAAABQAAAAAAAAABAJABAAAEAExQAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAJxJ%2FLAAAAAAAAAAAAAAAAAAAAAAAACgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAAAADgBSAGUAZwB1AGwAYQByAAAAeABWAGUAcgBzAGkAbwBuACAAMQAuADAAMAA5ADsAUABTACAAMAAwADEALgAwADAAOQA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOAAzADIAOQAAADgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzACAAUgBlAGcAdQBsAGEAcgAAAAAAQlNHUAAAAAAAAAAAAAAAAAAAAAADAKncAE0TAE0ZAEbuFM3pjM%2FSEdmjKHUbyow8ATBE40IvWA3vTu8LiABDQ%2BpexwUMcm1SMnNryctQSiI1K5ZnbOlXKmnVV5YvRe6RnNMFNCOs1KNVpn6yZhCJkRtVRNzEufeIq7HgSrcx4S8h%2Fv4vnrrKc6oCNxmSk2uKlZQHBii6iKFoH0746ThvkO1kJHlxjrkxs%2BLWORaDQBEtiYJIR5IB9Bi1UyL4Rmr0BNigNkMzlKQmnofBHviqVzUxwdMb3NdCn69hy%2BpRYVKGVS%2F1tnsqv4LL7wCCPZZAZPT4aCShHjHJVNuXbmMrY5LeQaGnvAkXlVrJgKRAUdFjrWEah9XebPeQMj7KS7DIBAFt8ycgC5PLGUOHSE3ErGZCiViNLL5ZARfywnCoZaKQCu6NuFX42AEeKtKUGnr%2FCm2Cy8tpFhBPMW5Fxi4Qm4TkDWh4IWFDClhU2hRWosUWqcKLlgyXB%2BlSHaWaHiWlBAR8SeSgSPCQxdVQgzUixWKSTrIQEbU94viDctkvX%2BVSjJuUmV8L4CXShI11esnp0pjWNZIyxKHS4wVQ2ime1P4RnhvGw0aDN1OLAXGERsB7buFpFGGBAre4QEQR0HOIO5oYH305G%2BKspT%2FFupEGGafCCwxSe6ZUa%2B073rXHnNdVXE6eWvibUS27XtRzkH838mYLMBmYysZTM0EM3A1fbpCBYFccN1B%2FEnCYu%2FTgCGmr7bMh8GfYL%2BBfcLvB0gRagC09w9elfldaIy%2FhNCBLRgBgtCC7jAF63wLSMAfbfAlEggYU0bUA7ACCJmTDpEmJtI78w4%2FBO7dN7JR7J7ZvbYaUbaILSQsRBiF3HGk5fEg6p9unwLvn98r%2BvnsV%2B372uf1xBLq4qU%2F45fTuqaAP%2BpssmCCCTF0mhEow8ZXZOS8D7Q85JsxZ%2BAzok7B7O%2Ff6J8AzYBySZQB%2FQHYUSA%2BEeQhEWiS6AIQzgcsDiER4MjgMBAWDV4AgQ3g1eBgIdweCQmCjJEMkJ%2BPKRWyFHHmg1Wi%2F6xzUgA0LREoKJChwnQa9B%2B5RQZRB3IlBlkAnxyQNaANwHMowzlYSMCBgnbpzvqpl0iTJNCQidDI9ZrSYNIRBhHtUa5YHMHxyGEik9hDE0AKj72AbTCaxtHPUaKZdAZSnQTyjGqGLsmBStCejApUhg4uBMU6mATujEl%2BKdDPbI6Ag4vLr%2BhjY6lbjBeoLKnZl0UZgRX8gTySOeynZVz1wOq7e1hFGYIq%2BMhrGxDLak0PrwYzSXtcuyhXEhwOYofiW%2BEcI%2Fjw8P6IY6ed%2BetAbuqKp5QIapT77LnAe505lMuqL79a0ut4rWexzFttsOsLDy7zvtQzcq3U1qabe7tB0wHWVXji%2BzDbo8x8HyIRUbXnwUcklFv51fvTymiV%2BMXLSmGH9d9%2BaXpD5X6lao41anWGig7IwIdnoBY2ht%2FpO9mClLo4NdXHAsefqWUKlXJkbqPOFhMoR4aiA1BXqhRNbB2Xwi%2B7u%2FjpAoOpKJ0UX24EsrzMfHXViakCNcKjBxuQX8BO0ZqjJ3xXzf%2B61t2VXOSgJ8xu65QKgtN6FibPmPYsXbJRHHqbgATcSZxBqGiDiU4NNNsYBsKD0MIP%2FOfKnlk%2FLkaid%2FO2NbKeuQrwOB2Gq3YHyr6ALgzym5wIBnsdC1ZkoBFZSQXChZvlesPqvK2c5oHHT3Q65jYpNxnQcGF0EHbvYqoFw60WNlXIHQF2HQB7zD6lWjZ9rVqUKBXUT6hrkZOle0RFYII0V5ZYGl1JAP0Ud1fZZMvSomBzJ710j4Me8mjQDwEre5Uv2wQfk1ifDwb5ksuJQQ3xt423lbuQjvoIQByQrNDh1JxGFkOdlJvu%2FgFtuW0wR4cgd%2BZKesSV7QkNE2kw6AV4hoIuC02LGmTomyf8PiO6CZzOTLTPQ%2BHW06H%2Btx%2BbQ8LmDYg1pTFrp2oJXgkZTyeRJZM0C8aE2LpFrNVDuhARsN543%2FFV6klQ6Tv1OoZGXLv0igKrl%2FCmJxRmX7JJbJ998VSIPQRyDBICzl4JJlYHbdql30NvYcOuZ7a10uWRrgoieOdgIm4rlq6vNOQBuqESLbXG5lzdJGHw2m0sDYmODXbYGTfSTGRKpssTO95fothJCjUGQgEL4yKoGAF%2F0SrpUDNn8CBgBcSDQByAeNkCXp4S4Ro2Xh4OeaGRgR66PVOsU8bc6TR5%2FxTcn4IVMLOkXSWiXxkZQCbvKfmoAvQaKjO3EDKwkwqHChCDEM5loQRPd5ACBki1TjF772oaQhQbQ5C0lcWXPFOzrfsDGUXGrpxasbG4iab6eByaQkQfm0VFlP0ZsDkvvqCL6QXMUwCjdMx1ZOyKhTJ7a1GWAdOUcJ8RSejxNVyGs31OKMyRyBVoZFjqIkmKlLQ5eHMeEL4MkUf23cQ%2F1SgRCJ1dk4UdBT7OoyuNgLs0oCd8RnrEIb6QdMxT2QjD4zMrJkfgx5aDMcA4orsTtKCqWb%2FVeyceqa5OGSmB28YwH4rFbkQaLoUN8OQQYnD3w2eXpI4ScQfbCUZiJ4yMOIKLyyTc7BQ4uXUw6Ee6%2FxM%2B4Y67ngNBknxIPwuppgIhFcwJyr6EIj%2BLzNj%2FmfR2vhhRlx0BILZoAYruF0caWQ7YxO66UmeguDREAFHYuC7HJviRgVO6ruJH59h%2FC%2FPkgSle8xNzZJULLWq9JMDTE2fjGE146a1Us6PZDGYle6ldWRqn%2FpdpgHKNGrGIdkRK%2BKPETT9nKT6kLyDI8xd9A1FgWmXWRAIHwZ37WyZHOVyCadJEmMVz0MadMjDrPho%2BEIochkVC2xgGiwwsQ6DMv2P7UXqT4x7CdcYGId2BJQQa85EQKmCmwcRejQ9Bm4oATENFPkxPXILHpMPUyWTI5rjNOsIlmEeMbcOCEqInpXACYQ9DDxmFo9vcmsDblcMtg4tqBerNngkIKaFJmrQAPnq1dEzsMXcwjcHdfdCibcAxxA%2Bq%2Fj9m3LM%2FO7WJka4tSidVCjsvo2lQ%2F2ewyoYyXwAYyr2PlRoR5MpgVmSUIrM3PQxXPbgjBOaDQFIyFMJvx3Pc5RSYj12ySVF9fwFPQu2e2KWVoL9q3Ayv3IzpGHUdvdPdrNUdicjsTQ2ISy7QU3DrEytIjvbzJnAkmANXjAFERA0MUoPF3%2F5KFmW14bBNOhwircYgMqoDpUMcDtCmBE82QM2YtdjVLB4kBuKho%2FbcwQdeboqfQartuU3CsCf%2BcXkgYAqp%2F0Ee3RorAZt0AvvOCSI4JICIlGlsV0bsSid%2FNIEALAAzb6HAgyWHBps6xAOwkJIGcB82CxRQq4sJf3FzA70A%2BTRqcqjEMETCoez3mkPcpnoALs0ugJY8kQwrC%2BJE5ik3w9rzrvDRjAQnqgEVvdGrNwlanR0SOKWzxOJOvLJhcd8Cl4AshACUkv9czdMkJCVQSQhp6kp7StAlpVRpK0t0SW6LHeBJnE2QchB5Ccu8kxRghZXGIgZIiSj7gEKMJDClcnX6hgoqJMwiQDigIXg3ioFLCgDgjPtYHYpsF5EiA4kcnN18MZtOrY866dEQAb0FB34OGKHGZQjwW%2FWDHA60cYFaI%2FPjpzquUqdaYGcIq%2BmLez3WLFFCtNBN2QJcrlcoELgiPku5R5dSlJFaCEqEZle1AQzAKC%2B1SotMcBNyQUFuRHRF6OlimSBgjZeTBCwLyc6A%2BP%2FoFRchXTz5ADknYJHxzrJ5pGuIKRQISU6WyKTBBjD8WozmVYWIsto1AS5rxzKlvJu4E%2FvwOiKxRtCWsDM%2BeTHUrmwrCK5BIfMzGkD%2B0Fk5LzBs0jMYXktNDblB06LMNJ09U8pzSLmo14MS0OMjcdrZ31pyQqxJJpRImlSvfYAK8inkYU52QY2FPEVsjoWewpwhRp5yAuNpkqhdb7ku9Seefl2D0B8SMTFD90xi4CSOwwZy9IKkpMtI3FmFUg3%2FkFutpQGNc3pCR7gvC4sgwbupDu3DyEN%2BW6YGLNM21jpB49irxy9BSlHrVDlnihGKHwPrbVFtc%2Bh1rVQKZduxIyojccZIIcOCmhEnC7UkY68WXKQgLi2JCDQkQWJRQuk60hZp0D3rtCTINSeY9Ej2kIKYfGxwOs4j9qMM7fYZiipzgcf7TamnehqdhsiMiCawXnz4xAbyCkLAx5EGbo3Ax1u3dUIKnTxIaxwQTHehPl3V491H0%2BbC5zgpGz7Io%2BmjdhKlPJ01EeMpM7UsRJMi1nGjmJg35i6bQBAAxjO%2FENJubU2mg3ONySEoWklCwdABETcs7ck3jgiuU9pcKKpbgn%2B3YlzV1FzIkB6pmEDOSSyDfPPlQskznctFji0kpgZjW5RZe6x9kYT4KJcXg0bNiCyif%2BpZACCyRMmYsfiKmN9tSO65F0R2OO6ytlEhY5Sj6uRKfFxw0ijJaAx%2Fk3QgnAFSq27%2F2i4GEBA%2BUvTJKK%2F9eISNvG46Em5RZfjTYLdeD8kdXHyrwId%2FDQZUaMCY4gGbke2C8vfjgV%2FY9kkRQOJIn%2FxM9INZSpiBnqX0Q9GlQPpPKAyO5y%2BW5NMPSRdBCUlmuxl40ZfMCnf2Cp044uI9WLFtCi4YVxKjuRCOBWIb4XbIsGdbo4qtMQnNOQz4XDSui7W%2FN6l54qOynCqD3DpWQ%2BmpD7C40D8BZEWGJX3tlAaZBMj1yjvDYKwCJBa201u6nBKE5UE%2B7QSEhCwrXfbRZylAaAkplhBWX50dumrElePyNMRYUrC99UmcSSNgImhFhDI4BXjMtiqkgizUGCrZ8iwFxU6fQ8GEHCFdLewwxYWxgScAYMdMLmcZR6b7rZl95eQVDGVoUKcRMM1ixXQtXNkBETZkVVPg8LoSrdetHzkuM7DjZRHP02tCxA1fmkXKF3VzfN1pc1cv%2F8lbTIkkYpqKM9VOhp65ktYk%2BQ46myFWBapDfyWUCnsnI00QTBQmuFjMZTcd0V2NQ768Fhpby04k2IzNR1wKabuGJqYWwSly6ocMFGTeeI%2BejsWDYgEvr66QgqdcIbFYDNgsm0x9UHY6SCd5%2B7tpsLpKdvhahIDyYmEJQCqMqtCF6UlrE5GXRmbu%2Bvtm3BFSxI6ND6UxIE7GsGMgWqghXxSnaRJuGFveTcK5ZVSPJyjUxe1dKgI6kNF7EZhIZs8y8FVqwEfbM0Xk2ltORVDKZZM40SD3qQoQe0orJEKwPfZwm3YPqwixhUMOndis6MhbmfvLBKjC8sKKIZKbJk8L11oNkCQzCgvjhyyEiQSuJcgCQSG4Mocfgc0Hkwcjal1UNgP0CBPikYqBIk9tONv4kLtBswH07vUCjEaHiFGlLf8MgXKzSgjp2HolRRccAOh0ILHz9qlGgIFkwAnzHJRjWFhlA7ROwINyB5HFj59PRZHFor6voq7l23EPNRwdWhgawqbivLSjRA4htEYUFkjESu67icTg5S0aW1sOkCiIysfJ9UnIWevOOLGpepcBxy1wEhd2WI3AZg7sr9WBmHWyasxMcvY%2FiOmsLtHSWNUWEGk9hScMPShasUA1AcHOtRZlqMeQ0OzYS9vQvYUjOLrzP07BUAFikcJNMi7gIxEw4pL1G54TcmmmoAQ5s7TGWErJZ2Io4yQ0ljRYhL8H5e62oDtLF8aDpnIvZ5R3GWJyAugdiiJW9hQAVTsnCBHhwu7rkBlBX6r3b7ejEY0k5GGeyKv66v%2B6dg7mcJTrWHbtMywbedYqCQ0FPwoytmSWsL8WTtChZCKKzEF7vP6De4x2BJkkniMgSdWhbeBSLtJZR9CTHetK1xb34AYIJ37OegYIoPVbXgJ%2FqDQK%2BbfCtxQRVKQu77WzOoM6SGL7MaZwCGJVk46aImai9fmam%2BWpHG%2B0BtQPWUgZ7RIAlPq6lkECUhZQ2gqWkMYKcYMYaIc4gYCDFHYa2d1nzp3%2BJ1eCBay8IYZ0wQRKGAqvCuZ%2FUgbQPyllosq%2BXtfKIZOzmeJqRazpmmoP%2F76YfkjzV2NlXTDSBYB04SVlNQsFTbGPk1t%2FI4Jktu0XSgifO2ozFOiwd%2F0SssJDn0dn4xqk4GDTTKX73%2FwQyBLdqgJ%2BWx6AQaba3BA9CKEzjtQYIfAsiYamapq80LAamYjinlKXUkxdpIDk0puXUEYzSalfRibAeDAKpNiqQ0FTwoxuGYzRnisyTotdVTclis1LHRQCy%2FqqL8oUaQzWRxilq5Mi0IJGtMY02cGLD69vGjkj3p6pGePKI8bkBv5evq8SjjyU04vJR2cQXQwSJyoinDsUJHCQ50jrFTT7yRdbdYQMB3MYCb6uBzJ9ewhXYPAIZSXfeEQBZZ3GPN3Nbhh%2FwkvAJLXnQMdi5NYYZ5GHE400GS5rXkOZSQsdZgIbzRnF9ueLnsfQ47wHAsirITnTlkCcuWWIUhJSbpM3wWhXNHvt2xUsKKMpdBSbJnBMcihkoDqAd1Zml%2FR4yrzow1Q2A5G%2Bkzo%2FRhRxQS2lCSDRV8LlYLBOOoo1bF4jwJAwKMK1tWLHlu9i0j4Ig8qVm6wE1DxXwAwQwsaBWUg2pOOol2dHxyt6npwJEdLDDVYyRc2D0HbcbLUJQj8gPevQBUBOUHXPrsAPBERICpnYESeu2OHotpXQxRGlCCtLdIsu23MhZVEoJg8Qumj%2FUMMc34IBqTKLDTp76WzL%2FdMjCxK7MjhiGjeYAC%2Fkj%2FjY%2FRde7hpSM1xChrog6yZ7OWTuD56xBJnGFE%2BpT2ElSyCnJcwVzCjkqeNLfMEJqKW0G7OFIp0G%2B9mh50I9o8k1tpCY0xYqFNIALgIfc2me4n1bmJnRZ89oepgLPT0NTMLNZsvSCZAc3TXaNB07vail36%2FdBySis4m9%2FDR8izaLJW6bWCkVgm5T%2Bius3ZXq4xI%2BGnbveLbdRwF2mNtsrE0JjYc1AXknCOrLSu7Te%2Fr4dPYMCl5qtiHNTn%2BTPbh1jCBHH%2BdMJNhwNgs3nT%2BOhQoQ0vYif56BMG6WowAcHR3DjQolxLzyVekHj00PBAaW7IIAF1EF%2BuRIWyXjQMAs2chdpaKPNaB%2BkSezYt0%2BCA04sOg5vx8Fr7Ofa9sUv87h7SLAUFSzbetCCZ9pmyLt6l6%2FTzoA1%2FZBG9bIUVHLAbi%2FkdBFgYGyGwRQGBpkqCEg2ah9UD6EedEcEL3j4y0BQQCiExEnocA3SZboh%2Bepgd3YsOkHskZwPuQ5OoyA0fTA5AXrHcUOQF%2BzkJHIA7PwCDk1gGVmGUZSSoPhNf%2BTklauz98QofOlCIQ%2FtCD4dosHYPqtPCXB3agggQQIqQJsSkB%2Bqn0rkQ1toJjON%2FOtCIB9RYv3PqRA4C4U68ZMlZn6BdgEvi2ziU%2BTQ6NIw3ej%2BAtDwMGEZk7e2IjxUWKdAxyaw9OCwSmeADTPPleyk6UhGDNXQb%2B%2BW6Uk4q6F7%2Frg6WVTo82IoCxSIsFDrav4EPHphD3u4hR53WKVvYZUwNCCeM4PMBWzK%2BEfIthZOkuAwPo5C5jgoZgn6dUdvx5rIDmd58cXXdKNfw3l%2BwM2UjgrDJeQHhbD7HW2QDoZMCujgIUkk5Fg8VCsdyjOtnGRx8wgKRPZN5dR0zPUyfGZFVihbFRniXZFOZGKPnEQzU3AnD1KfR6weHW2XS6KbPJxUkOTZsAB9vTVp3Le1F8q5l%2BDMcLiIq78jxAImD2pGFw0VHfRatScGlK6SMu8leTmhUSMy8Uhdd6xBiH3Gdman4tjQGLboJfqz6fL2WKHTmrfsKZRYX6BTDjDldKMosaSTLdQS7oDisJNqAUhw1PfTlnacCO8vl8706Km1FROgLDmudzxg%2BEWTiArtHgLsRrAXYWdB0NmToNCJdKm0KWycZQqb%2BMw76Qy29iQ5up%2FX7oyw8QZ75kP5F6iJAJz6KCmqxz8fEa%2FxnsMYcIO%2FvEkGRuMckhr4rIeLrKaXnmIzlNLxbFspOphkcnJdnz%2FChp%2FVlpj2P7jJQmQRwGnltkTV5dbF9fE3%2FfxoSqTROgq9wFUlbuYzYcasE0ouzBo%2BdDCDzxKAfhbAZYxQiHrLzV2iVexnDX%2FQnT1fsT%2Fxuhu1ui5qIytgbGmRoQkeQooO8eJNNZsf0iALur8QxZFH0nCMnjerYQqG1pIfjyVZWxhVRznmmfLG00BcBWJE6hzQWRyFknuJnXuk8A5FRDCulwrWASSNoBtR%2BCtGdkPwYN2o7DOw%2FVGlCZPusRBFXODQdUM5zeHDIVuAJBLqbO%2Ff9Qua%2BpDqEPk230Sob9lEZ8BHiCorjVghuI0lI4JDgHGRDD%2FprQ84B1pVGkIpVUAHCG%2Biz3Bn3qm2AVrYcYWhock4jso5%2BJ7HfHVj4WMIQdGctq3psBCVVzupQOEioBGA2Bk%2BUILT7%2BVoX5mdxxA5fS42gISQVi%2FHTzrgMxu0fY6hE1ocUwwbsbWcezrY2n6S8%2F6cxXkOH4prpmPuFoikTzY7T85C4T2XYlbxLglSv2uLCgFv8Quk%2FwdesUdWPeHYIH0R729JIisN9Apdd4eB10aqwXrPt%2BSu9mA8k8n1sjMwnfsfF2j3jMUzXepSHmZ%2FBfqXvzgUNQQWOXO8YEuFBh4QTYCkOAPxywpYu1VxiDyJmKVcmJPGWk%2Fgc3Pov02StyYDahwmzw3E1gYC9wkupyWfDqDSUMpCTH5e5N8B%2F%2FlHiMuIkTNw4USHrJU67bjXGqNav6PBuQSoqTxc8avHoGmvqNtXzIaoyMIQIiiUHIM64cXieouplhNYln7qgc4wBVAYR104kO%2BCvKqsg4yIUlFNThVUAKZxZt1XA34h3TCUUiXVkZ0w8Hh2R0Z5L0b4LZvPd%2Fp1gi%2F07h8qfwHrByuSxglc9cI4QIg2oqvC%2Fqm0i7tjPLTgDhoWTAKDO2ONW5oe%2B%2FeKB9vZB8K6C25yCZ9RFVMnb6NRdRjyVK57CHHSkJBfnM2%2Fj4ODUwRkqrtBBCrDsDpt8jhZdXoy%2F1BCqw3sSGhgGGy0a5Jw6BP%2FTExoCmNFYjZl248A0osgPyGEmRA%2BfAsqPVaNAfytu0vuQJ7rk3J4kTDTR2AlCHJ5cls26opZM4w3jMULh2YXKpcqGBtuleAlOZnaZGbD6DHzMd6i2oFeJ8z9XYmalg1Szd%2FocZDc1C7Y6vcALJz2lYnTXiWEr2wawtoR4g3jvWUU2Ngjd1cewtFzEvM1NiHZPeLlIXFbBPawxNgMwwAlyNSuGF3zizVeOoC9bag1qRAQKQE%2FEZBWC2J8mnXAN2aTBboZ7HewnObE8CwROudZHmUM5oZ%2FUgd%2FJZQK8lvAm43uDRAbyW8gZ%2BZGq0EVerVGUKUSm%2FIdn8AQHdR4m7bue88WBwft9mSCeMOt1ncBwziOmJYI2ZR7ewNMPiCugmSsE4EyQ%2BQATJG6qORMGd4snEzc6B4shPIo4G1T7PgSm8PY5eUkPdF8JZ0VBtadbHXoJgnEhZQaODPj2gpODKJY5Yp4DOsLBFxWbvXN755KWylJm%2BoOd4zEL9Hpubuy2gyyfxh8oEfFutnYWdfB8PdESLWYvSqbElP9qo3u6KTmkhoacDauMNNjj0oy40DFV7Ql0aZj77xfGl7TJNHnIwgqOkenruYYNo6h724%2BzUQ7%2BvkCpZB%2BpGA562hYQiDxHVWOq0oDQl%2FQsoiY%2BcuI7iWq%2FZIBtHcXJ7kks%2Bh2fCNUPA82BzjnqktNts%2BRLdk1VSu%2BtqEn7QZCCsvEqk6FkfiOYkrsw092J8jsfIuEKypNjLxrKA9kiA19mxBD2suxQKCzwXGws7kEJvlhUiV9tArLIdZW0IORcxEzdzKmjtFhsjKy%2F44XYXdI5noQoRcvjZ1RMPACRqYg2V1%2BOwOepcOknRLLFdYgTkT5UApt%2FJhLM3jeFYprZV%2BZow2g8fP%2BU68hkKFWJj2yBbKqsrp25xkZX1DAjUw52IMYWaOhab8Kp05VrdNftqwRrymWF4OQSjbdfzmRZirK8FMJELEgER2PHjEAN9pGfLhCUiTJFbd5LBkOBMaxLr%2FA1SY9dXFz4RjzoU9ExfJCmx%2FI9FKEGT3n2cmzl2X42L3Jh%2BAbQq6sA%2BSs1kitoa4TAYgKHaoybHUDJ51oETdeI%2F9ThSmjWGkyLi5QAGWhL0BG1UsTyRGRJOldKBrYJeB8ljLJHfATWTEQBXBDnQexOHTB%2BUn44zExFE4vLytcu5NwpWrUxO%2F0ZICUGM7hGABXym0V6ZvDST0E370St9MIWQOTWngeoQHUTdCJUP04spMBMS8LSker9cReVQkULFDIZDFPrhTzBl6sed9wcZQTbL%2BBDqMyaN3RJPh%2Fanbx%2BIv%2BqgQdAa3M9Z5JmvYlh4qop%2BHo1F1W5gbOE9YKLgAnWytXElU4G8GtW47lhgFE6gaSs%2Bgs37sFvi0PPVvA5dnCBgILTwoKd%2F%2BDoL9F6inlM7H4rOTzD79KJgKlZO%2FZgt22UsKhrAaXU5ZcLrAglTVKJEmNJvORGN1vqrcfSMizfpsgbIe9zno%2BgBoKVXgIL%2FVI8dB1O5o%2FR3Suez%2FgD7M781ShjKpIIORM%2FnxG%2BjjhhgPwsn2IoXsPGPqYHXA63zJ07M2GPEykQwJBYLK808qYxuIew4frk52nhCsnCYmXiR6CuapvE1IwRB4%2FQftDbEn%2BAucIr1oxrLabRj9q4ae0%2BfXkHnteAJwXRbVkR0mctVSwEbqhJiMSZUp9DNbEDMmjX22m3ABpkrPQQTP3S1sib5pD2VRKRd%2BeNAjLYyT0hGrdjWJZy24OYXRoWQAIhGBZRxuBFMjjZQhpgrWo8SiFYbojcHO8V5DyscJpLTHyx9Fimassyo5U6WNtquUMYgccaHY5amgR3PQzq3ToNM5ABnoB9kuxsebqmYZm0R9qxJbFXCQ1UPyFIbxoUraTJFDpCk0Wk9GaYJKz%2F6oHwEP0Q14lMtlddQsOAU9zlYdMVHiT7RQP3XCmWYDcHCGbVRHGnHuwzScA0BaSBOGkz3lM8CArjrBsyEoV6Ys4qgDK3ykQQPZ3hCRGNXQTNNXbEb6tDiTDLKOyMzRhCFT%2BmAUmiYbV3YQVqFVp9dorv%2BTsLeCykS2b5yyu8AV7IS9cxcL8z4Kfwp%2BxJyYLv1OsxQCZwTB4a8BZ%2F5EdxTBJthApqyfd9u3ifr%2FWILTqq5VqgwMT9SOxbSGWLQJUUWCVi4k9tho9nEsbUh7U6NUsLmkYFXOhZ0kmamaJLRNJzSj%2Fqn4Mso6zb6iLLBXoaZ6AqeWCjHQm2lztnejYYM2eubnpBdKVLORZhudH3JF1waBJKA9%2BW8EhMj3Kzf0L4vi4k6RoHh3Z5YgmSZmk6ns4fjScjAoL8GoOECgqgYEBYUGFVO4FUv4%2FYtowhEmTs0vrvlD%2FCrisnoBNDAcUi%2FteY7OctFlmARQzjOItrrlKuPO6E2Ox93L4O%2F4DcgV%2FdZ7qR3VBwVQxP1GCieA4RIpweYJ5FoYrHxqRBdJjnqbsikA2Ictbb8vE1GYIo9dacK0REgDX4smy6GAkxlH1yCGGsk%2BtgiDhNKuKu3yNrMdxafmKTF632F8Vx4BNK57GvlFisrkjN9WDAtjsWA0ENT2e2nETUb%2Fn7qwhvGnrHuf5bX6Vh%2Fn3xffU3PeHdR%2BFA92i6ufT3AlyAREoNDh6chiMWTvjKjHDeRhOa9YkOQRq1vQXEMppAQVwHCuIcV2g5rBn6GmZZpTR7vnSD6ZmhdSl176gqKTXu5E%2BYbfL0adwNtHP7dT7t7b46DVZIkzaRJOM%2BS6KcrzYVg%2BT3wSRFRQashjfU18NutrKa%2F7PXbtuJvpIjbgPeqd%2BpjmRw6YKpnANFSQcpzTZgpSNJ6J7uiagAbir%2F8tNXJ%2FOsOnRh6iuIexxrmkIneAgz8QoLmiaJ8sLQrELVK2yn3wOHp57BAZJhDZjTBzyoRAuuZ4eoxHruY1pSb7qq79cIeAdOwin4GdgMeIMHeG%2BFZWYaiUQQyC5b50zKjYw97dFjAeY2I4Bnl105Iku1y0lMA1ZHolLx19uZnRdILcXKlZGQx%2FGdEqSsMRU1BIrFqRcV1qQOOHyxOLXEGcbRtAEsuAC2V4K3p5mFJ22IDWaEkk9ttf5Izb2LkD1MnrSwztXmmD%2FQi%2FEmVEFBfiKGmftsPwVaIoZanlKndMZsIBOskFYpDOq3QUs9aSbAAtL5Dbokus2G4%2FasthNMK5UQKCOhU97oaOYNGsTah%2BjfCKsZnTRn5TbhFX8ghg8CBYt%2FBjeYYYUrtUZ5jVij%2Fop7V5SsbA4mYTOwZ46hqdpbB6Qvq3AS2HHNkC15pTDIcDNGsMPXaBidXYPHc6PJAkRh29Vx8KcgX46LoUQBhRM%2B3SW6Opll%2FwgxxsPgKJKzr5QCmwkUxNbeg6Wj34SUnEzOemSuvS2OetRCO8Tyy%2BQbSKVJcqkia%2BGvDefFwMOmgnD7h81TUtMn%2BmRpyJJ349HhAnoWFTejhpYTL9G8N2nVg1qkXBeoS9Nw2fB27t7trm7d%2FQK7Cr4uoCeOQ7%2F8JfKT77KiDzLImESHw%2F0wf73QeHu74hxv7uihi4fTX%2BXEwAyQG3264dwv17aJ5N335Vt9sdrAXhPOAv8JFvzqyYXwfx8WYJaef1gMl98JRFyl5Mv5Uo%2FoVH5ww5OzLFsiTPDns7fS6EURSSWd%2F92BxMYQ8sBaH%2Bj%2BwthQPdVgDGpTfi%2BJQIWMD8xKqULliRH01rTeyF8x8q%2FGBEEEBrAJMPf25UQwi0b8tmqRXY7kIvNkzrkvRWLnxoGYEJsz8u4oOyMp8cHyaybb1HdMCaLApUE%2B%2F7xLIZGP6H9xuSEXp1zLIdjk5nBaMuV%2FyTDRRP8Y2ww5RO6d2D94o%2B6ucWIqUAvgHIHXhZsmDhjVLczmZ3ca0Cb3PpKwt2UtHVQ0BgFJsqqTsnzZPlKahRUkEu4qmkJt%2Bkqdae76ViWe3STan69yaF9%2BfESD2lcQshLHWVu4ovItXxO69bqC5p1nZLvI8NdQB9s9UNaJGlQ5mG947ipdDA0eTIw%2FA1zEdjWquIsQXXGIVEH0thC5M%2BW9pZe7IhAVnPJkYCCXN5a32HjN6nsvokEqRS44tGIs7s2LVTvcrHAF%2BRVmI8L4HUYk4x%2B67AxSMJKqCg8zrGOgvK9kNMdDrNiUtSWuHFpC8%2Fp5qIQrEo%2FH%2B1l%2F0cAwQ2nKmpWxKcMIuHY44Y6DlkpO48tRuUGBWT0FyHwSKO72Ud%2BtJUfdaZ4CWNijzZtlRa8%2BCkmO%2FEwHYfPZFU%2FhzjFWH7vnzHRMo%2BaF9u8qHSAiEkA2HjoNQPEwHsDKOt6hOoK3Ce%2F%2B%2F9boMWDa44I6FrQhdgS7OnNaSzwxWKZMcyHi6LN4WC6sSj0qm2PSOGBTvDs%2FGWJS6SwEN%2FULwpb4LQo9fYjUfSXRwZkynUazlSpvX9e%2BG2zor8l%2BYaMxSEomDdLHGcD6YVQPegTaA74H8%2BV4WvJkFUrjMLGLlvSZQWvi8%2FQA7yzQ8GPno%2F%2F5SJHRP%2FOqKObPCo81s%2F%2B6WgLqykYpGAgQZhVDEBPXWgU%2FWzFZjKUhSFInufPRiMAUULC6T11yL45ZrRoB4DzOyJShKXaAJIBS9wzLYIoCEcJKQW8GVCx4fihqJ6mshBUXSw3wWVj3grrHQlGNGhIDNNzsxQ3M%2BGWn6ASobIWC%2BLbYOC6UpahVO13Zs2zOzZC8z7FmA05JhUGyBsF4tsG0drcggIFzgg%2Fkpf3%2BCnAXKiMgIE8Jk%2FMhpkc8DUJEUzDSnWlQFme3d0sHZDrg7LavtsEX3cHwjCYA17pMTfx8Ajw9hHscN67hyo%2BRJQ4458RmPywXykkVcW688oVUrQhahpPRvTWPnuI0B%2BSkQu7dCyvLRyFYlC1LG1gRCIvn3rwQeINzZQC2KXq31FaR9UmVV2QeGVqBHjmE%2BVMd3b1fhCynD0pQNhCG6%2FWCDbKPyE7NRQzL3BzQAJ0g09aUzcQA6mUp9iZFK6Sbp%2FYbHjo%2B%2B7%2FWj8S4YNa%2BZdqAw1hDrKWFXv9%2BzaXpf8ZTDSbiqsxnwN%2FCzK5tPkOr4tRh2kY3Bn9JtalbIOI4b3F7F1vPQMfoDcdxMS8CW9m%2FNCW%2FHILTUVWQIPiD0j1A6bo8vsv6P1hCESl2abrSJWDrq5sSzUpwoxaCU9FtJyYH4QFMxDBpkkBR6kn0LMPO%2B5EJ7Z6bCiRoPedRZ%2FP0SSdii7ZnPAtVwwHUidcdyspwncz5uq6vvm4IEDbJVLUFCn%2FLvIHfooUBTkFO130FC7CmmcrKdgDJcid9mvVzsDSibOoXtIf9k6ABle3PmIxejodc4aob0QKS432srrCMndbfD454q52V01G4q913mC5HOsTzWF4h2No1av1VbcUgWAqyoZl%2B11PoFYnNv2HwAODeNRkHj%2B8SF1fcvVBu6MrehHAZK1Gm69ICcTKizykHgGFx7QdowTVAsYEF2tVc0Z6wLryz2FI1sc5By2znJAAmINndoJiB4sfPdPrTC8RnkW7KRCwxC6YvXg5ahMlQuMpoCSXjOlBy0Kij%2BbsCYPbGp8BdCBiLmLSAkEQRaieWo1SYvZIKJGj9Ur%2FeWHjiB7SOVdqMAVmpBvfRiebsFjger7DC%2B8kRFGtNrTrnnGD2GAJb8rQCWkUPYHhwXsjNBSkE6lGWUj5QNhK0DMNM2l%2BkXRZ0KLZaGsFSIdQz%2FHXDxf3%2FTE30%2BDgBKWGWdxElyLccJfEpjsnszECNoDGZpdwdRgCixeg9L4EPhH%2BRptvRMVRaahu4cySjS3P5wxAUCPkmn%2BrhyASpmiTaiDeggaIxYBmtLZDDhiWIJaBgzfCsAGUF1Q1SFZYyXDt9skCaxJsxK2Ms65dmdp5WAZyxik%2FzbrTQk5KmgxCg%2Ff45L0jywebOWUYFJQAJia7XzCV0x89rpp%2Ff3AVWhSPyTanqmik2SkD8A3Ml4NhIGLAjBXtPShwKYfi2eXtrDuKLk4QlSyTw1ftXgwqA2jUuopDl%2B5tfUWZNwBpEPXghzbBggYCw%2Fdhy0ntds2yeHCDKkF%2FYxQjNIL%2FF%2F37jLPHCKBO9ibwYCmuxImIo0ijV2Wbg3kSN2psoe8IsABv3RNFaF9uMyCtCYtqcD%2BqNOhwMlfARQUdJ2tUX%2BMNJqOwIciWalZsmEjt07tfa8ma4cji9sqz%2BQ9hWfmMoKEbIHPOQORbhQRHIsrTYlnVTNvcq1imqmmPDdVDkJgRcTgB8Sb6epCQVmFZe%2BjGDiNJQLWnfx%2BdrTKYjm0G8yH0ZAGMWzEJhUEQ4Maimgf%2Fbkvo8PLVBsZl152y5S8%2BHRDfZIMCbYZ1WDp4yrdchOJw8k6R%2B%2F2pHmydK4NIK2PHdFPHtoLmHxRDwLFb7eB%2BM4zNZcB9NrAgjVyzLM7xyYSY13ykWfIEEd2n5%2FiYp3ZdrCf7fL%2Ben%2BsIJu2W7E30MrAgZBD1rAAbZHPgeAMtKCg3NpSpYQUDWJu9bT3V7tOKv%2BNRiJc8JAKqqgCA%2FPNRBR7ChpiEulyQApMK1AyqcWnpSOmYh6yLiWkGJ2mklCSPIqN7UypWj3dGi5MvsHQ87MrB4VFgypJaFriaHivwcHIpmyi5LhNqtem4q0n8awM19Qk8BOS0EsqGscuuydYsIGsbT5GHnERUiMpKJl4ON7qjB4fEqlGN%2FhCky89232UQCiaeWpDYCJINXjT6xl4Gc7DxRCtgV0i1ma4RgWLsNtnEBRQFqZggCLiuyEydmFd7WlogpkCw5G1x4ft2psm3KAREwVwr1Gzl6RT7FDAqpVal34ewVm3VH4qn5mjGj%2BbYL1NgfLNeXDwtmYSpwzbruDKpTjOdgiIHDVQSb5%2FzBgSMbHLkxWWgghIh9QTFSDILixVwg0Eg1puooBiHAt7DzwJ7m8i8%2Fi%2BjHvKf0QDnnHVkVTIqMvIQImOrzCJwhSR7qYB5gSwL6aWL9hERHCZc4G2%2BJrpgHNB8eCCmcIWIQ6rSdyPCyftXkDlErUkHafHRlkOIjxGbAktz75bnh50dU7YHk%2BMz7wwstg6RFZb%2BTZuSOx1qqP5C66c0mptQmzIC2dlpte7vZrauAMm%2F7RfBYkGtXWGiaWTtwvAQiq2oD4YixPLXE2khB2FRaNRDTk%2B9sZ6K74Ia9VntCpN4BhJGJMT4Z5c5FhSepRCRWmBXqx%2BwhVZC4me4saDs2iNqXMuCl6iAZflH8fscC1sTsy4PHeC%2BXYuqMBMUun5YezKbRKmEPwuK%2BCLzijPEQgfhahQswBBLfg%2FGBgBiI4QwAqzJkkyYAWtjzSg2ILgMAgqxYfwERRo3zruBL9WOryUArSD8sQOcD7fvIODJxKFS615KFPsb68USBEPPj1orNzFY2xoTtNBVTyzBhPbhFH0PI5AtlJBl2aSgNPYzxYLw7XTDBDinmVoENwiGzmngrMo8OmnRP0Z0i0Zrln9DDFcnmOoBZjABaQIbPOJYZGqX%2BRCMlDDbElcjaROLDoualmUIQ88Kekk3iM4OQrADcxi3rJguS4MOIBIgKgXrjd1WkbCdqxJk%2F4efRIFsavZA7KvvJQqp3Iid5Z0NFc5aiMRzGN3vrpBzaMy4JYde3wr96PjN90AYOIbyp6T4zj8LoE66OGcX1Ef4Z3KoWLAUF4BTg7ug%2FAbkG5UNQXAMkQezujSHeir2uTThgd3gpyzDrbnEdDRH2W7U6PeRvBX1ZFMP5RM%2BZu6UUZZD8hDPHldVWntTCNk7To8IeOW9yn2wx0gmurwqC60AOde4r3ETi5pVMSDK8wxhoGAoEX9NLWHIR33VbrbMveii2jAJlrxwytTHbWNu8Y4N8vCCyZjAX%2FpcsfwXbLze2%2BD%2Bu33OGBoJyAAL3jn3RuEcdp5If8O%2Ba4NKWvxOTyDltG0IWoHhwVGe7dKkCWFT%2B%2Btm%2BhaBCikRUUMrMhYKZJKYoVuv%2FbsJzO8DwfVIInQq3g3BYypiz8baogH3r3GwqCwFtZnz4xMjAVOYnyOi5HWbFA8n0qz1OjSpHWFzpQOpvkNETZBGpxN8ybhtqV%2FDMUxd9uFZmBfKXMCn%2FSqkWJyKPnT6lq%2B4zBZni6fYRByJn6OK%2BOgPBGRAJluwGSk4wxjOOzyce%2FPKODwRlsgrVkdcsEiYrqYdXo0Er2GXi2GQZd0tNJT6c9pK1EEJG1zgDJBoTVuCXGAU8BKTvCO%2FcEQ1Wjk3Zzuy90JX4m3O5IlxVFhYkSUwuQB2up7jhvkm%2BbddRQu5F9s0XftGEJ9JSuSk%2BZachCbdU45fEqbugzTIUokwoAKvpUQF%2FCvLbWW5BNQFqFkJg2f30E%2F48StNe5QwBg8zz3YAJ82FZoXBxXSv4QDooDo79NixyglO9AembuBcx5Re3CwOKTHebOPhkmFC7wNaWtoBhFuV4AkEuJ0J%2B1pT0tLkvFVZaNzfhs%2FKd3%2BA9YsImlO4XK4vpCo%2FelHQi%2F9gkFg07xxnuXLt21unCIpDV%2BbbRxb7FC6nWYTsMFF8%2B1LUg4JFjVt3vqbuhHmDKbgQ4e%2BRGizRiO8ky05LQGMdL2IKLSNar0kNG7lHJMaXr5mLdG3nykgj6vB%2FKVijd1ARWkFEf3yiUw1v%2FWaQivVUpIDdSNrrKbjO5NPnxz6qTTGgYg03HgPhDrCFyYZTi3XQw3HXCva39mpLNFtz8AiEhxAJHpWX13gCTAwgm9YTvMeiqetdNQv6IU0hH0G%2BZManTqDLPjyrOse7WiiwOJCG%2BJ0pZYULhN8NILulmYYvmVcV2MjAfA39sGKqGdjpiPo86fecg65UPyXDIAOyOkCx5NQsLeD4gGVjTVDwOHWkbbBW0GeNjDkcSOn2Nq4cEssP54t9D749A7M1AIOBl0Fi0sSO5v3P7LCBrM6ZwFY6kp2FX6AcbGUdybnfChHPyu6WlRZ2Fwv9YM0RMI7kISRgR8HpQSJJOyTfXj%2F6gQKuihPtiUtlCQVPohUgzfezTg8o1b3n9pNZeco1QucaoXe40Fa5JYhqdTspFmxGtW9h5ezLFZs3j%2FN46f%2BS2rjYNC2JySXrnSAFhvAkz9a5L3pza8eYKHNoPrvBRESpxYPJdKVUxBE39nJ1chrAFpy4MMkf0qKgYALctGg1DQI1kIymyeS2AJNT4X240d3IFQb%2F0jQbaHJ2YRK8A%2Bls6WMhWmpCXYG5jqapGs5%2FeOJErxi2%2F2KWVHiPellTgh%2FfNl%2F2KYPKb7DUcAg%2BmCOPQFCiU9Mq%2FWLcU1xxC8aLePFZZlE%2BPCLzf7ey46INWRw2kcXySR9FDgByXzfxiNKwDFbUSMMhALPFSedyjEVM5442GZ4hTrsAEvZxIieSHGSgkwFh%2FnFNdrrFD4tBH4Il7fW6ur4J8Xaz7RW9jgtuPEXQsYk7gcMs2neu3zJwTyUerHKSh1iTBkj2YJh1SSOZL5pLuQbFFAvyO4k1Hxg2h99MTC6cTUkbONQIAnEfGsGkNFWRbuRyyaEZInM5pij73EA9rPIUfU4XoqQpHT9THZkW%2BoKFLvpyvTBMM69tN1Ydwv1LIEhHsC%2BueVG%2Bw%2BkyCPsvV3erRikcscHjZCkccx6VrBkBRusTDDd8847GA7p2Ucy0y0HdSRN6YIBciYa4vuXcAZbQAuSEmzw%2BH%2FAuOx%2BaH%2BtBL88H57D0MsqyiZxhOEQkF%2F8DR1d2hSPMj%2FsNOa5rxcUnBgH8ictv2J%2Bcb4BA4v3MCShdZ2vtK30vAwkobnEWh7rsSyhmos3WC93Gn9C4nnAd%2FPjMMtQfyDNZsOPd6XcAsnBE%2FmRHtHEyJMzJfZFLE9OvQa0i9kUmToJ0ZxknTgdl%2FXPV8xoh0K7wNHHsnBdvFH3sv52lU7UFteseLG%2FVanIvcwycVA7%2BBE1Ulyb20BvwUWZcMTKhaCcmY3ROpvonVMV4N7yBXTL7IDtHzQ4CCcqF66LjF3xUqgErKzolLyCG6Kb7irP%2FMVTCCwGRxfrPGpMMGvPLgJ881PHMNMIO09T5ig7AzZTX%2F5PLlwnJLDAPfuHynSGhV4tPqR3gJ4kg4c06c%2FF1AcjGytKm2Yb5jwMotF7vro4YDLWlnMIpmPg36NgAZsGA0W1spfLSue4xxat0Gdwd0lqDBOgIaMANykwwDKejt5YaNtJYIkrSgu0KjIg0pznY0SCd1qlC6R19g97UrWDoYJGlrvCE05J%2F5wkjpkre727p5PTRX5FGrSBIfJqhJE%2FIS876PaHFkx9pGTH3oaY3jJRvLX9Iy3Edoar7cFvJqyUlOhAEiOSAyYgVEGkzHdug%2BoRHIEOXAExMiTSKU9A6nmRC8mp8iYhwWdP2U%2F5EkFAdPrZw03YA3gSyNUtMZeh7dDCu8pF5x0VORCTgKp07ehy7NZqKTpIC4UJJ89lnboyAfy5OyXzXtuDRbtAFjZRSyGFTpFrXwkpjSLIQIG3N0Vj4BtzK3wdlkBJrO18MNsgseR4BysJilI0wI6ZahLhBFA0XBmV8d4LUzEcNVb0xbLjLTETYN8OEVqNxkt10W614dd1FlFFVTIgB7%2FBQQp1sWlNolpIu4ekxUTBV7NmxOFKEBmmN%2BnA7pvF78%2FRII5ZHA09OAiE%2F66MF6HQ%2BqVEJCHxwymukkNvzqHEh52dULPbVasfQMgTDyBZzx4007YiKdBuUauQOt27Gmy8ISclPmEUCIcuLbkb1mzQSqIa3iE0PJh7UMYQbkpe%2BhXjTJKdldyt2mVPwywoODGJtBV1lJTgMsuSQBlDMwhEKIfrvsxGQjHPCEfNfMAY2oxvyKcKPUbQySkKG6tj9AQyEW3Q5rpaDJ5Sns9ScLKeizPRbvWYAw4bXkrZdmB7CQopCH8NAmqbuciZChHN8lVGaDbCnmddnqO1PQ4ieMYfcSiBE5zzMz%2BJV%2F4eyzrzTEShvqSGzgWimkNxLvUj86iAwcZuIkqdB0VaIB7wncLRmzHkiUQpPBIXbDDLHBlq7vp9xwuC9AiNkIptAYlG7Biyuk8ILdynuUM1cHWJgeB%2BK3wBP%2FineogxkvBNNQ4AkW0hvpBOQGFfeptF2YTR75MexYDUy7Q%2F9uocGsx41O4IZhViw%2F2FvAEuGO5g2kyXBUijAggWM08bRhXg5ijgMwDJy40QeY%2FcQpUDZiIzmvskQpO5G1zyGZA8WByjIQU4jRoFJt56behxtHUUE%2Fom7Rj2psYXGmq3llVOCgGYKNMo4pzwntITtapDqjvQtqpjaJwjHmDzSVGLxMt12gEXAdLi%2FcaHSM3FPRGRf7dB7YC%2BcD2ho6oL2zGDCkjlf%2FDFoQVl8GS%2F56wur3rdV6ggtzZW60MRB3g%2BU1W8o8cvqIpMkctiGVMzXUFI7FacFLrgtdz4mTEr4aRAaQ2AFQaNeG7GX0yOJgMRYFziXdJf24kg%2FgBQIZMG%2FYcPEllRTVNoDYR6oSJ8wQNLuihfw81UpiKPm714bZX1KYjcXJdfclCUOOpvTxr9AAJevTY4HK%2FG7F3mUc3GOAKqh60zM0v34v%2BELyhJZqhkaMA8UMMOU90f8RKEJFj7EqepBVwsRiLbwMo1J2zrE2UYJnsgIAscDmjPjnzI8a719Wxp757wqmSJBjXowhc46QN4RwKIxqEE6E5218OeK7RfcpGjWG1jD7qND%2B%2FGTk6M56Ig4yMsU6LUW1EWE%2BfIYycVV1thldSlbP6ltdC01y3KUfkobkt2q01YYMmxpKRvh1Z48uNKzP%2FIoRIZ%2FF6buOymSnW8gICitpJjKWBscSb9JJKaWkvEkqinAJ2kowKoqkqZftRqfRQlLtKoqvTRDi2vg%2FRrPD%2Fd3a09J8JhGZlEkOM6znTsoMCsuvTmywxTCDhw5dd0GJOHCMPbsj3QLkTE3MInsZsimDQ3HkvthT7U9VA4s6G07sID0FW4SHJmRGwCl%2BMu4xf0ezqeXD2PtPDnwMPo86sbwDV%2B9PWcgFcARUVYm3hrFQrHcgMElFGbSM2A1zUYA3baWfheJp2AINmTJLuoyYD%2FOwA4a6V0ChBN97E8YtDBerUECv0u0TlxR5yhJCXvJxgyM73Bb6pyq0jTFJDZ4p1Am1SA6sh8nADd1hAcGBMfq4d%2FUfwnmBqe0Jun1n1LzrgKuZMAnxA3NtCN7Klf4BH%2B14B7ibBmgt0TGUafVzI4uKlpF7v8NmgNjg90D6QE3tbx8AjSAC%2BOA1YJvclyPKgT27QpIEgVYpbPYGBsnyCNrGz9XUsCHkW1QAHgL2STZk12QGqmvAB0NFteERkvBIH7INDsNW9KKaAYyDMdBEMzJiWaJHZALqDxQDWRntumSDPcplyFiI1oDpT8wbwe01AHhW6%2BvAUUBoGhY3CT2tgwehdPqU%2F4Q7ZLYvhRl%2FogOvR9O2%2BwkkPKW5vCTjD2fHRYXONCoIl4Jh1bZY0ZE1O94mMGn%2FdFSWBWzQ%2FVYk%2BGezi46RgiDv3EshoTmMSlioUK6MQEN8qeyK6FRninyX8ZPeUWjjbMJChn0n%2FyJvrq5bh5UcCAcBYSafTFg7p0jDgrXo2QWLb3WpSOET%2FHh4oSadBTvyDo10IufLzxiMLAnbZ1vcUmj3w7BQuIXjEZXifwukVxrGa9j%2BDXfpi12m1RbzYLg9J2wFergEwOxFyD0%2FJstNK06ZN2XdZSGWxcJODpQHOq4iKqjqkJUmPu1VczL5xTGUfCgLEYyNBCCbMBFT%2FcUP6pE%2FmujnHsSDeWxMbhrNilS5MyYR0nJyzanWXBeVcEQrRIhQeJA6Xt4f2eQESNeLwmC10WJVHqwx8SSyrtAAjpGjidcj1E2FYN0LObUcFQhafUKTiGmHWRHGsFCB%2BHEXgrzJEB5bp0QiF8ZHh11nFX8AboTD0PS4O1LqF8XBks2MpjsQnwKHF6HgaKCVLJtcr0XjqFMRGfKv8tmmykhLRzu%2BvqQ02%2BKpJBjaLt9ye1Ab%2BBbEBhy4EVdIJDrL2naV0o4wU8YZ2Lq04FG1mWCKC%2BUwkXOoAjneU%2FxHplMQo2cXUlrVNqJYczgYlaOEczVCs%2FOCgkyvLmTmdaBJc1iBLuKwmr6qtRnhowngsDxhzKFAi02tf8bmET8BO27ovJKF1plJwm3b0JpMh38%2BxsrXXg7U74QUM8ZCIMOpXujHntKdaRtsgyEZl5MClMVMMMZkZLNxH9%2Bb8fH6%2Bb8Lev30A9TuEVj9CqAdmwAAHBPbfOBFEATAPZ2CS0OH1Pj%2F0Q7PFUcC8hDrxESWdfgFRm%2B7vvWbkEppHB4T%2F1ApWnlTIqQwjcPl0VgS1yHSmD0OdsCVST8CQVwuiew1Y%2Bg3QGFjNMzwRB2DSsAk26cmA8lp2wIU4p93AUBiUHFGOxOajAqD7Gm6NezNDjYzwLOaSXRBYcWipTSONHjUDXCY4mMI8XoVCR%2FRrs%2FJLKXgEx%2BqkmeDlFOD1%2FyTQNDClRuiUyKYCllfMiQiyFkmuTz2vLsBNyRW%2Bxz%2B5FElFxWB28VjYIGZ0Yd%2B5wIjkcoMaggxswbT0pCmckRAErbRlIlcOGdBo4djTNO8FAgQ%2BlT6vPS60BwTRSUAM3ddkEAZiwtEyArrkiDRnS7LJ%2B2hwbzd2YDQagSgACpsovmjil5wfPuXq3GuH0CyE7FK3M4FgRaFoIkaodORrPx1%2BJpI9psyNYIFuJogZa0%2F1AhOWdlHQxdAgbwacsHqPZo8u%2FngAH2GmaTdhYnBfSDbBfh8CHq6Bx5bttP2%2BRdM%2BMAaYaZ0Y%2FADkbNCZuAyAVQa2OcXOeICmDn9Q%2FeFkDeFQg5MgHEDXq%2FtVjj%2Bjtd26nhaaolWxs1ixSUgOBwrDhRIGOLyOVk2%2FBc0UxvseQCO2pQ2i%2BKrfhu%2FWeBovNb5dJxQtJRUDv2mCwYVpNl2efQM9xQHnK0JwLYt%2FU0Wf%2BphiA4uw8G91slC832pmOTCAoZXohg1fewCZqLBhkOUBofBWpMPsqg7XEXgPfAlDo2U5WXjtFdS87PIqClCK5nW6adCeXPkUiTGx0emOIDQqw1yFYGHEVx20xKjJVYe0O8iLmnQr3FA9nSIQilUKtJ4ZAdcTm7%2BExseJauyqo30hs%2B1qSW211A1SFAOUgDlCGq7eTIcMAeyZkV1SQJ4j%2Fe1Smbq4HcjqgFbLAGLyKxlMDMgZavK5NAYH19Olz3la%2FQCTiVelFnU6O%2FGCvykqS%2FwZJDhKN9gBtSOp%2F1SP5VRgJcoVj%2Bkmf2wBgv4gjrgARBWiURYx8xENV3bEVUAAWWD3dYDKAIWk5opaCFCMR5ZjJExiCAw7gYiSZ2rkyTce4eNMY3lfGn%2B8p6%2BvBckGlKEXnA6Eota69OxDO9oOsJoy28BXOR0UoXNRaJD5ceKdlWMJlOFzDdZNpc05tkMGQtqeNF2lttZqNco1VtwXgRstLSQ6tSPChgqtGV5h2DcDReIQadaNRR6AsAYKL5gSFsCJMgfsaZ7DpKh8mg8Wz8V7H%2BgDnLuMxaWEIUPevIbClgap4dqmVWSrPgVYCzAoZHIa5z2Ocx1D%2FGvDOEqMOKLrMefWIbSWHZ6jbgA8qVBhYNHpx0P%2BjAgN5TB3haSifDcApp6yymEi6Ij%2FGsEpDYUgcHATJUYDUAmC1SCkJ4cuZXSAP2DEpQsGUjQmKJfJOvlC2x%2FpChkOyLW7KEoMYc5FDC4v2FGqSoRWiLsbPCiyg1U5yiHZVm1XLkHMMZL11%2Fyxyw0UnGig3MFdZklN5FI%2FqiT65T%2BjOXOdO7XbgWurOAZR6Cv9uu1cm5LjkXX4xi6mWn5r5NjBS0gTliHhMZI2WNqSiSphEtiCAwnafS11JhseDGHYQ5%2BbqWiAYiAv6Jsf79%2FVUs4cIl%2Bn6%2BWOjcgB%2F2l5TreoAV2717JzZbQIR0W1cl%2FdEqCy5kJ3ZSIHuU0vBoHooEpiHeQWVkkkOqRX27eD1FWw4BfO9CJDdKoSogQi3hAAwsPRFrN5RbX7bqLdBJ9JYMohWrgJKHSjVl1sy2xAG0E3sNyO0oCbSGOxCNBRRXTXenYKuwAoDLfnDcQaCwehUOIDiHAu5m5hMpKeKM4sIo3vxACakIxKoH2YWF2QM84e6F5C5hJU4g8uxuFOlAYnqtwxmHyNEawLW%2FPhoawJDrGAP0JYWHgAVUByo%2FbGdiv2T2EMg8gsS14%2FrAdzlOYazFE7w4OzxeKiWdm3nSOnQRRKXSlVo8HEAbBfyJMKqoq%2BSCcTSx5NDtbFwNlh8VhjGGDu7JG5%2FTAGAvniQSSUog0pNzTim8Owc6QTuSKSTXlQqwV3eiEnklS3LeSXYPXGK2VgeZBqNcHG6tZHvA3vTINhV0ELuQdp3t1y9%2BogD8Kk%2FW7QoRN1UWPqM4%2BxdygkFDPLoTaumKReKiLWoPHOfY54m3qPx4c%2B4pgY3MRKKbljG8w4wvz8pxk3AqKsy4GMAkAtmRjRMsCxbb4Q2Ds0Ia9ci8cMT6DmsJG00XaHCIS%2Bo3F8YVVeikw13w%2BOEDaCYYhC0ZE54kA4jpjruBr5STWeqQG6M74HHL6TZ3lXrd99ZX%2B%2B7LhNatQaZosuxEf5yRA15S9gPeHskBIq3Gcw81AGb9%2FO53DYi%2F5CsQ51EmEh8Rkg4vOciClpy4d04eYsfr6fyQkBmtD%2BP8sNh6e%2BXYHJXT%2FlkXxT4KXU5F2sGxYyzfniMMQkb9OjDN2C8tRRgTyL7GwozH14PrEUZc6oz05Emne3Ts5EG7WolDmU8OB1LDG3VrpQxp%2BpT0KYV5dGtknU64JhabdqcVQbGZiAxQAnvN1u70y1AnmvOSPgLI6uB4AuDGhmAu3ATkJSw7OtS%2F2ToPjqkaq62%2F7WFG8advGlRRqxB9diP07JrXowKR9tpRa%2BjGJ91zxNTT1h8I2PcSfoUPtd7NejVoH03EUcqSBuFZPkMZhegHyo2ZAITovmm3zAIdGFWxoNNORiMRShgwdYwFzkPw5PA4a5MIIQpmq%2Bnsp3YMuXt%2FGkXxLx%2FP6%2BZJS0lFyz4MunC3eWSGE8xlCQrKvhKUPXr0hjpAN9ZK4PfEDrPMfMbGNWcHDzjA7ngMxTPnT7GMHar%2BgMQQ3NwHCv4zH4BIMYvzsdiERi6gebRmerTsVwZJTRsL8dkZgxgRxmpbgRcud%2BYlCIRpPwHShlUSwuipZnx9QCsEWziVazdDeKSYU5CF7UVPAhLer3CgJOQXl%2Fzh575R5rsrmRnKAzq4POFdgbYBuEviM4%2BLVC15ssLNFghbTtHWerS1hDt5s4qkLUha%2FqpZXhWh1C6lTQAqCNQnaDjS7UGFBC6wTu8yFnKJnExCnAs3Ok9yj5KpfZESQ4lTy5pTGTnkAUpxI%2ByjEldJfSo4y0QhG4i4IwkRFGcjWY8%2BEzgYYJUK7BXQksLxAww%2FYYWBMhJILB9e8ePEJ4OP7z%2B4%2FwOQDl64iOYDp26DaONPxpKtBxq%2FaTzRGarm3VkPYTLJKx6Z%2FMw2YbBGseJhPMwhhNswrIkyvV2BYzrvZbxLpKwcWJhYmFtVZ%2BlPEq91FzVp1HlQY1bZVLqeNR9SAUn6n0E28k%2FUuGkNpP1DBI5ch%2FEehZfjUQ9aE41NhETExoPT2gGQz0IhWJbEOvTQ4wgcXCHHFBhewYUiFHuhRSAUVmEHeCRQHQkXGFwkAgyzREJCVN7TRnTon36Zw3tPhx4EALwNdwDv%2BJ41YSP4B2CQqz0EFgARZ4ESgBHQgROwAVn9GTI%2BHYexTUevLUeta4%2FDqKrbMVS%2BYqb8hUwYCrlgKtmAq1YCrFgKrd4qpXiqZcKn1oqdWipjYKpWwVPVYqW6xUpVipKqFR3QKjagVEtAqHpxUMTitsnFaJOKx2cVhswq35RVpyiq9lFVNIKnOQVMkgqtYxVNxiqQjFS7GKlSIVIsQqPIhUWwioigFQ%2B%2BKkN8VHr49HDw9Ebo9EDo9DTo9Crg9BDg9%2FWx7gWx7YWwlobYrOGxWPNisAaAHEyALpkAVDIAeWAArsABVXACYuAD5cAF6wAKFQAQqgAbVAAsoAAlQAUaYAfkwAvogBWQACOgAD9AAHSAAKT4GUdMiOvFngBTwCn2AZ7Dv6B6k%2F90B8%2ByRnkV144AIBoAMTQATGgAjNAA4YABgwABZgB%2FmQCwyAVlwCguASlwCEuAQFwB4uAMlwBYuAJlQAUVAAhUD2KgdpUDaJgaRMDFJgX5MC1JgWJEAokQCWRAHxEAWkQBMRADpEAMkQAYROAEecC484DRpwBDTnwNOdw05tjTmiNOYwtswhYFwLA7BYG4LA2BYGOLAwRYFuLAsxYFQJAohIEyJAMwkAwiQC0JAJgkAeiQBkJAFokAPCQA0JABwcD4Dgc4cDdDgaYcDIDgYgUC6CgWgUClCgUYUAVBQBOFAEYMALgwAgDA9QYAdIn8AZzeBB2L5EcWrenUT1KXienEsuJJ7x5U8XlTjc1NVzUyXFTGb1LlpUtWlTDIjqwE4LsagowoCi2gJLKAkpoBgJQNpAIhNqaEoneI6kiiqQ6Go%2Fn6j0cS%2Ba2gEU8gIHJ%2BBwfgZX4GL%2BBd%2FgW34FZ%2BBS%2FgUH4FN6BTegTvoEv6BJegRnYEF2A79gOvYDl2BdEjCkqkGtwXp0LNToIskOTXzh%2FF062yJ7AAAAEDAWAAABWhJ%2BKPEIJgBFxMVP7w2QJBGHASQnOBKXKFIdUK4igKA9IEaYJg%29%3Bsrc%3Aurl%28data%3Aapplication%2Fvnd%2Ems%2Dfontobject%3Bbase64%2Cn04AAEFNAAACAAIABAAAAAAABQAAAAAAAAABAJABAAAEAExQAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAJxJ%2FLAAAAAAAAAAAAAAAAAAAAAAAACgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAAAADgBSAGUAZwB1AGwAYQByAAAAeABWAGUAcgBzAGkAbwBuACAAMQAuADAAMAA5ADsAUABTACAAMAAwADEALgAwADAAOQA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOAAzADIAOQAAADgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzACAAUgBlAGcAdQBsAGEAcgAAAAAAQlNHUAAAAAAAAAAAAAAAAAAAAAADAKncAE0TAE0ZAEbuFM3pjM%2FSEdmjKHUbyow8ATBE40IvWA3vTu8LiABDQ%2BpexwUMcm1SMnNryctQSiI1K5ZnbOlXKmnVV5YvRe6RnNMFNCOs1KNVpn6yZhCJkRtVRNzEufeIq7HgSrcx4S8h%2Fv4vnrrKc6oCNxmSk2uKlZQHBii6iKFoH0746ThvkO1kJHlxjrkxs%2BLWORaDQBEtiYJIR5IB9Bi1UyL4Rmr0BNigNkMzlKQmnofBHviqVzUxwdMb3NdCn69hy%2BpRYVKGVS%2F1tnsqv4LL7wCCPZZAZPT4aCShHjHJVNuXbmMrY5LeQaGnvAkXlVrJgKRAUdFjrWEah9XebPeQMj7KS7DIBAFt8ycgC5PLGUOHSE3ErGZCiViNLL5ZARfywnCoZaKQCu6NuFX42AEeKtKUGnr%2FCm2Cy8tpFhBPMW5Fxi4Qm4TkDWh4IWFDClhU2hRWosUWqcKLlgyXB%2BlSHaWaHiWlBAR8SeSgSPCQxdVQgzUixWKSTrIQEbU94viDctkvX%2BVSjJuUmV8L4CXShI11esnp0pjWNZIyxKHS4wVQ2ime1P4RnhvGw0aDN1OLAXGERsB7buFpFGGBAre4QEQR0HOIO5oYH305G%2BKspT%2FFupEGGafCCwxSe6ZUa%2B073rXHnNdVXE6eWvibUS27XtRzkH838mYLMBmYysZTM0EM3A1fbpCBYFccN1B%2FEnCYu%2FTgCGmr7bMh8GfYL%2BBfcLvB0gRagC09w9elfldaIy%2FhNCBLRgBgtCC7jAF63wLSMAfbfAlEggYU0bUA7ACCJmTDpEmJtI78w4%2FBO7dN7JR7J7ZvbYaUbaILSQsRBiF3HGk5fEg6p9unwLvn98r%2BvnsV%2B372uf1xBLq4qU%2F45fTuqaAP%2BpssmCCCTF0mhEow8ZXZOS8D7Q85JsxZ%2BAzok7B7O%2Ff6J8AzYBySZQB%2FQHYUSA%2BEeQhEWiS6AIQzgcsDiER4MjgMBAWDV4AgQ3g1eBgIdweCQmCjJEMkJ%2BPKRWyFHHmg1Wi%2F6xzUgA0LREoKJChwnQa9B%2B5RQZRB3IlBlkAnxyQNaANwHMowzlYSMCBgnbpzvqpl0iTJNCQidDI9ZrSYNIRBhHtUa5YHMHxyGEik9hDE0AKj72AbTCaxtHPUaKZdAZSnQTyjGqGLsmBStCejApUhg4uBMU6mATujEl%2BKdDPbI6Ag4vLr%2BhjY6lbjBeoLKnZl0UZgRX8gTySOeynZVz1wOq7e1hFGYIq%2BMhrGxDLak0PrwYzSXtcuyhXEhwOYofiW%2BEcI%2Fjw8P6IY6ed%2BetAbuqKp5QIapT77LnAe505lMuqL79a0ut4rWexzFttsOsLDy7zvtQzcq3U1qabe7tB0wHWVXji%2BzDbo8x8HyIRUbXnwUcklFv51fvTymiV%2BMXLSmGH9d9%2BaXpD5X6lao41anWGig7IwIdnoBY2ht%2FpO9mClLo4NdXHAsefqWUKlXJkbqPOFhMoR4aiA1BXqhRNbB2Xwi%2B7u%2FjpAoOpKJ0UX24EsrzMfHXViakCNcKjBxuQX8BO0ZqjJ3xXzf%2B61t2VXOSgJ8xu65QKgtN6FibPmPYsXbJRHHqbgATcSZxBqGiDiU4NNNsYBsKD0MIP%2FOfKnlk%2FLkaid%2FO2NbKeuQrwOB2Gq3YHyr6ALgzym5wIBnsdC1ZkoBFZSQXChZvlesPqvK2c5oHHT3Q65jYpNxnQcGF0EHbvYqoFw60WNlXIHQF2HQB7zD6lWjZ9rVqUKBXUT6hrkZOle0RFYII0V5ZYGl1JAP0Ud1fZZMvSomBzJ710j4Me8mjQDwEre5Uv2wQfk1ifDwb5ksuJQQ3xt423lbuQjvoIQByQrNDh1JxGFkOdlJvu%2FgFtuW0wR4cgd%2BZKesSV7QkNE2kw6AV4hoIuC02LGmTomyf8PiO6CZzOTLTPQ%2BHW06H%2Btx%2BbQ8LmDYg1pTFrp2oJXgkZTyeRJZM0C8aE2LpFrNVDuhARsN543%2FFV6klQ6Tv1OoZGXLv0igKrl%2FCmJxRmX7JJbJ998VSIPQRyDBICzl4JJlYHbdql30NvYcOuZ7a10uWRrgoieOdgIm4rlq6vNOQBuqESLbXG5lzdJGHw2m0sDYmODXbYGTfSTGRKpssTO95fothJCjUGQgEL4yKoGAF%2F0SrpUDNn8CBgBcSDQByAeNkCXp4S4Ro2Xh4OeaGRgR66PVOsU8bc6TR5%2FxTcn4IVMLOkXSWiXxkZQCbvKfmoAvQaKjO3EDKwkwqHChCDEM5loQRPd5ACBki1TjF772oaQhQbQ5C0lcWXPFOzrfsDGUXGrpxasbG4iab6eByaQkQfm0VFlP0ZsDkvvqCL6QXMUwCjdMx1ZOyKhTJ7a1GWAdOUcJ8RSejxNVyGs31OKMyRyBVoZFjqIkmKlLQ5eHMeEL4MkUf23cQ%2F1SgRCJ1dk4UdBT7OoyuNgLs0oCd8RnrEIb6QdMxT2QjD4zMrJkfgx5aDMcA4orsTtKCqWb%2FVeyceqa5OGSmB28YwH4rFbkQaLoUN8OQQYnD3w2eXpI4ScQfbCUZiJ4yMOIKLyyTc7BQ4uXUw6Ee6%2FxM%2B4Y67ngNBknxIPwuppgIhFcwJyr6EIj%2BLzNj%2FmfR2vhhRlx0BILZoAYruF0caWQ7YxO66UmeguDREAFHYuC7HJviRgVO6ruJH59h%2FC%2FPkgSle8xNzZJULLWq9JMDTE2fjGE146a1Us6PZDGYle6ldWRqn%2FpdpgHKNGrGIdkRK%2BKPETT9nKT6kLyDI8xd9A1FgWmXWRAIHwZ37WyZHOVyCadJEmMVz0MadMjDrPho%2BEIochkVC2xgGiwwsQ6DMv2P7UXqT4x7CdcYGId2BJQQa85EQKmCmwcRejQ9Bm4oATENFPkxPXILHpMPUyWTI5rjNOsIlmEeMbcOCEqInpXACYQ9DDxmFo9vcmsDblcMtg4tqBerNngkIKaFJmrQAPnq1dEzsMXcwjcHdfdCibcAxxA%2Bq%2Fj9m3LM%2FO7WJka4tSidVCjsvo2lQ%2F2ewyoYyXwAYyr2PlRoR5MpgVmSUIrM3PQxXPbgjBOaDQFIyFMJvx3Pc5RSYj12ySVF9fwFPQu2e2KWVoL9q3Ayv3IzpGHUdvdPdrNUdicjsTQ2ISy7QU3DrEytIjvbzJnAkmANXjAFERA0MUoPF3%2F5KFmW14bBNOhwircYgMqoDpUMcDtCmBE82QM2YtdjVLB4kBuKho%2FbcwQdeboqfQartuU3CsCf%2BcXkgYAqp%2F0Ee3RorAZt0AvvOCSI4JICIlGlsV0bsSid%2FNIEALAAzb6HAgyWHBps6xAOwkJIGcB82CxRQq4sJf3FzA70A%2BTRqcqjEMETCoez3mkPcpnoALs0ugJY8kQwrC%2BJE5ik3w9rzrvDRjAQnqgEVvdGrNwlanR0SOKWzxOJOvLJhcd8Cl4AshACUkv9czdMkJCVQSQhp6kp7StAlpVRpK0t0SW6LHeBJnE2QchB5Ccu8kxRghZXGIgZIiSj7gEKMJDClcnX6hgoqJMwiQDigIXg3ioFLCgDgjPtYHYpsF5EiA4kcnN18MZtOrY866dEQAb0FB34OGKHGZQjwW%2FWDHA60cYFaI%2FPjpzquUqdaYGcIq%2BmLez3WLFFCtNBN2QJcrlcoELgiPku5R5dSlJFaCEqEZle1AQzAKC%2B1SotMcBNyQUFuRHRF6OlimSBgjZeTBCwLyc6A%2BP%2FoFRchXTz5ADknYJHxzrJ5pGuIKRQISU6WyKTBBjD8WozmVYWIsto1AS5rxzKlvJu4E%2FvwOiKxRtCWsDM%2BeTHUrmwrCK5BIfMzGkD%2B0Fk5LzBs0jMYXktNDblB06LMNJ09U8pzSLmo14MS0OMjcdrZ31pyQqxJJpRImlSvfYAK8inkYU52QY2FPEVsjoWewpwhRp5yAuNpkqhdb7ku9Seefl2D0B8SMTFD90xi4CSOwwZy9IKkpMtI3FmFUg3%2FkFutpQGNc3pCR7gvC4sgwbupDu3DyEN%2BW6YGLNM21jpB49irxy9BSlHrVDlnihGKHwPrbVFtc%2Bh1rVQKZduxIyojccZIIcOCmhEnC7UkY68WXKQgLi2JCDQkQWJRQuk60hZp0D3rtCTINSeY9Ej2kIKYfGxwOs4j9qMM7fYZiipzgcf7TamnehqdhsiMiCawXnz4xAbyCkLAx5EGbo3Ax1u3dUIKnTxIaxwQTHehPl3V491H0%2BbC5zgpGz7Io%2BmjdhKlPJ01EeMpM7UsRJMi1nGjmJg35i6bQBAAxjO%2FENJubU2mg3ONySEoWklCwdABETcs7ck3jgiuU9pcKKpbgn%2B3YlzV1FzIkB6pmEDOSSyDfPPlQskznctFji0kpgZjW5RZe6x9kYT4KJcXg0bNiCyif%2BpZACCyRMmYsfiKmN9tSO65F0R2OO6ytlEhY5Sj6uRKfFxw0ijJaAx%2Fk3QgnAFSq27%2F2i4GEBA%2BUvTJKK%2F9eISNvG46Em5RZfjTYLdeD8kdXHyrwId%2FDQZUaMCY4gGbke2C8vfjgV%2FY9kkRQOJIn%2FxM9INZSpiBnqX0Q9GlQPpPKAyO5y%2BW5NMPSRdBCUlmuxl40ZfMCnf2Cp044uI9WLFtCi4YVxKjuRCOBWIb4XbIsGdbo4qtMQnNOQz4XDSui7W%2FN6l54qOynCqD3DpWQ%2BmpD7C40D8BZEWGJX3tlAaZBMj1yjvDYKwCJBa201u6nBKE5UE%2B7QSEhCwrXfbRZylAaAkplhBWX50dumrElePyNMRYUrC99UmcSSNgImhFhDI4BXjMtiqkgizUGCrZ8iwFxU6fQ8GEHCFdLewwxYWxgScAYMdMLmcZR6b7rZl95eQVDGVoUKcRMM1ixXQtXNkBETZkVVPg8LoSrdetHzkuM7DjZRHP02tCxA1fmkXKF3VzfN1pc1cv%2F8lbTIkkYpqKM9VOhp65ktYk%2BQ46myFWBapDfyWUCnsnI00QTBQmuFjMZTcd0V2NQ768Fhpby04k2IzNR1wKabuGJqYWwSly6ocMFGTeeI%2BejsWDYgEvr66QgqdcIbFYDNgsm0x9UHY6SCd5%2B7tpsLpKdvhahIDyYmEJQCqMqtCF6UlrE5GXRmbu%2Bvtm3BFSxI6ND6UxIE7GsGMgWqghXxSnaRJuGFveTcK5ZVSPJyjUxe1dKgI6kNF7EZhIZs8y8FVqwEfbM0Xk2ltORVDKZZM40SD3qQoQe0orJEKwPfZwm3YPqwixhUMOndis6MhbmfvLBKjC8sKKIZKbJk8L11oNkCQzCgvjhyyEiQSuJcgCQSG4Mocfgc0Hkwcjal1UNgP0CBPikYqBIk9tONv4kLtBswH07vUCjEaHiFGlLf8MgXKzSgjp2HolRRccAOh0ILHz9qlGgIFkwAnzHJRjWFhlA7ROwINyB5HFj59PRZHFor6voq7l23EPNRwdWhgawqbivLSjRA4htEYUFkjESu67icTg5S0aW1sOkCiIysfJ9UnIWevOOLGpepcBxy1wEhd2WI3AZg7sr9WBmHWyasxMcvY%2FiOmsLtHSWNUWEGk9hScMPShasUA1AcHOtRZlqMeQ0OzYS9vQvYUjOLrzP07BUAFikcJNMi7gIxEw4pL1G54TcmmmoAQ5s7TGWErJZ2Io4yQ0ljRYhL8H5e62oDtLF8aDpnIvZ5R3GWJyAugdiiJW9hQAVTsnCBHhwu7rkBlBX6r3b7ejEY0k5GGeyKv66v%2B6dg7mcJTrWHbtMywbedYqCQ0FPwoytmSWsL8WTtChZCKKzEF7vP6De4x2BJkkniMgSdWhbeBSLtJZR9CTHetK1xb34AYIJ37OegYIoPVbXgJ%2FqDQK%2BbfCtxQRVKQu77WzOoM6SGL7MaZwCGJVk46aImai9fmam%2BWpHG%2B0BtQPWUgZ7RIAlPq6lkECUhZQ2gqWkMYKcYMYaIc4gYCDFHYa2d1nzp3%2BJ1eCBay8IYZ0wQRKGAqvCuZ%2FUgbQPyllosq%2BXtfKIZOzmeJqRazpmmoP%2F76YfkjzV2NlXTDSBYB04SVlNQsFTbGPk1t%2FI4Jktu0XSgifO2ozFOiwd%2F0SssJDn0dn4xqk4GDTTKX73%2FwQyBLdqgJ%2BWx6AQaba3BA9CKEzjtQYIfAsiYamapq80LAamYjinlKXUkxdpIDk0puXUEYzSalfRibAeDAKpNiqQ0FTwoxuGYzRnisyTotdVTclis1LHRQCy%2FqqL8oUaQzWRxilq5Mi0IJGtMY02cGLD69vGjkj3p6pGePKI8bkBv5evq8SjjyU04vJR2cQXQwSJyoinDsUJHCQ50jrFTT7yRdbdYQMB3MYCb6uBzJ9ewhXYPAIZSXfeEQBZZ3GPN3Nbhh%2FwkvAJLXnQMdi5NYYZ5GHE400GS5rXkOZSQsdZgIbzRnF9ueLnsfQ47wHAsirITnTlkCcuWWIUhJSbpM3wWhXNHvt2xUsKKMpdBSbJnBMcihkoDqAd1Zml%2FR4yrzow1Q2A5G%2Bkzo%2FRhRxQS2lCSDRV8LlYLBOOoo1bF4jwJAwKMK1tWLHlu9i0j4Ig8qVm6wE1DxXwAwQwsaBWUg2pOOol2dHxyt6npwJEdLDDVYyRc2D0HbcbLUJQj8gPevQBUBOUHXPrsAPBERICpnYESeu2OHotpXQxRGlCCtLdIsu23MhZVEoJg8Qumj%2FUMMc34IBqTKLDTp76WzL%2FdMjCxK7MjhiGjeYAC%2Fkj%2FjY%2FRde7hpSM1xChrog6yZ7OWTuD56xBJnGFE%2BpT2ElSyCnJcwVzCjkqeNLfMEJqKW0G7OFIp0G%2B9mh50I9o8k1tpCY0xYqFNIALgIfc2me4n1bmJnRZ89oepgLPT0NTMLNZsvSCZAc3TXaNB07vail36%2FdBySis4m9%2FDR8izaLJW6bWCkVgm5T%2Bius3ZXq4xI%2BGnbveLbdRwF2mNtsrE0JjYc1AXknCOrLSu7Te%2Fr4dPYMCl5qtiHNTn%2BTPbh1jCBHH%2BdMJNhwNgs3nT%2BOhQoQ0vYif56BMG6WowAcHR3DjQolxLzyVekHj00PBAaW7IIAF1EF%2BuRIWyXjQMAs2chdpaKPNaB%2BkSezYt0%2BCA04sOg5vx8Fr7Ofa9sUv87h7SLAUFSzbetCCZ9pmyLt6l6%2FTzoA1%2FZBG9bIUVHLAbi%2FkdBFgYGyGwRQGBpkqCEg2ah9UD6EedEcEL3j4y0BQQCiExEnocA3SZboh%2Bepgd3YsOkHskZwPuQ5OoyA0fTA5AXrHcUOQF%2BzkJHIA7PwCDk1gGVmGUZSSoPhNf%2BTklauz98QofOlCIQ%2FtCD4dosHYPqtPCXB3agggQQIqQJsSkB%2Bqn0rkQ1toJjON%2FOtCIB9RYv3PqRA4C4U68ZMlZn6BdgEvi2ziU%2BTQ6NIw3ej%2BAtDwMGEZk7e2IjxUWKdAxyaw9OCwSmeADTPPleyk6UhGDNXQb%2B%2BW6Uk4q6F7%2Frg6WVTo82IoCxSIsFDrav4EPHphD3u4hR53WKVvYZUwNCCeM4PMBWzK%2BEfIthZOkuAwPo5C5jgoZgn6dUdvx5rIDmd58cXXdKNfw3l%2BwM2UjgrDJeQHhbD7HW2QDoZMCujgIUkk5Fg8VCsdyjOtnGRx8wgKRPZN5dR0zPUyfGZFVihbFRniXZFOZGKPnEQzU3AnD1KfR6weHW2XS6KbPJxUkOTZsAB9vTVp3Le1F8q5l%2BDMcLiIq78jxAImD2pGFw0VHfRatScGlK6SMu8leTmhUSMy8Uhdd6xBiH3Gdman4tjQGLboJfqz6fL2WKHTmrfsKZRYX6BTDjDldKMosaSTLdQS7oDisJNqAUhw1PfTlnacCO8vl8706Km1FROgLDmudzxg%2BEWTiArtHgLsRrAXYWdB0NmToNCJdKm0KWycZQqb%2BMw76Qy29iQ5up%2FX7oyw8QZ75kP5F6iJAJz6KCmqxz8fEa%2FxnsMYcIO%2FvEkGRuMckhr4rIeLrKaXnmIzlNLxbFspOphkcnJdnz%2FChp%2FVlpj2P7jJQmQRwGnltkTV5dbF9fE3%2FfxoSqTROgq9wFUlbuYzYcasE0ouzBo%2BdDCDzxKAfhbAZYxQiHrLzV2iVexnDX%2FQnT1fsT%2Fxuhu1ui5qIytgbGmRoQkeQooO8eJNNZsf0iALur8QxZFH0nCMnjerYQqG1pIfjyVZWxhVRznmmfLG00BcBWJE6hzQWRyFknuJnXuk8A5FRDCulwrWASSNoBtR%2BCtGdkPwYN2o7DOw%2FVGlCZPusRBFXODQdUM5zeHDIVuAJBLqbO%2Ff9Qua%2BpDqEPk230Sob9lEZ8BHiCorjVghuI0lI4JDgHGRDD%2FprQ84B1pVGkIpVUAHCG%2Biz3Bn3qm2AVrYcYWhock4jso5%2BJ7HfHVj4WMIQdGctq3psBCVVzupQOEioBGA2Bk%2BUILT7%2BVoX5mdxxA5fS42gISQVi%2FHTzrgMxu0fY6hE1ocUwwbsbWcezrY2n6S8%2F6cxXkOH4prpmPuFoikTzY7T85C4T2XYlbxLglSv2uLCgFv8Quk%2FwdesUdWPeHYIH0R729JIisN9Apdd4eB10aqwXrPt%2BSu9mA8k8n1sjMwnfsfF2j3jMUzXepSHmZ%2FBfqXvzgUNQQWOXO8YEuFBh4QTYCkOAPxywpYu1VxiDyJmKVcmJPGWk%2Fgc3Pov02StyYDahwmzw3E1gYC9wkupyWfDqDSUMpCTH5e5N8B%2F%2FlHiMuIkTNw4USHrJU67bjXGqNav6PBuQSoqTxc8avHoGmvqNtXzIaoyMIQIiiUHIM64cXieouplhNYln7qgc4wBVAYR104kO%2BCvKqsg4yIUlFNThVUAKZxZt1XA34h3TCUUiXVkZ0w8Hh2R0Z5L0b4LZvPd%2Fp1gi%2F07h8qfwHrByuSxglc9cI4QIg2oqvC%2Fqm0i7tjPLTgDhoWTAKDO2ONW5oe%2B%2FeKB9vZB8K6C25yCZ9RFVMnb6NRdRjyVK57CHHSkJBfnM2%2Fj4ODUwRkqrtBBCrDsDpt8jhZdXoy%2F1BCqw3sSGhgGGy0a5Jw6BP%2FTExoCmNFYjZl248A0osgPyGEmRA%2BfAsqPVaNAfytu0vuQJ7rk3J4kTDTR2AlCHJ5cls26opZM4w3jMULh2YXKpcqGBtuleAlOZnaZGbD6DHzMd6i2oFeJ8z9XYmalg1Szd%2FocZDc1C7Y6vcALJz2lYnTXiWEr2wawtoR4g3jvWUU2Ngjd1cewtFzEvM1NiHZPeLlIXFbBPawxNgMwwAlyNSuGF3zizVeOoC9bag1qRAQKQE%2FEZBWC2J8mnXAN2aTBboZ7HewnObE8CwROudZHmUM5oZ%2FUgd%2FJZQK8lvAm43uDRAbyW8gZ%2BZGq0EVerVGUKUSm%2FIdn8AQHdR4m7bue88WBwft9mSCeMOt1ncBwziOmJYI2ZR7ewNMPiCugmSsE4EyQ%2BQATJG6qORMGd4snEzc6B4shPIo4G1T7PgSm8PY5eUkPdF8JZ0VBtadbHXoJgnEhZQaODPj2gpODKJY5Yp4DOsLBFxWbvXN755KWylJm%2BoOd4zEL9Hpubuy2gyyfxh8oEfFutnYWdfB8PdESLWYvSqbElP9qo3u6KTmkhoacDauMNNjj0oy40DFV7Ql0aZj77xfGl7TJNHnIwgqOkenruYYNo6h724%2BzUQ7%2BvkCpZB%2BpGA562hYQiDxHVWOq0oDQl%2FQsoiY%2BcuI7iWq%2FZIBtHcXJ7kks%2Bh2fCNUPA82BzjnqktNts%2BRLdk1VSu%2BtqEn7QZCCsvEqk6FkfiOYkrsw092J8jsfIuEKypNjLxrKA9kiA19mxBD2suxQKCzwXGws7kEJvlhUiV9tArLIdZW0IORcxEzdzKmjtFhsjKy%2F44XYXdI5noQoRcvjZ1RMPACRqYg2V1%2BOwOepcOknRLLFdYgTkT5UApt%2FJhLM3jeFYprZV%2BZow2g8fP%2BU68hkKFWJj2yBbKqsrp25xkZX1DAjUw52IMYWaOhab8Kp05VrdNftqwRrymWF4OQSjbdfzmRZirK8FMJELEgER2PHjEAN9pGfLhCUiTJFbd5LBkOBMaxLr%2FA1SY9dXFz4RjzoU9ExfJCmx%2FI9FKEGT3n2cmzl2X42L3Jh%2BAbQq6sA%2BSs1kitoa4TAYgKHaoybHUDJ51oETdeI%2F9ThSmjWGkyLi5QAGWhL0BG1UsTyRGRJOldKBrYJeB8ljLJHfATWTEQBXBDnQexOHTB%2BUn44zExFE4vLytcu5NwpWrUxO%2F0ZICUGM7hGABXym0V6ZvDST0E370St9MIWQOTWngeoQHUTdCJUP04spMBMS8LSker9cReVQkULFDIZDFPrhTzBl6sed9wcZQTbL%2BBDqMyaN3RJPh%2Fanbx%2BIv%2BqgQdAa3M9Z5JmvYlh4qop%2BHo1F1W5gbOE9YKLgAnWytXElU4G8GtW47lhgFE6gaSs%2Bgs37sFvi0PPVvA5dnCBgILTwoKd%2F%2BDoL9F6inlM7H4rOTzD79KJgKlZO%2FZgt22UsKhrAaXU5ZcLrAglTVKJEmNJvORGN1vqrcfSMizfpsgbIe9zno%2BgBoKVXgIL%2FVI8dB1O5o%2FR3Suez%2FgD7M781ShjKpIIORM%2FnxG%2BjjhhgPwsn2IoXsPGPqYHXA63zJ07M2GPEykQwJBYLK808qYxuIew4frk52nhCsnCYmXiR6CuapvE1IwRB4%2FQftDbEn%2BAucIr1oxrLabRj9q4ae0%2BfXkHnteAJwXRbVkR0mctVSwEbqhJiMSZUp9DNbEDMmjX22m3ABpkrPQQTP3S1sib5pD2VRKRd%2BeNAjLYyT0hGrdjWJZy24OYXRoWQAIhGBZRxuBFMjjZQhpgrWo8SiFYbojcHO8V5DyscJpLTHyx9Fimassyo5U6WNtquUMYgccaHY5amgR3PQzq3ToNM5ABnoB9kuxsebqmYZm0R9qxJbFXCQ1UPyFIbxoUraTJFDpCk0Wk9GaYJKz%2F6oHwEP0Q14lMtlddQsOAU9zlYdMVHiT7RQP3XCmWYDcHCGbVRHGnHuwzScA0BaSBOGkz3lM8CArjrBsyEoV6Ys4qgDK3ykQQPZ3hCRGNXQTNNXbEb6tDiTDLKOyMzRhCFT%2BmAUmiYbV3YQVqFVp9dorv%2BTsLeCykS2b5yyu8AV7IS9cxcL8z4Kfwp%2BxJyYLv1OsxQCZwTB4a8BZ%2F5EdxTBJthApqyfd9u3ifr%2FWILTqq5VqgwMT9SOxbSGWLQJUUWCVi4k9tho9nEsbUh7U6NUsLmkYFXOhZ0kmamaJLRNJzSj%2Fqn4Mso6zb6iLLBXoaZ6AqeWCjHQm2lztnejYYM2eubnpBdKVLORZhudH3JF1waBJKA9%2BW8EhMj3Kzf0L4vi4k6RoHh3Z5YgmSZmk6ns4fjScjAoL8GoOECgqgYEBYUGFVO4FUv4%2FYtowhEmTs0vrvlD%2FCrisnoBNDAcUi%2FteY7OctFlmARQzjOItrrlKuPO6E2Ox93L4O%2F4DcgV%2FdZ7qR3VBwVQxP1GCieA4RIpweYJ5FoYrHxqRBdJjnqbsikA2Ictbb8vE1GYIo9dacK0REgDX4smy6GAkxlH1yCGGsk%2BtgiDhNKuKu3yNrMdxafmKTF632F8Vx4BNK57GvlFisrkjN9WDAtjsWA0ENT2e2nETUb%2Fn7qwhvGnrHuf5bX6Vh%2Fn3xffU3PeHdR%2BFA92i6ufT3AlyAREoNDh6chiMWTvjKjHDeRhOa9YkOQRq1vQXEMppAQVwHCuIcV2g5rBn6GmZZpTR7vnSD6ZmhdSl176gqKTXu5E%2BYbfL0adwNtHP7dT7t7b46DVZIkzaRJOM%2BS6KcrzYVg%2BT3wSRFRQashjfU18NutrKa%2F7PXbtuJvpIjbgPeqd%2BpjmRw6YKpnANFSQcpzTZgpSNJ6J7uiagAbir%2F8tNXJ%2FOsOnRh6iuIexxrmkIneAgz8QoLmiaJ8sLQrELVK2yn3wOHp57BAZJhDZjTBzyoRAuuZ4eoxHruY1pSb7qq79cIeAdOwin4GdgMeIMHeG%2BFZWYaiUQQyC5b50zKjYw97dFjAeY2I4Bnl105Iku1y0lMA1ZHolLx19uZnRdILcXKlZGQx%2FGdEqSsMRU1BIrFqRcV1qQOOHyxOLXEGcbRtAEsuAC2V4K3p5mFJ22IDWaEkk9ttf5Izb2LkD1MnrSwztXmmD%2FQi%2FEmVEFBfiKGmftsPwVaIoZanlKndMZsIBOskFYpDOq3QUs9aSbAAtL5Dbokus2G4%2FasthNMK5UQKCOhU97oaOYNGsTah%2BjfCKsZnTRn5TbhFX8ghg8CBYt%2FBjeYYYUrtUZ5jVij%2Fop7V5SsbA4mYTOwZ46hqdpbB6Qvq3AS2HHNkC15pTDIcDNGsMPXaBidXYPHc6PJAkRh29Vx8KcgX46LoUQBhRM%2B3SW6Opll%2FwgxxsPgKJKzr5QCmwkUxNbeg6Wj34SUnEzOemSuvS2OetRCO8Tyy%2BQbSKVJcqkia%2BGvDefFwMOmgnD7h81TUtMn%2BmRpyJJ349HhAnoWFTejhpYTL9G8N2nVg1qkXBeoS9Nw2fB27t7trm7d%2FQK7Cr4uoCeOQ7%2F8JfKT77KiDzLImESHw%2F0wf73QeHu74hxv7uihi4fTX%2BXEwAyQG3264dwv17aJ5N335Vt9sdrAXhPOAv8JFvzqyYXwfx8WYJaef1gMl98JRFyl5Mv5Uo%2FoVH5ww5OzLFsiTPDns7fS6EURSSWd%2F92BxMYQ8sBaH%2Bj%2BwthQPdVgDGpTfi%2BJQIWMD8xKqULliRH01rTeyF8x8q%2FGBEEEBrAJMPf25UQwi0b8tmqRXY7kIvNkzrkvRWLnxoGYEJsz8u4oOyMp8cHyaybb1HdMCaLApUE%2B%2F7xLIZGP6H9xuSEXp1zLIdjk5nBaMuV%2FyTDRRP8Y2ww5RO6d2D94o%2B6ucWIqUAvgHIHXhZsmDhjVLczmZ3ca0Cb3PpKwt2UtHVQ0BgFJsqqTsnzZPlKahRUkEu4qmkJt%2Bkqdae76ViWe3STan69yaF9%2BfESD2lcQshLHWVu4ovItXxO69bqC5p1nZLvI8NdQB9s9UNaJGlQ5mG947ipdDA0eTIw%2FA1zEdjWquIsQXXGIVEH0thC5M%2BW9pZe7IhAVnPJkYCCXN5a32HjN6nsvokEqRS44tGIs7s2LVTvcrHAF%2BRVmI8L4HUYk4x%2B67AxSMJKqCg8zrGOgvK9kNMdDrNiUtSWuHFpC8%2Fp5qIQrEo%2FH%2B1l%2F0cAwQ2nKmpWxKcMIuHY44Y6DlkpO48tRuUGBWT0FyHwSKO72Ud%2BtJUfdaZ4CWNijzZtlRa8%2BCkmO%2FEwHYfPZFU%2FhzjFWH7vnzHRMo%2BaF9u8qHSAiEkA2HjoNQPEwHsDKOt6hOoK3Ce%2F%2B%2F9boMWDa44I6FrQhdgS7OnNaSzwxWKZMcyHi6LN4WC6sSj0qm2PSOGBTvDs%2FGWJS6SwEN%2FULwpb4LQo9fYjUfSXRwZkynUazlSpvX9e%2BG2zor8l%2BYaMxSEomDdLHGcD6YVQPegTaA74H8%2BV4WvJkFUrjMLGLlvSZQWvi8%2FQA7yzQ8GPno%2F%2F5SJHRP%2FOqKObPCo81s%2F%2B6WgLqykYpGAgQZhVDEBPXWgU%2FWzFZjKUhSFInufPRiMAUULC6T11yL45ZrRoB4DzOyJShKXaAJIBS9wzLYIoCEcJKQW8GVCx4fihqJ6mshBUXSw3wWVj3grrHQlGNGhIDNNzsxQ3M%2BGWn6ASobIWC%2BLbYOC6UpahVO13Zs2zOzZC8z7FmA05JhUGyBsF4tsG0drcggIFzgg%2Fkpf3%2BCnAXKiMgIE8Jk%2FMhpkc8DUJEUzDSnWlQFme3d0sHZDrg7LavtsEX3cHwjCYA17pMTfx8Ajw9hHscN67hyo%2BRJQ4458RmPywXykkVcW688oVUrQhahpPRvTWPnuI0B%2BSkQu7dCyvLRyFYlC1LG1gRCIvn3rwQeINzZQC2KXq31FaR9UmVV2QeGVqBHjmE%2BVMd3b1fhCynD0pQNhCG6%2FWCDbKPyE7NRQzL3BzQAJ0g09aUzcQA6mUp9iZFK6Sbp%2FYbHjo%2B%2B7%2FWj8S4YNa%2BZdqAw1hDrKWFXv9%2BzaXpf8ZTDSbiqsxnwN%2FCzK5tPkOr4tRh2kY3Bn9JtalbIOI4b3F7F1vPQMfoDcdxMS8CW9m%2FNCW%2FHILTUVWQIPiD0j1A6bo8vsv6P1hCESl2abrSJWDrq5sSzUpwoxaCU9FtJyYH4QFMxDBpkkBR6kn0LMPO%2B5EJ7Z6bCiRoPedRZ%2FP0SSdii7ZnPAtVwwHUidcdyspwncz5uq6vvm4IEDbJVLUFCn%2FLvIHfooUBTkFO130FC7CmmcrKdgDJcid9mvVzsDSibOoXtIf9k6ABle3PmIxejodc4aob0QKS432srrCMndbfD454q52V01G4q913mC5HOsTzWF4h2No1av1VbcUgWAqyoZl%2B11PoFYnNv2HwAODeNRkHj%2B8SF1fcvVBu6MrehHAZK1Gm69ICcTKizykHgGFx7QdowTVAsYEF2tVc0Z6wLryz2FI1sc5By2znJAAmINndoJiB4sfPdPrTC8RnkW7KRCwxC6YvXg5ahMlQuMpoCSXjOlBy0Kij%2BbsCYPbGp8BdCBiLmLSAkEQRaieWo1SYvZIKJGj9Ur%2FeWHjiB7SOVdqMAVmpBvfRiebsFjger7DC%2B8kRFGtNrTrnnGD2GAJb8rQCWkUPYHhwXsjNBSkE6lGWUj5QNhK0DMNM2l%2BkXRZ0KLZaGsFSIdQz%2FHXDxf3%2FTE30%2BDgBKWGWdxElyLccJfEpjsnszECNoDGZpdwdRgCixeg9L4EPhH%2BRptvRMVRaahu4cySjS3P5wxAUCPkmn%2BrhyASpmiTaiDeggaIxYBmtLZDDhiWIJaBgzfCsAGUF1Q1SFZYyXDt9skCaxJsxK2Ms65dmdp5WAZyxik%2FzbrTQk5KmgxCg%2Ff45L0jywebOWUYFJQAJia7XzCV0x89rpp%2Ff3AVWhSPyTanqmik2SkD8A3Ml4NhIGLAjBXtPShwKYfi2eXtrDuKLk4QlSyTw1ftXgwqA2jUuopDl%2B5tfUWZNwBpEPXghzbBggYCw%2Fdhy0ntds2yeHCDKkF%2FYxQjNIL%2FF%2F37jLPHCKBO9ibwYCmuxImIo0ijV2Wbg3kSN2psoe8IsABv3RNFaF9uMyCtCYtqcD%2BqNOhwMlfARQUdJ2tUX%2BMNJqOwIciWalZsmEjt07tfa8ma4cji9sqz%2BQ9hWfmMoKEbIHPOQORbhQRHIsrTYlnVTNvcq1imqmmPDdVDkJgRcTgB8Sb6epCQVmFZe%2BjGDiNJQLWnfx%2BdrTKYjm0G8yH0ZAGMWzEJhUEQ4Maimgf%2Fbkvo8PLVBsZl152y5S8%2BHRDfZIMCbYZ1WDp4yrdchOJw8k6R%2B%2F2pHmydK4NIK2PHdFPHtoLmHxRDwLFb7eB%2BM4zNZcB9NrAgjVyzLM7xyYSY13ykWfIEEd2n5%2FiYp3ZdrCf7fL%2Ben%2BsIJu2W7E30MrAgZBD1rAAbZHPgeAMtKCg3NpSpYQUDWJu9bT3V7tOKv%2BNRiJc8JAKqqgCA%2FPNRBR7ChpiEulyQApMK1AyqcWnpSOmYh6yLiWkGJ2mklCSPIqN7UypWj3dGi5MvsHQ87MrB4VFgypJaFriaHivwcHIpmyi5LhNqtem4q0n8awM19Qk8BOS0EsqGscuuydYsIGsbT5GHnERUiMpKJl4ON7qjB4fEqlGN%2FhCky89232UQCiaeWpDYCJINXjT6xl4Gc7DxRCtgV0i1ma4RgWLsNtnEBRQFqZggCLiuyEydmFd7WlogpkCw5G1x4ft2psm3KAREwVwr1Gzl6RT7FDAqpVal34ewVm3VH4qn5mjGj%2BbYL1NgfLNeXDwtmYSpwzbruDKpTjOdgiIHDVQSb5%2FzBgSMbHLkxWWgghIh9QTFSDILixVwg0Eg1puooBiHAt7DzwJ7m8i8%2Fi%2BjHvKf0QDnnHVkVTIqMvIQImOrzCJwhSR7qYB5gSwL6aWL9hERHCZc4G2%2BJrpgHNB8eCCmcIWIQ6rSdyPCyftXkDlErUkHafHRlkOIjxGbAktz75bnh50dU7YHk%2BMz7wwstg6RFZb%2BTZuSOx1qqP5C66c0mptQmzIC2dlpte7vZrauAMm%2F7RfBYkGtXWGiaWTtwvAQiq2oD4YixPLXE2khB2FRaNRDTk%2B9sZ6K74Ia9VntCpN4BhJGJMT4Z5c5FhSepRCRWmBXqx%2BwhVZC4me4saDs2iNqXMuCl6iAZflH8fscC1sTsy4PHeC%2BXYuqMBMUun5YezKbRKmEPwuK%2BCLzijPEQgfhahQswBBLfg%2FGBgBiI4QwAqzJkkyYAWtjzSg2ILgMAgqxYfwERRo3zruBL9WOryUArSD8sQOcD7fvIODJxKFS615KFPsb68USBEPPj1orNzFY2xoTtNBVTyzBhPbhFH0PI5AtlJBl2aSgNPYzxYLw7XTDBDinmVoENwiGzmngrMo8OmnRP0Z0i0Zrln9DDFcnmOoBZjABaQIbPOJYZGqX%2BRCMlDDbElcjaROLDoualmUIQ88Kekk3iM4OQrADcxi3rJguS4MOIBIgKgXrjd1WkbCdqxJk%2F4efRIFsavZA7KvvJQqp3Iid5Z0NFc5aiMRzGN3vrpBzaMy4JYde3wr96PjN90AYOIbyp6T4zj8LoE66OGcX1Ef4Z3KoWLAUF4BTg7ug%2FAbkG5UNQXAMkQezujSHeir2uTThgd3gpyzDrbnEdDRH2W7U6PeRvBX1ZFMP5RM%2BZu6UUZZD8hDPHldVWntTCNk7To8IeOW9yn2wx0gmurwqC60AOde4r3ETi5pVMSDK8wxhoGAoEX9NLWHIR33VbrbMveii2jAJlrxwytTHbWNu8Y4N8vCCyZjAX%2FpcsfwXbLze2%2BD%2Bu33OGBoJyAAL3jn3RuEcdp5If8O%2Ba4NKWvxOTyDltG0IWoHhwVGe7dKkCWFT%2B%2Btm%2BhaBCikRUUMrMhYKZJKYoVuv%2FbsJzO8DwfVIInQq3g3BYypiz8baogH3r3GwqCwFtZnz4xMjAVOYnyOi5HWbFA8n0qz1OjSpHWFzpQOpvkNETZBGpxN8ybhtqV%2FDMUxd9uFZmBfKXMCn%2FSqkWJyKPnT6lq%2B4zBZni6fYRByJn6OK%2BOgPBGRAJluwGSk4wxjOOzyce%2FPKODwRlsgrVkdcsEiYrqYdXo0Er2GXi2GQZd0tNJT6c9pK1EEJG1zgDJBoTVuCXGAU8BKTvCO%2FcEQ1Wjk3Zzuy90JX4m3O5IlxVFhYkSUwuQB2up7jhvkm%2BbddRQu5F9s0XftGEJ9JSuSk%2BZachCbdU45fEqbugzTIUokwoAKvpUQF%2FCvLbWW5BNQFqFkJg2f30E%2F48StNe5QwBg8zz3YAJ82FZoXBxXSv4QDooDo79NixyglO9AembuBcx5Re3CwOKTHebOPhkmFC7wNaWtoBhFuV4AkEuJ0J%2B1pT0tLkvFVZaNzfhs%2FKd3%2BA9YsImlO4XK4vpCo%2FelHQi%2F9gkFg07xxnuXLt21unCIpDV%2BbbRxb7FC6nWYTsMFF8%2B1LUg4JFjVt3vqbuhHmDKbgQ4e%2BRGizRiO8ky05LQGMdL2IKLSNar0kNG7lHJMaXr5mLdG3nykgj6vB%2FKVijd1ARWkFEf3yiUw1v%2FWaQivVUpIDdSNrrKbjO5NPnxz6qTTGgYg03HgPhDrCFyYZTi3XQw3HXCva39mpLNFtz8AiEhxAJHpWX13gCTAwgm9YTvMeiqetdNQv6IU0hH0G%2BZManTqDLPjyrOse7WiiwOJCG%2BJ0pZYULhN8NILulmYYvmVcV2MjAfA39sGKqGdjpiPo86fecg65UPyXDIAOyOkCx5NQsLeD4gGVjTVDwOHWkbbBW0GeNjDkcSOn2Nq4cEssP54t9D749A7M1AIOBl0Fi0sSO5v3P7LCBrM6ZwFY6kp2FX6AcbGUdybnfChHPyu6WlRZ2Fwv9YM0RMI7kISRgR8HpQSJJOyTfXj%2F6gQKuihPtiUtlCQVPohUgzfezTg8o1b3n9pNZeco1QucaoXe40Fa5JYhqdTspFmxGtW9h5ezLFZs3j%2FN46f%2BS2rjYNC2JySXrnSAFhvAkz9a5L3pza8eYKHNoPrvBRESpxYPJdKVUxBE39nJ1chrAFpy4MMkf0qKgYALctGg1DQI1kIymyeS2AJNT4X240d3IFQb%2F0jQbaHJ2YRK8A%2Bls6WMhWmpCXYG5jqapGs5%2FeOJErxi2%2F2KWVHiPellTgh%2FfNl%2F2KYPKb7DUcAg%2BmCOPQFCiU9Mq%2FWLcU1xxC8aLePFZZlE%2BPCLzf7ey46INWRw2kcXySR9FDgByXzfxiNKwDFbUSMMhALPFSedyjEVM5442GZ4hTrsAEvZxIieSHGSgkwFh%2FnFNdrrFD4tBH4Il7fW6ur4J8Xaz7RW9jgtuPEXQsYk7gcMs2neu3zJwTyUerHKSh1iTBkj2YJh1SSOZL5pLuQbFFAvyO4k1Hxg2h99MTC6cTUkbONQIAnEfGsGkNFWRbuRyyaEZInM5pij73EA9rPIUfU4XoqQpHT9THZkW%2BoKFLvpyvTBMM69tN1Ydwv1LIEhHsC%2BueVG%2Bw%2BkyCPsvV3erRikcscHjZCkccx6VrBkBRusTDDd8847GA7p2Ucy0y0HdSRN6YIBciYa4vuXcAZbQAuSEmzw%2BH%2FAuOx%2BaH%2BtBL88H57D0MsqyiZxhOEQkF%2F8DR1d2hSPMj%2FsNOa5rxcUnBgH8ictv2J%2Bcb4BA4v3MCShdZ2vtK30vAwkobnEWh7rsSyhmos3WC93Gn9C4nnAd%2FPjMMtQfyDNZsOPd6XcAsnBE%2FmRHtHEyJMzJfZFLE9OvQa0i9kUmToJ0ZxknTgdl%2FXPV8xoh0K7wNHHsnBdvFH3sv52lU7UFteseLG%2FVanIvcwycVA7%2BBE1Ulyb20BvwUWZcMTKhaCcmY3ROpvonVMV4N7yBXTL7IDtHzQ4CCcqF66LjF3xUqgErKzolLyCG6Kb7irP%2FMVTCCwGRxfrPGpMMGvPLgJ881PHMNMIO09T5ig7AzZTX%2F5PLlwnJLDAPfuHynSGhV4tPqR3gJ4kg4c06c%2FF1AcjGytKm2Yb5jwMotF7vro4YDLWlnMIpmPg36NgAZsGA0W1spfLSue4xxat0Gdwd0lqDBOgIaMANykwwDKejt5YaNtJYIkrSgu0KjIg0pznY0SCd1qlC6R19g97UrWDoYJGlrvCE05J%2F5wkjpkre727p5PTRX5FGrSBIfJqhJE%2FIS876PaHFkx9pGTH3oaY3jJRvLX9Iy3Edoar7cFvJqyUlOhAEiOSAyYgVEGkzHdug%2BoRHIEOXAExMiTSKU9A6nmRC8mp8iYhwWdP2U%2F5EkFAdPrZw03YA3gSyNUtMZeh7dDCu8pF5x0VORCTgKp07ehy7NZqKTpIC4UJJ89lnboyAfy5OyXzXtuDRbtAFjZRSyGFTpFrXwkpjSLIQIG3N0Vj4BtzK3wdlkBJrO18MNsgseR4BysJilI0wI6ZahLhBFA0XBmV8d4LUzEcNVb0xbLjLTETYN8OEVqNxkt10W614dd1FlFFVTIgB7%2FBQQp1sWlNolpIu4ekxUTBV7NmxOFKEBmmN%2BnA7pvF78%2FRII5ZHA09OAiE%2F66MF6HQ%2BqVEJCHxwymukkNvzqHEh52dULPbVasfQMgTDyBZzx4007YiKdBuUauQOt27Gmy8ISclPmEUCIcuLbkb1mzQSqIa3iE0PJh7UMYQbkpe%2BhXjTJKdldyt2mVPwywoODGJtBV1lJTgMsuSQBlDMwhEKIfrvsxGQjHPCEfNfMAY2oxvyKcKPUbQySkKG6tj9AQyEW3Q5rpaDJ5Sns9ScLKeizPRbvWYAw4bXkrZdmB7CQopCH8NAmqbuciZChHN8lVGaDbCnmddnqO1PQ4ieMYfcSiBE5zzMz%2BJV%2F4eyzrzTEShvqSGzgWimkNxLvUj86iAwcZuIkqdB0VaIB7wncLRmzHkiUQpPBIXbDDLHBlq7vp9xwuC9AiNkIptAYlG7Biyuk8ILdynuUM1cHWJgeB%2BK3wBP%2FineogxkvBNNQ4AkW0hvpBOQGFfeptF2YTR75MexYDUy7Q%2F9uocGsx41O4IZhViw%2F2FvAEuGO5g2kyXBUijAggWM08bRhXg5ijgMwDJy40QeY%2FcQpUDZiIzmvskQpO5G1zyGZA8WByjIQU4jRoFJt56behxtHUUE%2Fom7Rj2psYXGmq3llVOCgGYKNMo4pzwntITtapDqjvQtqpjaJwjHmDzSVGLxMt12gEXAdLi%2FcaHSM3FPRGRf7dB7YC%2BcD2ho6oL2zGDCkjlf%2FDFoQVl8GS%2F56wur3rdV6ggtzZW60MRB3g%2BU1W8o8cvqIpMkctiGVMzXUFI7FacFLrgtdz4mTEr4aRAaQ2AFQaNeG7GX0yOJgMRYFziXdJf24kg%2FgBQIZMG%2FYcPEllRTVNoDYR6oSJ8wQNLuihfw81UpiKPm714bZX1KYjcXJdfclCUOOpvTxr9AAJevTY4HK%2FG7F3mUc3GOAKqh60zM0v34v%2BELyhJZqhkaMA8UMMOU90f8RKEJFj7EqepBVwsRiLbwMo1J2zrE2UYJnsgIAscDmjPjnzI8a719Wxp757wqmSJBjXowhc46QN4RwKIxqEE6E5218OeK7RfcpGjWG1jD7qND%2B%2FGTk6M56Ig4yMsU6LUW1EWE%2BfIYycVV1thldSlbP6ltdC01y3KUfkobkt2q01YYMmxpKRvh1Z48uNKzP%2FIoRIZ%2FF6buOymSnW8gICitpJjKWBscSb9JJKaWkvEkqinAJ2kowKoqkqZftRqfRQlLtKoqvTRDi2vg%2FRrPD%2Fd3a09J8JhGZlEkOM6znTsoMCsuvTmywxTCDhw5dd0GJOHCMPbsj3QLkTE3MInsZsimDQ3HkvthT7U9VA4s6G07sID0FW4SHJmRGwCl%2BMu4xf0ezqeXD2PtPDnwMPo86sbwDV%2B9PWcgFcARUVYm3hrFQrHcgMElFGbSM2A1zUYA3baWfheJp2AINmTJLuoyYD%2FOwA4a6V0ChBN97E8YtDBerUECv0u0TlxR5yhJCXvJxgyM73Bb6pyq0jTFJDZ4p1Am1SA6sh8nADd1hAcGBMfq4d%2FUfwnmBqe0Jun1n1LzrgKuZMAnxA3NtCN7Klf4BH%2B14B7ibBmgt0TGUafVzI4uKlpF7v8NmgNjg90D6QE3tbx8AjSAC%2BOA1YJvclyPKgT27QpIEgVYpbPYGBsnyCNrGz9XUsCHkW1QAHgL2STZk12QGqmvAB0NFteERkvBIH7INDsNW9KKaAYyDMdBEMzJiWaJHZALqDxQDWRntumSDPcplyFiI1oDpT8wbwe01AHhW6%2BvAUUBoGhY3CT2tgwehdPqU%2F4Q7ZLYvhRl%2FogOvR9O2%2BwkkPKW5vCTjD2fHRYXONCoIl4Jh1bZY0ZE1O94mMGn%2FdFSWBWzQ%2FVYk%2BGezi46RgiDv3EshoTmMSlioUK6MQEN8qeyK6FRninyX8ZPeUWjjbMJChn0n%2FyJvrq5bh5UcCAcBYSafTFg7p0jDgrXo2QWLb3WpSOET%2FHh4oSadBTvyDo10IufLzxiMLAnbZ1vcUmj3w7BQuIXjEZXifwukVxrGa9j%2BDXfpi12m1RbzYLg9J2wFergEwOxFyD0%2FJstNK06ZN2XdZSGWxcJODpQHOq4iKqjqkJUmPu1VczL5xTGUfCgLEYyNBCCbMBFT%2FcUP6pE%2FmujnHsSDeWxMbhrNilS5MyYR0nJyzanWXBeVcEQrRIhQeJA6Xt4f2eQESNeLwmC10WJVHqwx8SSyrtAAjpGjidcj1E2FYN0LObUcFQhafUKTiGmHWRHGsFCB%2BHEXgrzJEB5bp0QiF8ZHh11nFX8AboTD0PS4O1LqF8XBks2MpjsQnwKHF6HgaKCVLJtcr0XjqFMRGfKv8tmmykhLRzu%2BvqQ02%2BKpJBjaLt9ye1Ab%2BBbEBhy4EVdIJDrL2naV0o4wU8YZ2Lq04FG1mWCKC%2BUwkXOoAjneU%2FxHplMQo2cXUlrVNqJYczgYlaOEczVCs%2FOCgkyvLmTmdaBJc1iBLuKwmr6qtRnhowngsDxhzKFAi02tf8bmET8BO27ovJKF1plJwm3b0JpMh38%2BxsrXXg7U74QUM8ZCIMOpXujHntKdaRtsgyEZl5MClMVMMMZkZLNxH9%2Bb8fH6%2Bb8Lev30A9TuEVj9CqAdmwAAHBPbfOBFEATAPZ2CS0OH1Pj%2F0Q7PFUcC8hDrxESWdfgFRm%2B7vvWbkEppHB4T%2F1ApWnlTIqQwjcPl0VgS1yHSmD0OdsCVST8CQVwuiew1Y%2Bg3QGFjNMzwRB2DSsAk26cmA8lp2wIU4p93AUBiUHFGOxOajAqD7Gm6NezNDjYzwLOaSXRBYcWipTSONHjUDXCY4mMI8XoVCR%2FRrs%2FJLKXgEx%2BqkmeDlFOD1%2FyTQNDClRuiUyKYCllfMiQiyFkmuTz2vLsBNyRW%2Bxz%2B5FElFxWB28VjYIGZ0Yd%2B5wIjkcoMaggxswbT0pCmckRAErbRlIlcOGdBo4djTNO8FAgQ%2BlT6vPS60BwTRSUAM3ddkEAZiwtEyArrkiDRnS7LJ%2B2hwbzd2YDQagSgACpsovmjil5wfPuXq3GuH0CyE7FK3M4FgRaFoIkaodORrPx1%2BJpI9psyNYIFuJogZa0%2F1AhOWdlHQxdAgbwacsHqPZo8u%2FngAH2GmaTdhYnBfSDbBfh8CHq6Bx5bttP2%2BRdM%2BMAaYaZ0Y%2FADkbNCZuAyAVQa2OcXOeICmDn9Q%2FeFkDeFQg5MgHEDXq%2FtVjj%2Bjtd26nhaaolWxs1ixSUgOBwrDhRIGOLyOVk2%2FBc0UxvseQCO2pQ2i%2BKrfhu%2FWeBovNb5dJxQtJRUDv2mCwYVpNl2efQM9xQHnK0JwLYt%2FU0Wf%2BphiA4uw8G91slC832pmOTCAoZXohg1fewCZqLBhkOUBofBWpMPsqg7XEXgPfAlDo2U5WXjtFdS87PIqClCK5nW6adCeXPkUiTGx0emOIDQqw1yFYGHEVx20xKjJVYe0O8iLmnQr3FA9nSIQilUKtJ4ZAdcTm7%2BExseJauyqo30hs%2B1qSW211A1SFAOUgDlCGq7eTIcMAeyZkV1SQJ4j%2Fe1Smbq4HcjqgFbLAGLyKxlMDMgZavK5NAYH19Olz3la%2FQCTiVelFnU6O%2FGCvykqS%2FwZJDhKN9gBtSOp%2F1SP5VRgJcoVj%2Bkmf2wBgv4gjrgARBWiURYx8xENV3bEVUAAWWD3dYDKAIWk5opaCFCMR5ZjJExiCAw7gYiSZ2rkyTce4eNMY3lfGn%2B8p6%2BvBckGlKEXnA6Eota69OxDO9oOsJoy28BXOR0UoXNRaJD5ceKdlWMJlOFzDdZNpc05tkMGQtqeNF2lttZqNco1VtwXgRstLSQ6tSPChgqtGV5h2DcDReIQadaNRR6AsAYKL5gSFsCJMgfsaZ7DpKh8mg8Wz8V7H%2BgDnLuMxaWEIUPevIbClgap4dqmVWSrPgVYCzAoZHIa5z2Ocx1D%2FGvDOEqMOKLrMefWIbSWHZ6jbgA8qVBhYNHpx0P%2BjAgN5TB3haSifDcApp6yymEi6Ij%2FGsEpDYUgcHATJUYDUAmC1SCkJ4cuZXSAP2DEpQsGUjQmKJfJOvlC2x%2FpChkOyLW7KEoMYc5FDC4v2FGqSoRWiLsbPCiyg1U5yiHZVm1XLkHMMZL11%2Fyxyw0UnGig3MFdZklN5FI%2FqiT65T%2BjOXOdO7XbgWurOAZR6Cv9uu1cm5LjkXX4xi6mWn5r5NjBS0gTliHhMZI2WNqSiSphEtiCAwnafS11JhseDGHYQ5%2BbqWiAYiAv6Jsf79%2FVUs4cIl%2Bn6%2BWOjcgB%2F2l5TreoAV2717JzZbQIR0W1cl%2FdEqCy5kJ3ZSIHuU0vBoHooEpiHeQWVkkkOqRX27eD1FWw4BfO9CJDdKoSogQi3hAAwsPRFrN5RbX7bqLdBJ9JYMohWrgJKHSjVl1sy2xAG0E3sNyO0oCbSGOxCNBRRXTXenYKuwAoDLfnDcQaCwehUOIDiHAu5m5hMpKeKM4sIo3vxACakIxKoH2YWF2QM84e6F5C5hJU4g8uxuFOlAYnqtwxmHyNEawLW%2FPhoawJDrGAP0JYWHgAVUByo%2FbGdiv2T2EMg8gsS14%2FrAdzlOYazFE7w4OzxeKiWdm3nSOnQRRKXSlVo8HEAbBfyJMKqoq%2BSCcTSx5NDtbFwNlh8VhjGGDu7JG5%2FTAGAvniQSSUog0pNzTim8Owc6QTuSKSTXlQqwV3eiEnklS3LeSXYPXGK2VgeZBqNcHG6tZHvA3vTINhV0ELuQdp3t1y9%2BogD8Kk%2FW7QoRN1UWPqM4%2BxdygkFDPLoTaumKReKiLWoPHOfY54m3qPx4c%2B4pgY3MRKKbljG8w4wvz8pxk3AqKsy4GMAkAtmRjRMsCxbb4Q2Ds0Ia9ci8cMT6DmsJG00XaHCIS%2Bo3F8YVVeikw13w%2BOEDaCYYhC0ZE54kA4jpjruBr5STWeqQG6M74HHL6TZ3lXrd99ZX%2B%2B7LhNatQaZosuxEf5yRA15S9gPeHskBIq3Gcw81AGb9%2FO53DYi%2F5CsQ51EmEh8Rkg4vOciClpy4d04eYsfr6fyQkBmtD%2BP8sNh6e%2BXYHJXT%2FlkXxT4KXU5F2sGxYyzfniMMQkb9OjDN2C8tRRgTyL7GwozH14PrEUZc6oz05Emne3Ts5EG7WolDmU8OB1LDG3VrpQxp%2BpT0KYV5dGtknU64JhabdqcVQbGZiAxQAnvN1u70y1AnmvOSPgLI6uB4AuDGhmAu3ATkJSw7OtS%2F2ToPjqkaq62%2F7WFG8advGlRRqxB9diP07JrXowKR9tpRa%2BjGJ91zxNTT1h8I2PcSfoUPtd7NejVoH03EUcqSBuFZPkMZhegHyo2ZAITovmm3zAIdGFWxoNNORiMRShgwdYwFzkPw5PA4a5MIIQpmq%2Bnsp3YMuXt%2FGkXxLx%2FP6%2BZJS0lFyz4MunC3eWSGE8xlCQrKvhKUPXr0hjpAN9ZK4PfEDrPMfMbGNWcHDzjA7ngMxTPnT7GMHar%2BgMQQ3NwHCv4zH4BIMYvzsdiERi6gebRmerTsVwZJTRsL8dkZgxgRxmpbgRcud%2BYlCIRpPwHShlUSwuipZnx9QCsEWziVazdDeKSYU5CF7UVPAhLer3CgJOQXl%2Fzh575R5rsrmRnKAzq4POFdgbYBuEviM4%2BLVC15ssLNFghbTtHWerS1hDt5s4qkLUha%2FqpZXhWh1C6lTQAqCNQnaDjS7UGFBC6wTu8yFnKJnExCnAs3Ok9yj5KpfZESQ4lTy5pTGTnkAUpxI%2ByjEldJfSo4y0QhG4i4IwkRFGcjWY8%2BEzgYYJUK7BXQksLxAww%2FYYWBMhJILB9e8ePEJ4OP7z%2B4%2FwOQDl64iOYDp26DaONPxpKtBxq%2FaTzRGarm3VkPYTLJKx6Z%2FMw2YbBGseJhPMwhhNswrIkyvV2BYzrvZbxLpKwcWJhYmFtVZ%2BlPEq91FzVp1HlQY1bZVLqeNR9SAUn6n0E28k%2FUuGkNpP1DBI5ch%2FEehZfjUQ9aE41NhETExoPT2gGQz0IhWJbEOvTQ4wgcXCHHFBhewYUiFHuhRSAUVmEHeCRQHQkXGFwkAgyzREJCVN7TRnTon36Zw3tPhx4EALwNdwDv%2BJ41YSP4B2CQqz0EFgARZ4ESgBHQgROwAVn9GTI%2BHYexTUevLUeta4%2FDqKrbMVS%2BYqb8hUwYCrlgKtmAq1YCrFgKrd4qpXiqZcKn1oqdWipjYKpWwVPVYqW6xUpVipKqFR3QKjagVEtAqHpxUMTitsnFaJOKx2cVhswq35RVpyiq9lFVNIKnOQVMkgqtYxVNxiqQjFS7GKlSIVIsQqPIhUWwioigFQ%2B%2BKkN8VHr49HDw9Ebo9EDo9DTo9Crg9BDg9%2FWx7gWx7YWwlobYrOGxWPNisAaAHEyALpkAVDIAeWAArsABVXACYuAD5cAF6wAKFQAQqgAbVAAsoAAlQAUaYAfkwAvogBWQACOgAD9AAHSAAKT4GUdMiOvFngBTwCn2AZ7Dv6B6k%2F90B8%2ByRnkV144AIBoAMTQATGgAjNAA4YABgwABZgB%2FmQCwyAVlwCguASlwCEuAQFwB4uAMlwBYuAJlQAUVAAhUD2KgdpUDaJgaRMDFJgX5MC1JgWJEAokQCWRAHxEAWkQBMRADpEAMkQAYROAEecC484DRpwBDTnwNOdw05tjTmiNOYwtswhYFwLA7BYG4LA2BYGOLAwRYFuLAsxYFQJAohIEyJAMwkAwiQC0JAJgkAeiQBkJAFokAPCQA0JABwcD4Dgc4cDdDgaYcDIDgYgUC6CgWgUClCgUYUAVBQBOFAEYMALgwAgDA9QYAdIn8AZzeBB2L5EcWrenUT1KXienEsuJJ7x5U8XlTjc1NVzUyXFTGb1LlpUtWlTDIjqwE4LsagowoCi2gJLKAkpoBgJQNpAIhNqaEoneI6kiiqQ6Go%2Fn6j0cS%2Ba2gEU8gIHJ%2BBwfgZX4GL%2BBd%2FgW34FZ%2BBS%2FgUH4FN6BTegTvoEv6BJegRnYEF2A79gOvYDl2BdEjCkqkGtwXp0LNToIskOTXzh%2FF062yJ7AAAAEDAWAAABWhJ%2BKPEIJgBFxMVP7w2QJBGHASQnOBKXKFIdUK4igKA9IEaYJg%29%20format%28%27embedded%2Dopentype%27%29%2Curl%28data%3Aapplication%2Ffont%2Dwoff%3Bbase64%2Cd09GRgABAAAAAFuAAA8AAAAAsVwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABWAAAABwAAAAcbSqX3EdERUYAAAF0AAAAHwAAACABRAAET1MvMgAAAZQAAABFAAAAYGe5a4ljbWFwAAAB3AAAAsAAAAZy2q3jgWN2dCAAAAScAAAABAAAAAQAKAL4Z2FzcAAABKAAAAAIAAAACP%2F%2FAANnbHlmAAAEqAAATRcAAJSkfV3Cb2hlYWQAAFHAAAAANAAAADYFTS%2FYaGhlYQAAUfQAAAAcAAAAJApEBBFobXR4AABSEAAAAU8AAAN00scgYGxvY2EAAFNgAAACJwAAAjBv%2B5XObWF4cAAAVYgAAAAgAAAAIAFqANhuYW1lAABVqAAAAZ4AAAOisyygm3Bvc3QAAFdIAAAELQAACtG6o%2BU1d2ViZgAAW3gAAAAGAAAABsMYVFAAAAABAAAAAMw9os8AAAAA0HaBdQAAAADQdnOXeNpjYGRgYOADYgkGEGBiYGRgZBQDkixgHgMABUgASgB42mNgZulmnMDAysDCzMN0gYGBIQpCMy5hMGLaAeQDpRCACYkd6h3ux%2BDAoPD%2FP%2FOB%2FwJAdSIM1UBhRiQlCgyMADGWCwwAAAB42u2UP2hTQRzHf5ekaVPExv6JjW3fvTQ0sa3QLA5xylBLgyBx0gzSWEUaXbIoBBQyCQGHLqXUqYNdtIIgIg5FHJxEtwqtpbnfaV1E1KFaSvX5vVwGEbW6OPngk8%2FvvXfv7pt3v4SImojIDw6BViKxRgIVBaZwVdSv%2BxvXA%2BIuzqcog2cOkkvDNE8Lbqs74k64i%2B5Sf3u8Z2AnIRLbyVCyTflVSEXVoEqrrMqrgiqqsqqqWQ5xlAc5zWOc5TwXucxVnuE5HdQhHdFRHdNJndZZndeFLc%2FzsKJLQ%2FWV6BcrCdWkwspVKZVROaw0qUqqoqZZcJhdTnGGxznHBS5xhad5VhNWCuturBTXKZ3RObuS98pb9c57k6ql9rp2v1as5deb1r6s9q1GV2IrHSt73T631424YXzjgPwqt%2BRn%2BVG%2BlRvyirwsS%2FKCPCfPytPypDwhj8mjctRZd9acF86y89x55jxxHjkPnXstXfbt%2FpNjj%2FnwXW%2BcHa6%2FSYvZ7yEwbDYazDcIgoUGzY3h2HtqgUcs1AFPWKgTXrRQF7xkoQhRf7uF9hPFeyzUTTSwY6EoUUJY6AC8bSGMS4Ys1Au3WaiPSGGsMtkdGH2rzJgYHAaYjxIwQqtB1CnYkEZ9BM6ALOpROAfyqI%2FDBQudgidBETXuqRIooz4DV0AV9UV4GsyivkTEyMMmw1UYGdhkuAYjA5sMGMvIwCbDDRgZeAz1TXgcmDy3YeRhk%2BcOjCxsMjyAkYFNhscwMrDJ8BQ2886gXoaRhedQvyTSkDZ7uA6HLLQBI5vGntAbGHugTc53cMxC7%2BE4SKL%2BACOzNpk3YWTWJid%2BiRo5NXIKM3fBItAPW55FdJLY3FeHBDr90606JCIU9Jk%2BMs3%2FY%2F8L8jUq3y79bJ%2F0%2F%2BROoP4v9v%2F4%2Fmj%2Bi7HBXUd0%2FelU6IHfHt8Aj9EPGAAoAvgAAAAB%2F%2F8AAnjaxb0JfBvVtTA%2BdxaN1hltI1m2ZVuSJVneLVlSHCdy9oTEWchqtrBEJRAgCYEsQNhC2EsbWmpI2dqkQBoSYgKlpaQthVL0yusrpW77aEubfq%2Fly%2BujvJampSTW5Dvnzmi1E%2Bjr%2F%2F3%2BXmbu3Llz77nnbuece865DMu0MAy5jGtiOEZkOp8lTNeUwyLP%2FDH%2BrEH41ZTDHAtB5lkOowWMPiwayNiUwwTjE46AI5xwhFrINPXYn%2F7ENY0dbWHfZAiTZbL8ID%2FInAd5xz2NpIH4STpDGonHIJNE3OP1KG4ISaSNeBuITAyRLgIxoiEUhFAnmUpEiXSRSGqAQEw0kuyFUIb0k2gnGSApyBFi0il2SI5YLGb5MdFjXCey4mNHzQ7WwLGEdZiPPgYR64we8THZHAt%2BwnT84D%2Fx8YTpGPgheKH4CMEDVF9xBOIeP3EbQgGH29BGgpGkIxCMTCW9qUTA0Zsir%2BQUP1mt%2BP2KusevwIO6Bx%2FIaj8%2FOD5O0VNrZW2EsqZBWbO1skRiEKE0DdlKKaSVO5VAuRpqk8VQJAqY7ydxaK44YJvrO2EWjOoDBoFYzQbDNkON%2BUbiKoRkywMWWf1j4bEY2iIY1AeMgvmEz%2FkVo9v4FSc%2FaMZMrFbjl4zWLL0%2BY5FlyzNlEVYDudJohg8gPUP7kcB%2Fmn%2BG6cd%2B5PV4Q72dXCgocWJADBgUuDTwiXiGSyZo14HOEQ2lE6k0XDIEusexDzZOMXwt1Dutz%2BtqmxTvlskNWXXUQIbhaurum9GrePqm9Yaeabjkiqf%2BbUvzDOvb2Y1E%2BEX2DnemcTP%2FzLcuu7xjQXdAtjR0Lo5n4%2FHs%2FGtntMlysHt%2B29NXbH6se%2F%2FWbFcyu%2Br28H0MwzI30DYeYTLMXIA2EG8QlHpAsyS0EfEToR0a3utIxFPJ3kiIHCCrZ66b0e2xEmL1dM9YN%2FMwS5p01N5jMX%2FBLKt%2F1R83l0LyC29M6%2BiYxo%2FUNg%2FEF7c2WyyW5tYl8WnhWg2%2FhyySbD5UhnDyS7OcU0dnrFw%2BDfGdI7v4QfYIIzOMq9hFtY55gmvC7jZ2FK7sEdrn6IXBuucYhjsGdQ8z0yEbWkkczjjsE5hNAIZrPx2zOLZDmKNXcXtg7EMqidAEEWg%2BSJCBBNwxvxJfc%2FbZa%2BKKf%2BxoKZybnq5vaqpPTye7CiF%2BZFjxZ8%2F7Qij0hfOG%2FcowPA1rT1l4ymWnrKmxxqfErTVrpgwPlz1kC%2BOy8NMDz6c%2BIO38K%2Fx0xkPnLW8Kx6qGAoQdL%2BTD9V9rb%2B%2Fctn%2F%2Ftrxz8dUrZrD%2Fzk%2FferF0cNt1BzctmX2FZPXt%2FjnFCQNz4Ah%2FiKllGiCMs1w5Lkg0kiEwj6VTXCDKsX9rMpnvIj9pcDecXAIXMnqn2dTUbN6w0XQ9ue6FV%2FnnXCH7S3lPWGltVcLsH75ub3ab7A8M28caNrIeOr3o5Q0yFsYL80xaa0EY%2FUEczV7icUMY5pnelAkmUAXmHYjvFWFGxuqlSaow3OM%2B%2FiYY7%2Fl%2FhVELF4EjRqNR%2FbvRbOY%2BDUGzGR%2FOh3EqmE%2FugIQQguGt%2FeMYz%2F%2BL0cimjeZfQDI3phXMbMQsqH%2BCjwVz%2Fhf4idHovgVmB8gLvjbicDcC%2FNypP536E%2F9N%2FpuMibExdohBmNwyiaZdJGoigos7GpF222xrfnZhML%2F7Z%2BylaqP63Hr%2Bm7bdUkQ6%2F2cXqdfmvwixY%2Bs2ksXFeXcE%2BiX0Z%2BIow76DBNgjJ7TOdUK18iPsPflfQD%2BDPsZG2Aj9VmKMMJ4fYRrhIaxhTDR0Elh2vA6h%2FAE6xUb29mj3sjmL72petXjejPy%2Boel60M99tFduCI59N3221xe7apOvxs6aHs7vab1IqY2tv7q2xsHeHGml%2FcV06u%2F8S%2FxTjJ%2BJYc0bWEX0ukW6YmIbGkJRMdjJ9mYIH5QIdJF4hvRGyK7cC7ctImQRcUET99fGXOoft35GYLMQu%2Bg2smnkgZUrH8AL%2F9Si217IssJ916nv14ZrJrvdxLkQvrvtBcjgPC0NXOicO8Qf4mcxPqh3hgUw3DDfdvLJXngg7N3dN2zbPJSaed3OfZnMU7dvmznp3C3bruO%2BNmue0LFsy7S%2B6265%2BfCKFYdvvuW6vmlblnUI8xCXp37CrOZv4B9gauDBlYp7adcUXB5DNCwYImlXOJJKkAdvExXxVvKEYnCo%2B3eIskP9qrrfIYs71CccBjfXRC52udTHHdaP1A1ui%2FVvH1otbrLrpNXBsGX5B89QghDyimlvNB2KfkxZ5C9%2Fem3%2Bd1%2Bd%2F%2FIfFp2%2B2Oxn%2Fs%2B9n%2F79p39S3s8idN6g0yZObwJOgKUpNB3GyU0Ls0PbRzIRq4lcarLKOJBkLRzJQD4j2090XrbA7DW8K3jNF5hlGS5e4V2D17zgss4T20egOJte5iD0bReM9yjTxnQxCRj3c5kFzGJmGbNKmwGw39IJDJcXJZGMkaAB4jyJAKw0jt5IAuIE%2BA%2BU3cVAZZrq9zhDyBrU8oosuxcGNTzCKJfla7JjNVmuSb%2F%2BtuzN2H%2BX4vlB%2BPpdfMXXmuVsNiub1T34SFbjYw5itEvVi0K0Nt9pNJUMI7SLGRhf2xipfCYf8z5OdlGKayOucFeVPeS%2Fdbo3lBrbSMmwUiQN5%2Fed7g0Ds1s17IuZC5kNzM3MZ6EWCa0DtekdJfAxz%2BR%2FOX28sND7yRMTBcf%2B%2Bs8mQCQWHya4qBv%2FufeMoWyslPA9DtMxUknxkH%2FyfTnm2CMYzs%2BCq3r7PxY%2FMXomrvTEsRpfEGHa%2BWN8E1AHjElb7d06ddA7oK%2F%2B5Mdsv9EtPms0jv0Z5kf1FqPxWdFtfFr0kHfgDX0Y%2B5PRSG7RUj0tQr7rmfX8DH4G5W28kKeJLtmQsQkuwMP1pk16EV4sl7vrMJATfyUWo%2FGwEco4rh4XFQgaiUX9qxZHrMQqKnz%2Fc2d8b9TysYrAuXpP%2FRf%2FGr8b1qwwc5a%2BeuLa6S6sneNXToG2XrEJi4R5SGs8Sq2S3d97bsfCRaTdaLwKClRHt37mkudvXbjwVrLhuYeGhh56bvfQkHpk2CwvwClqgWwuBfndC3c8dwmstj81KkagcUgbfPY8Zje0W%2F82VPWJHmSq6pP8hPWpotc%2FEexDOK3qU%2BwngPhOCiO9MJRm8TJefjelrzoKnG2Bn%2B1NCUmPE4gHFmBN9jrTigRIpsACrc9Gstg58ULkp9467%2BGf%2FeFnD5%2F31lNrt2967dhrm7bzI%2BVT5m%2BfzKhvf2MzpICEm79Bopkn07lt1762adNr127LwVqQLdJ5%2BlpQDcvHPQtVY5knhYrK6q8%2FJsiP6EuhGZdFdaNszjvpqvc%2BPI0CdjN0AXsFOC3ZfALDJwr4q2Xq%2BGF%2BGNbsxUg5NLLIEXi8otcDQcUts0D8eQ1iVDRAMBTsYiNdRIxE09EIBJO9A2xqgERTaW86BUFn0OD2xFO97FAgFhF6OoQ7prYt4XwSeUgQHiJyDbeke9IdQntciLQ1FlJMaYcUNvZBg%2BFB1ubjlnRNvl3o6IEU2w7fdNPhm%2Fhh%2BFLysUu6%2B%2BDLHkOkrSHYEjH0tEPe7WdD3uyDgvAgK%2Fm4szFFR7ch0toUgBTdWHr7EpaWru6%2B6dmbbnqWEbV2EtxAsXiZAPTtGPSbHsotI2leoM8TePEqgSQprs7AGFf8kuOkPdZPXGb55POAW1d%2FjLST9v5YflasP6v%2FCO7%2BGNAPC2BMZWmsOjp2NNbfHwMCJD%2BLPVL%2BD%2FOYlWEEI%2F9jpPddOFkB5d1GSuKZYggmCCd7JUxD7EXAzxyirYnNDLdDZoFdx14kivkvGc3579Jm36reTTvDgBnaO6vzyQ6chQmlsMoIkIQ2%2BbBDWBud1Va4pcCn8CPqxlh%2FfgtG8IPaPH8C5wk6%2FnZDv69jurV5QhtwE0x2iqOsj9Mx8B9%2F0EaUdiPfOYYDCi%2Fq9jhWRuupMDEU0%2BCtX0sDFxv07T%2FK5niBPqN9%2BtQjgEc31NGCXFeMcCEuQBIc%2FBK4CO78u7EPYvl3yaEfK3vcb6qP1R2tI7vUjVDDUdKubsSrNjYKY1qBEa2P50SJoaXiksIoLiCwnxS6EBuBde87botNfdEWwYvF%2FR0%2Fu5yCqhGeEOR2ynSeyXjt6ka7neyye8kryBSWE52y%2BRBgogrXPZ8E1yIHoHIFUM%2BAbJhE7lbMtt8ApL%2BxmZW7PwbjAO0fAVoXQOuiSP%2FksIVdFZ0aulsamKUzwPZ%2FNYDMJRBPCxsBqLzqHyneXF6Ej9HlIFo7%2Bpg%2BjUb3unRmGpstGkm6etOuDBGA5wCMefp1gTHcdZlvPBXlOslvYTp1cd8UjYLVd%2FJ5awNrIOKLnIt9MD9qdrKrWCvA6ALm3QV9VrsPm60Q7%2BRHJHP%2B2hqfugo%2FMvI2H%2Fmqr4b9tFnKSRY1Y5Ek80Nm%2FWIhr1ikKnxGz9TWXrokf9xwujfvcOTtNTWnxd0F37Y2W79tteBqZ4G5qLCuomw%2BnSr28QESCRVLTyYKILGJOPfcnaIFOsewhRdvv%2BrWa%2FWih0vlbX6Zb75T5C0qNKVFvH1QL%2FvazSWgC2s6oWXXIuUxQelKiJbowuJDQViatLmLijg9CQBMg8WiPgiw3LEeYRmm5f%2BXdnvkDnxLLjMLxtvX74C3OlwPQqx4xwIdpPx38LrlDphiyWUWHWKAzzxurS%2FxTo%2BP5wGFak62ap1PVFFN4v%2Fy%2BxuR39WnIO7lsWfwgVsK17wxrs9K8ltIKuhkw7f%2F6dhK6gQokFKhWX3urrjk%2FrnI0pgfpGMeuQIUaEM7%2BGF5q2iMkCaMQwxxOzcvU0eXbsnS9XknXvP7Gtw5dwPXlFu2ecvSHEZgNDsU6x%2FGdXBYXyOQjzZReSedeEPY6nEv9gJR4oBQJtFO6Kd0fwC6BO4LNHDeBujB6dSNcUQC9zIv2LnAzGk99bUDrdFY%2B9yGFQtEo0GQPNv6vS2drj4%2B1jHbv3aJSMUWP%2BQTZrmbNTjU8wyG%2FiXNNpskybLcJ3CiTF5Ir%2BJYzmJwE0mSVhlxbtbmvweB3ulB6Til5UuUZydpgiFVeobhU0WaBqpJ198d%2B%2FXeNRTZ9%2F1OPfG7%2B2hwzd5W3D%2BhmyjsRcUg%2F%2BCavb%2B%2BVh2ls3L7zT%2FetOnHNxeerv313vzLVqPai4nJv%2BK1FC6040%2F4udw7sAb3laSg0XCkAAs0npBO6VJabS4Elk%2FU%2BD4gTXW%2Bj0wnrMlqNamq4tMIYB87tE10i0FR3LZNhJsb7%2FR561btmes8YBCRkhYNByRtKd55mqTas9FYhJnbRGHuOh3M4QTdgQSqmgRxuzGdSvZGcbMxNQGk5C3ebLjoXIOFM4l%2BWKHmLTJwRv9E8GWJ6dYvf%2FFmEyEGr%2Bgyrr1p5zrgkz0Cw2j94Hv8Jdx7dIVegBSNtgsqGsRQEYiIBoXwD0LNvQ5d7s5Z00QzwNhqZA0b%2BtMG1tQq5nd84uq8R0zPvX35G8uRaze4jcOHzz0w1%2BQ2BIRvf6J6Kgatnrbiem%2BCFvAxfkrndzD9MFPP1GWTUHclpASUkCNAQkpCCcCgDSUDAhDZ%2BCuEkgn8J7i9nMA7pA4lISappxILKfAeSAbIcSDuN2bJcfZILqeO5rLs0MnngSHYRdrHjmaz7JEsEPw51ZqDJDmUIOZIe34WaQeegNsJn1qz8AIpT3yCjyEih%2FxELkuJ0lEMYTLVCiWpo5oYMleMH6USyYJcD%2BuOe%2BkWKpn1Qns34iyYDjkSLvgnZXcgVQNeqINXr48m3iS7cjm8tedyY0f1QvTnHHdsrKby%2F%2BSSbPY8%2FNH6vpl%2FEsq3Ae4ZU1HC44KFiI9o7CEgab%2FRqHbj7s5KAg06s39ZP%2FzxI%2FmVuF%2FTbTSy%2B3Fb8If9%2Fcv7%2Bwt91yy8RfP1QXtW5RzQn7qIiZyuFM5QfJ5E9uVnqT85TanFx0lkP3ukBAMprvsRyi%2FC8NAJL1xbIIirSvnSj4O5netb4JxmNANHPssHAcHMHsFRgEug816gDBeMbdfiuRcghqYcm0%2BXxx%2F5IAEtN3fqFF3LzAXqwoT0PN0OVTNqxo8sxMkd5Ig6k79Zk7VxxX6gMLOZFQgvpW2RrMW1D0BDihaXQ9wVRoBxPLfpknmkeMtoB%2FqM9cRc9IqmMD2XUmdZ7GSRKPUZvChf8BoykriM2MnKYbOHX8R7cLdNCxSFFVQqoYswnlWtlFS2mNkhswVpZiQW1J%2FUKFfipHGlUkM6UKBhMz1istELIHJLMSctu3ugzfaVSOjKvUgc%2FTHK4Sdg2Wscz69leKIkkrwuuWiOe9yGYKQXRumkC3qbRcMwrvhjNXgdZk3RxAUEhuSPvn3nnd%2B%2BU%2F3vlVOmrJzCD8JLxV1OHRjrZifbcFDOuRNTGqdgQm1tSNJ2OcQ04YiEXuxtII1ECSQRoQGYioEsgCfchB4ghAtw7FfJre4WZ9hkVi9MtjuWqtdNDlpMrfEG9fOT6q21okg%2Be4As38MfGquNt7oUws6Ysarj1%2FefE%2Byst86YUVNvDdts3Pv5c8m%2FaP0C%2Bf8%2FQb%2BIMnGq09BgwN01oIOAnAdagI8mBSrqk1gxTDUBOtk2ousEtBH2z4Ir2d3f6k8PXXVlt2qN9RODxRuoJT%2Fv27wm09jRYVc%2Fe%2B%2Biyx2tyzJb%2Fn3J0htXP87eSsQaf2Ly0s6Zmxela88REy1cf4273mI3iXNJ7KxrZibOm9xm6rl4fqy%2Ft27smU8tOfdW2ucBzg2UfmOIVyLIl3kpYlwphDISTXJXsctmiDtN7fNV6zelgxwnWxsVr83Aj%2FS5ki1jL%2Fa0GC6%2B2L6Um%2BaoddlNFuj%2BbJ8mH%2FiaLh8I0%2FU51NspIEfq0dohwyFXKgm4NggwQ4rRhCOUFtxxo8XnitT4cnGfT93IS8FaT85XE3H5LMY4zIEPL1hw443wz%2B1UmhTJyJGxZzw%2BwsKkKZgUiVtKOKMEb2AKHTv61FNc01PQFwKnvsZ%2F9pPA4RKTASWahmh%2B8MxwzHxKy74IRn5LGRjsPUUwTu64UYNY38caqd7HKucZ%2FtHnODtENw%2F2UfHRMaq1UUPDJQ0OKkWCeet5fYOhII1VRz8%2B%2FElg5j4Gxur3J8o2PJ4rg%2B2d08T%2FfwEzSVbyZ9XPro95T477lRKqUSRXQnauHNsISAl27oWi6Fv9z48JMv8r%2FaMMj8onCP%2FDuDZOuN%2BGPPr%2F%2Bp7bx%2B7JlbYdppcNhzKU%2F1Px5aiaGDn%2Fs1iGMaBcleKUo%2Fv9rcxkZj7DBEKOfrayytXNLYiUdBY%2BpleQXdnscKlQcpzuWluxsieeyuXIK6SdxozitWyGOV3vOHHjguyCQ6fpIYy2JwvrQEF%2FQa9Pdf%2FQqOSqCiE%2FEE1%2FXIVKTc2tzWbHnimrEd%2BVyz311Ml3P0GVTj7PD5aDnsvCvH36alEaPMePcMegXs7x8igTu4B9v7G9vTHvhCu%2FkzIdx%2BBxC0ay9zRSvoS0F2lIxI%2BX7klU63I40gLQ3w5ep5na%2BSFnba3z5D64zv%2BQtM4n4ffG3tq4aNHGRfxgrXPMim%2B5487abL7xhdseIRn1KDl%2B7aINixdv0OD%2BJSPwKf5%2BxoP6aiTeQIDVlIhMcL1H5R9PYXvprs3fv2bO7MOplCmweuiq2JRZ1zz%2B9a%2Fv2PH1Hfz9236w%2BZrPXvWfAxlj4NLLHpq3c%2FPQ3uvmvbrjG7fe%2Bo2y%2FcLdtE6VUlXi0ASb1VLUBVSUWSU4HdvAraTyS8xzM8NxvxFkXV6pUVRiJwcgC5zEeht4rwcp7ki0k41G0qlQhG1Vzlq8alEmnFi58caB5Q9vn988MLhqyVlHvLEWjtQFeupdiocF%2FtkkOGPW2ibWaBTkeZ%2FdvPWazXfOnnvL6jkRXpi85sFzZt%2B55ZptW3bl1cCCHZPD06MhySha7UFzjcjbp8fOecFCirzAG%2FyVjBX6OFIaadSjQq1nNhyIe8tVbaaSdHlXIWKacMeuZA1uxS95zILhyrxAdsXTL6m7kNQlx2P9uZf2qhufePFFbpI6%2FOU0WcP99RrCsrwseVot5mtytpf6Y0gm9sdeyKnPQ7onyK4nXlR%2Frg7H95M1upzu89DH6pgUcikoiihJ6NJKmRxV1x%2BMJiOA3YwhDRQrWU0u%2F0rvq0VYXnyCwsLeTJYBq3dAtJDavuzyoVpzZ99Z0%2Ba0uoiFH%2FxcqgDR7rUFeOrUn6Cywb8ZeNMbhLV5ugP9l0zv9UN5b5mFkjzxUcpPJCn3V402pRxtJd2GrnLdhtVk9ZSZh9W91fCSH5B7ofxPiWL%2Bj3D%2FuwhBRdyAyozeZwvQzs79soi%2BBKSnafLviZCcfrpBpLyimfLfTyJtbyruIQKD01tUwJyKEo%2FybaxkSNFUMdMkhQoJyRBQFhnUkDQSXhTM%2B3NmY0EDM7ffLIjqWEGt8lCO6mLia3PukFnghosJD5p5SIho%2FVDkzQfLE%2BIrYoJXkD19pdP7OwG%2FvoIUtagiWiZ4PAFTHHlTVhRZ7dYmPar%2BNJ%2B8JhmR6DFK5DV1foHoLNO%2FpHrvZfmWZ15RQlwvoVDKhCWNK3CCch9lfFBuAqUgpFSShmNaPj%2Bi5%2B%2BWZfKeViJfW5HnUakVL4UCNVkA4%2BETfIqx4B5xSaP2L1yn0zn2ltPn4%2BOqZGmwwEVCaCSqG53ldtL1oLGAhdMLd09MpCCF6tD6ZnAZBY9hDaYsP0jzZ0j5ZjKsF4i1UmLuhbJMCnYJPt5VwFNvmZawXjEvLJqIH8STonZjq7BZ8gKgR20C9MDFqJAX1H64QW2NEup6qgzLP8cvppL%2FNNTOBTCJABOHeWoXzLhw4Wuy7gaBtjKr9kgKq8ZlRYBS32Lpxc8vIhpNDTfyNXWybMJbn2RyQ5EmWc2QF9wmSZ0KYCE%2BcPuYO6b15Uotj2Kd4MItLS7gtFbkTdrFND6pvEZqv5Yv7jXAus7Pg7avo7KDot50NX3CPkP%2BKps8J9%2F3mGQIteY%2FLGPC%2BL7872SPR2br5fy8MtKBMHedGuM28%2FMZmPJMrGgi3Gb1S%2BSi1%2FL%2FzrZwO9XH1ce%2Fz7ZQ1WSoY%2F%2BpMb5FT4ua0Wm%2BJf%2F298nFmChEQ%2BTi71est4mq9VYI6RsymoRJKYidElT2FGnDTZvqtfhGAFTbeqEw68GqtfmbVa%2F1IFO1%2FjdWr%2F8BDRRtQh9XNjubEm4aWVpVonpTGR7PVGc%2BKJNoBIWF7kYi4gUV3r1U6723i6TxUl3n3%2FtM27aZfKb7THiHW9VzFSwHJ05VfK6Ar7kaB0XgPPE0BSkSFKsBUpaLihEWoA9wBt8qirh2VSOkZwXEwyrxZ5jyt2rJmSo9gX7cg6jsEUGJU9z9xJPOEM3uQQxKgkh35DNATnVyrmJ3mbCNyIB%2Fyox4wH1bg2DwN7q9kov4pFqny8oSm3RQbGgJ1QQTs6ZMLilOVYJ9v6Wha3HcJ9jddsXp9YhGUXLXt%2FqMDnvLpPNTXfNa60z5%2FyjXQOMq%2BlNmwh5egpYrdfZQZV9rI47xlRkuyTjpzsmCBSWNkAXVoK8sgYWqQJWbo1RLo6QH0YW6pxqfCnRgkd%2BRiFjUQUQ7poIaYoakgXxwFd9BuuI38H1xBxXSFb%2FpBDIKQFn7YB3dB36l7sG1FLaKiBdp1KxLvfswap%2F30lnVESgNnvjbUoT6w9N%2BXoio0qcYOIM%2Bheg940YimsucQVvli9NEcft2UZwGQwLuilj1fFr1i3NP94X%2BPE7Hpvtj6lBJfJ4R6NvWiaL6MgzWHxiN66DExa%2BdAdAbMYX6HVF8A%2B7rjEZIXAVbDe7PVI9rmN69JOLV1DOSvRPxWNPZBZf%2FNf%2BNy65BhYxxxV%2B77XJ2wfQ389%2FIQPgajXbwMsuAz%2F0IaQcXJavKbRqR2IqyZruXjVC2%2Bhdee%2F5vdnYOedpmVtR3NGXldxSzDSIiBVpkGb9by89UpEPKrSLZmyFDzMab%2FwXl2CNe7s%2FqCtTvWgG5kpBmCBlSzDS%2Fr8N4uwBwohRW63JTS1y32f0TQsPfXVGEHQrV8%2FNCfiOUVirYcBbIeA2%2BiF68rQIo3B%2FS628vYESr79ehzS7Q9LEL9UXmik9XVHb1yBO3Ngvt5935%2Bk1efkV51mzzrM0LL3%2F20avnwMeKuWyOUZg2TasSqZ%2BKcZQiOn1Iu2Vh497ALUVZiCKt%2Fgh6IvTIj1ZLRjWAkpHKOKovNwp00eqPROiAbiNEKieXwMLcXhVJ1%2FuzmLP4tfxaHR59cBdJVG1kTAgl9ze9QKUEQ946Hkb%2BokJ5JRDyf54Axur1D%2BWS49cLr0tTPEu7UmXrxcSr3XNvumv4yXzInXKH4F7Tc7p17Zt%2Bt%2FqW2%2B93k063X7VW6lALxTY7i1nBXMxcxmzQbabxz%2BtJo%2BwijYaIGMNS8AoSMgAPt84DdHOoMPfjXhF%2BkuH1tZvuFQrRCN07xGcXRX9MYxYchDe5BcHj%2BZ4i%2B42WyPc8Xofi7bbZJN5nJLJ5qr6IqRtzqNlM17SpFsnkEyTWoABEjz4JXOQvzWYuwdnV5LNGOwTM5v9r4RpQ8ZXsYodks3o31JBlzbYtNotisnm22MxiwGFXam5oN1n0TA%2FhRvshvTSDwHff4nNzRo9Dum6PaJbMXzDz%2Bx%2BFkj4L4bFNBb1asqsgH7Dyh4DvbkPtf5yMDKzEwyoaESMSNS9P9gJVA3%2FRTlwoMwZvxECFWxIPNw9gi01nOHjP32esZTtmXHnxvZd8ZtakqQ7ekajbXetpNa6ocTVxJtY%2BuSe69OLz77zh5bDR3xjZMzUz6fxrz1nqrZGcHQHfPVefN%2BfiK86LeXj%2BSc5lPKy%2Bk%2FvCUI%2FDaLFYCWHr6nbXuILTIsb5imNKY%2FrCm28fSMxPhkN1XbNMNZGuqwOBhtTSxWuTk6bw0ZaG86b1hKddePOKuBvmiguYBn4T%2FyOqOyGRBt7bKUI1GjioBC8aUKwF7Q319UgcmtFGIzCJGBqwQij0ynDsfdFGc3TS3BlNfJ25xmzniMkpXXTPvCaD3ZaZvyzjmZdudBostmhb0ORZNN2sJBeed1HXkrUsywueQH%2BL0eCPxmsa5ZpgRJSDZ11yDv%2Bjmbd86vxZfc1WcZJ3UkMq1BOOOVtvu%2F%2BpB%2Ben186d3GTwWAw2jheaJs09%2F%2BLNfZft37DALyrNj1wABMuUKbODyTVnT%2FKYbJ3Tpq8IrNh92dkxOj5P%2FYpZx4%2FycyiVcDYdn4JbEoKdQi9054iBKsygLW46FRGxAb0NPNCm8BSNCPjoKcj6EAus4SuP3rB%2BcV99%2FeTF6294dA8%2BTK6v74MHVpYNRt%2FI30e8QGTOOdfGWzzxcy%2B87a7bLjw37rHw1nPzp0KyyRSeZO%2BQQhInt3dYgvycjrPOv%2BT8s1rptaP84VeywdWX2T4ysr0%2F7TLIs6%2Bx9zib56ye1dM9e%2FXsZmePY3NDs9zlnNVt4%2BWgHJbbz3Livg4P9WWgviOMm4kCRT6I8vw0NbUUEnFvOuFKoxQW1gTsvFirsF5pb7qTUCx4i7VmtToveaDxvK9uOaedVvPRpVOnNz0Q6bry7uiSdQ8t7Vy4JQKVS%2BXPplV2ts4bvCwZu%2BKzgITtxepaPRzWdpv74muvv6RO0SorX6cu%2FdqKn%2FXWnrtp%2FZragz13DUCl5myiFW2Ycvb0PtsXnU%2Btx8pvLFbUspLX68mdegwmOif%2FNPDONajTGoUh6tU56HBJCTBASVvNUB5VIiKpc9kd7kludodSFz7xQbiOmMk5dOYk56gzL6uaf7N8a6MQOHm0ae6snZpFDfuT3%2FjdYzjzwkXXIVHoXNuCfQslQZqBZjTsoHMqrkE4jaYdgkGz2ATOgB3cPkSukD01DnV3ttb1wx%2B6arPqbkcNAHoFPzKUUQ%2BqL0k97pjbZv1I%2FegC9zTFbrrlFpNdmea%2BgIgfWW3wqkcis8ky5FAcRd1If5nNZrl2FFpungc8wpoCl1BpQV%2FScS%2BzjlASyUTVv%2FAJ46gkJI4bHX4lTnloctxPZE1ckS3%2BjG2fKIjkQFyzuo8jvYQG1OrGvJPSTu%2FnSp9PHNTl4z5hK%2F8gtXVKF6gEKiglgcKiRlCESsQCV5QIlKWKpr34lt%2FwkSx%2FJCmP5%2FcBKQfl%2F5gd%2BrOS%2F%2Bp91%2F%2BYCg5CXK2W4M9fu%2B%2F6xxX%2BvnelVuldIDCG0VQTpU9Dw4pRfei%2B6zWx0MLie0gPbyrkmRU7OwT16JGeyXLHqOLqAfVN1GPlBzWtFNzj0TRTCjogtP1NjIvu5habN5Aoa1k66wGpqriVetJgiGdwDZtKhnN0y4n9sXYnsqGmZfDSR15%2B5NLBlhoDaedEm7sxmpqRija6ZEEg2EAnTiAC8IrmFbGz1q08P9PSkjl%2F5bqzYqT9hMmptEXDgTqP3Wiye%2BsD4Wir4jCeoHbbp5hRfpB7BakUIppIlPCD30dR1GtslDz8OsqbXmejFC%2Fv8wu5X2myq7SJ8Avzv9DFUJySf5uNvq4%2BTi7W9D%2FOZrLChdwxmPNiBRqVjnpK%2FaGxRCDspVYKAW9AN1JANoo8wP4BJUlGqdgw6m1qPQ2QW3%2BOfU5%2FieLS%2FNuKpDU3uf8bcAXyBal5jMR2NEAbPAZt0K3hvxHBEDlUxfIGcD%2BN2gNSNx36nfqlAYow0puatNpRz0e4W2oahKzQHsjf2c16ad%2F3t2KTtPobnX6D8C8pd0MDP%2BKx7wnXqGGlLQcvikMErm6TmfsuxJXbSAxqNjOogJLQBLiKEHAE%2BJGTS3JoEhTrz8%2FCB%2B5YlupJ58aOat8Kv4JvregxwcU5Cp8GFAFm1FyOfto6GS2m1NGTS6CPNKkbsTdCBlnN9onMho55BX8IJZtEQ35lk%2BhtwN5A0V3RCPoD%2FyXAcv6pAtbZczRUA64JmcUf4q7Q89ZHLeJVZ5D1Ps%2Ft%2B0iCT3AHVtZC7JDCXfR7OSb%2FXja5H3zQbZL1B%2BULX1BMTEk3AseSpmnKEK4T9ekMIidUCRQFfcbj7z8gNLvzF7mbhQN8h6ZbRset%2BnQWdS%2FZX3k7WpS8P9sfo0iGS64wV516pOhjI6TZ2dApgI5%2BLhxywYoWxKUrykKJsIoDsR4mSrCTg0egMPnLW%2F3Q5Nn8BZEuzqEI7HK3n0%2BzFmuO3TtWQ5WJoG9YqCD6Gc32SxnbnVPfsxvrFXK2dILl7bLthDp6glhcsfp4bYvbSmj%2FmQ94uBTw0E73x2jbNRCvC6VL6GCFDwU7eWQDcC5FY5s0slieRDwtAbRsbLXbaXAuu14e2OJw1dc6jQ3ZdY8v7rv2%2FBWZLqvFWVvvcmwZkK9f5jS4muO9yR5res4kfkRxhV03L1RfPOiPtYi8pd7jNEsOpyTwxpaY%2FyCZu%2FAmd5Or9uS3DYaeqVOhH7gZN%2F8I%2Fwi1fEuLXvyNivibjuKvN%2B1Nc01HF%2F3h%2Bef%2FsOhox8MPd5SFucPjorQwXT%2BytA8EmA5mamHNFDVhBI5pjZbQpugBNkO8MvRub8KVDKST1Wag7D3xlin1ZF7LFP%2F79nbvCXFOY%2BPUjrT7%2FotsPXXZ4exdPzuhZuL5LUXVAn7k7PbhG89uz3b41X01gbjP1xwlu5rrvvf9%2Bpbs6E%2FVu7Nk642%2FPYRaAiUBdrmO6CDTBLPQFA1ur0uXoBR1INDMkypKpoTqnSMx5GiEdTEaSHLs0Alvu%2F19%2F5QW9Rv1U1ridT22i%2B53pzumbs%2BXFFXYC%2B%2BCGsTj5JUT%2FGCgRt3n78i2n71FHG4%2Fu6X%2B%2B9%2Braya7os3ZbDmgWfXun44e%2Bu2NZKuGZ0HiF8M4TlMPR%2BEU6rPKRJ8wOU2RFUFLex3egEsz3YqEAq0cqhAAW19dBZIlVzR61tuIdTnpXH7l%2BuXrbjPUyep%2B8cl6aXKWhPHpDcXl9KiTWDNr4mBQc8Tq%2BNzK%2FOKSbsfl79o9G20R%2BbrBXYvUg0rLHhtrc4TN81TTOWSZ0gL1ZVlOYH2ery%2F7XVUjFMbzYpg7UswcqJPQwBd0LKLabJ8IaCr2otcjSkIrGwootKECaUd4XH1%2BSdazRrfddkBU98t1htvWrbjqSqjaCguxrffM%2F5zDCpBALUycmajhd%2BR6ww4SWafuZ5eU%2BtPid4lgd3gt%2Bb%2FY9rQoZNmiXYPXyRHbRs8zX%2Ff4WIFjWZJtUdSD55AP3xtXH%2BZipC0EqdBGDA4CoYEU6gRLGPU11QhkLTBiEYPiqOeQgwTCl9aok1Qr5pFf71qEeNxjy%2F8F0GoqYPv75Yh9j3x4DuJ%2BuEzHRpAq2lMqb%2BqfTdiq6kGtzfOWsv0c7lSeMXDHBDe1MT%2BLUgx0Pg%2Fp87u2UicdIvqQi8DkxhcUwUXCedMpb4NQjwY3npTmgsURJavLwCRyEcN2HfWsDVGfv%2Fu9ZUWUx%2BPYFueUKwaNvbtu%2BXps3eVWbN1GcgVrdMnWJ7WmJz9SD66EBidag0NF1Ukep0t5A7sFCWdhzvYwHv6L%2FBehXuHqfaBwBEU7hfVLcXvS4VQv%2BT%2FvaSIl7cbeMc7ekv9i8S3e1L5xxpvMGcu1EYPbKyCiijjGXcDKckm43PqU2qNWlXusZMiqF82cuVzolUHN9NNR0HZPxFPV9V0wLtvq%2Bk4DqOwVWDlzuQLVdqFiP08cRX7aRlBVfR8cb55bWe5LExnlcsDp1vAP8Q9BucPMk1Ulh4GnN0SAdxcNHv3q9ohx1Ati4S%2FtkWjIDe3hQdkUGrGRaFBiUdiTSkI41UkMuuQHP%2BEaSQYlPQTFWJF03BNPpTu5KFAdkWgDukzsZKMG0Q1TAQQglScOaP%2FdsZ8%2BfP75D%2F9Uu5Gs3FY%2F2SxPld0DHOciXI9gqjcEidXjE%2B3BLosy0OcX3T7O5g65ROGyzQ2BZs7WbZVnO5ydLe32hMwTQ4wnnKXW6XW5LAa7oaXOIHoUl0FgLQLH2by8wSTWeAx2Y5PDazK3BqZbeJZwXGPaYhX87ZNszoDdaRxotXO1nNlpdvAPFWHDm8PqEE0sZxDEqGzxisFNnuCWetPcGrObN0p23tTZwMuRVodSV8%2BLTrOV3eRvzjQZiSjaLYS1WEJe0kNsJlZu9LFun7%2B%2BwW4gRDRbaxw2nrOGm%2BxOj9cmtbp9ZqeTM1m8UXfQQCSTVSQox6pvtjot%2FFpHvIUjJovFEoYvHYV9C5Y%2FxN9OfcalvII37UEhTbTg%2FAQIaPb4Vz6j5u8%2FaViycMod%2FfkDcpu8QZbZoeBi%2FvbzP3XPsZvOubMtaPHkD9jt6%2BU2O7vqU%2F9C9SMvgrXpQNG%2FE0oJxun%2BCiElUa0IKQSUwERxOntKSV7ekcuh9VBZBBo3VUcB58ofKBHCwLyf9qFosz9Ibf8dGqwaBMjRig4SGOZ2UkWI7UiO9OfUPdxOYFApUZyfpY7mgEc5rtNGGk2H1lPhAk1Hp%2FVAMqQEHEUfEYkkUQq1JMdzsX7kklRrTrUi1wMcDjmu1YYfATj7Y%2BpGpPEBXuoQIj8rR9mgCl4C9yqmF7xnVWxGVniNqtpVmXBvQ6iwni5YQ8a1jYrXtc2J13HvgkvqWxuva1sbr%2BP2S5ceKGyBwDv2DbrToe1u6BkAJV7xnVLUaq0sJB8pFqcUIPi3yuwxi4JuLr%2BP30f3OkPQ72aO0xYo3%2FEsmO3QO5qEF8S0qQH0UsKXv0brnl9%2B8M7jF174%2BDsfvPOl1au%2FRL5%2F9DsbNnwHL2pHR1NTRxMZhJtHktOOxLxErPF6YlLvpC9YP73x%2B4ofw%2B3xVdrHcDE0dQQCmCRgvt9b35xINDf1CDcRSfJ%2BpYl%2BSf8YcurfmXP5F%2Fkj6J82jNsrkWiEuhVlgFfyNkB3S5MUzLhoNiwSCYcxQ7Ui4J0Xh7fmqRbaPa1tzujxkBRlsEHy0%2FOM4pYLPb7g9O6BQJN6l9zQ0OGyCaZz0vMTbHOzXfQ7a2tsterTcqxeInODoemdktw%2B1SbVhKwtW9ffe8VKadK0OVuC3bWzyKm5LeddsWTeorWyY9IMtUFutdu5g%2BRn533qkocdvLs2HmhU75br%2FMmWtD8zA3OP2t1ea636jEzqYxJZGAwFiDEd61oTsrRuW3%2F3pYNi3bS%2BRd%2BGjOfVpAPNd6y64Gsz1GaZleWIPoYL%2Fv9mTeQBENVEguiF1aC4YeXxFETw6QyPfn0m9g8IrMFAvKM1EI11DARnbqibHk%2FIojy5rSdgCyZi06y8sS024PeuO4MfwQ5Y9yKRZCqyYaF30vzeHlmUprR21tR0t0yz8KZY66zWuGvxVQB%2F36kP%2BK38t2Hu6NQ9SFJfw0AdpqPEK2qTMpf2VCqJwqPoJezTL824b8akoL%2Bx03nhh%2BoNo5e77psxg9Q5LzebIKD%2BfsY34f2MtB9fk9v5b8PT6tYrgv4kRPwd0q9z3gdJSJ0653KjCYPwCaR5aUY63eW48O%2Fkdo33yxX9wCiMv2QTrk8eGSI6Ag6moG9t2P%2FF7GRNlDjl0gw7pJ5aOXXqyqn8SENnXBmbSwUYLyqJjv3UmY1nKr4t80no0faXsaIEiF%2FBRaIBnItSce4OUif7W6Vm9T9H1X9Vj71BEm%2BRdmIJQST%2FZfVdudUvh9S%2FqqNvqT98g9SQ3lHibZY0mRVHooyDN%2FFHmTgzjdozKw28NwQ0hwN6BCoPKaEk3YtKwNhwRLXuk076CGoZNXDQcRwZvreTZY9EZi%2Bd0s4%2Bztv8iei04JQl6ZbDD2eHV7X4uHuFVfPrOmcs6m6Kr7hssr%2B1VZFcEZ%2FPdJkn1hOs8SXS%2FNFFgqt94PIZzZ3tdaL6Q5vo6piSzdy737pwsX1VyxUrF15iJ4uNkq%2Brbyg1Z%2BO8VsNC1UmcvORPRfxtPrfRwL2p%2FoA1eZp6Z%2FaGffoewaXcA%2FxBlKlQLfhQL%2FoPgBGP3qsA7IQS8qDVNswHKRSheDUvA3Q7MZoRcJMxlEygujn1QdyzfPfq3dEp%2FbXh5e5YXW2Ngfvza0ZF6UgFL%2FE0fTq4LBlvTE2qb%2FKuuzYSXVnjTfM1osvqMHVbm9950quIZlbqaL6YP7jk3kUtA0GnX2nvq53f3WoSsvEdDRnULgo2fN7lNZJgI8%2FVWi33c3bBZnGY05%2Bdm%2B3qc7fNmj4YGKLj2nfqFP%2Bg7jdDlxEV5XsJQZP6hYrS1l0VQr4c69Xueixp90gnZPmE5OF22j%2BSYEWHlZ0K%2FHgsh%2FZtsbh6h2DNRlvv6jJh9XaJaHCZDiUDKNTMkvb8vsqCyf3ZNdSmO0fa0Y4baJTtpbKzuVzeeSI7fCKr2Z0WypapnXJ4gnoWy3PoUIlIQ1TXdqhQJIXp9Wx5fYdpeWh2TY5D%2BYVyKd0jw3iumwi%2FBC3cEy4o83QlZnW79MrCgCjbhWXBlRZVVZZv4rIKpXC01HFlHdHLoeWVl6UVc%2FJ5uGm6CViW5mulYMk%2BHqNYr0AyUPivLg2oMs2MPqtuhHyRyiwvNJej1Br%2BfcLyoAyu8D9B7bgmzUqfFobF5nKnK4%2Bt8MPJkI%2FxHUNWk117jugWF%2BxazTAALQn6%2BUE9lhoI5ApGA%2FiuJOsrlNP28SVVuBVajXmircLel46w2bJS1Q0Ft0KDuikDFL%2F3pYrid1Q4FvofwRIo4R9h2ftSwc6jHAMqLcCql8YPHtlzGoByNXYN6v8hXnRaOhUvx0sVLCexwupGDR4NOYC7PePa5keIPACnuAdD7dEadRuTIiS6Lb7uskb381My5yjzF8lGCjBRqdwrWJCagfB3yCy7XT1i92hbcZ5Ci1FJkgYMDf6n%2BjspIsHFjJrTOdzSMuOa9DbDcj%2FnH9N9bIoGVgzHPWIQuFuYtaMRaq8eCKI0gEF6lPOZjBz3EEvaaxwSUT9U%2F8JbJZPJJLBLolH1La%2FRbF9AbC8JJjv%2FmMnssKjLRBJyqj9QXxNko0Ux%2FX79epfiXkm6fmKwF%2Fen1HLc6LxloXWKvGa5rVCVL83VuiPcDEX%2FK5pTXOxHfx6HHB0t2FI0qI2rCZFTrvPWU67zVuS%2FkTsLnc7IKhFg30e4FOkqNSfH5PtkmUy6Cpiv%2F36k2sbqCeCFNa%2BURpoY0sZoYmCgCr3qgZz6s8I0gP1bYiR%2BD79H56NOz0EVWCTy2%2FfffvSCCx59W7uRV9995eqrX8GLesOXNm360iZ%2BT%2FEl3uZqL%2BFyzSZ8XxpTiI%2FG0nkT4zznFZ0t4ipMz5v4q9ssqbdKUZt6u82knPCrt6PZwsnn0XySVnyPR1ZXAn72yx48bWJsu7apnI3Hy8bygUK5Js32qcytapqgmn95uexccj205vGgJ%2BeuOeG2SORmKZr%2FqKzcx9SFctMJdwMUFZDJITs7dnOp1EKZCxg304Cevyfya%2BvlKqv6aXK1qIj3imL%2BL6hL%2ByvUlFfE0VKZ7E8gBY3M%2F8VoJCFgizH1W6VyC76nH6b7jiibYVxUmVIEspry%2FLgZIlCeP11Z4zs%2FAwvVwtGFEut5S1JY4lfyT0N%2FevOLo%2BrUEgjcqc9IkGpQbv3iW7Co5b%2BKgjvpzYdH85PLcc4X21ouwEGl%2FS4qnUAvoSlXUUhR1eKr2VWFTB%2BGMl6FsiQsVD1R3urlAAIoSn7JQkmiVVCHSpCwDH%2FqPepXQ0Db77CJOAImohB%2BRPWr31ev5g%2FkE%2BzTa4lbvZo8xdWPffQu9yJTPCNB66s%2BzXoJt%2F0L6hSoCuBIoK8fnBGG87OoRckJpLqyWe4YbpGi50g0%2B3I3UD85Oa0fzubfoXxPLbW3FDWzigmyJeM0tQkax7PqTy80%2BUxfUHPlBZIRVNQ%2Bv0xRm8REKPoLmNr0%2BUo48v9GFbXPKylqQ2IKm00QddgyWGMROCTxdLB9nCY8P7j2DjlsV%2F%2Bmfr0C0r%2FNkeXbbpPlOTBBwT0mVz1zx9S%2FwJecBF9Wgv3p032iP2v4VSgfgW2G%2BHUEdEXU6iq4CtpLJfIN9XQG8dwa1VoO8XC2SrPDDyCOQptXgbcPvlAgBfxBoGwftQKeKFrNTASPt3pGGqDt%2FQRasn2kri%2BH6L80MJRsmVYJrAKyDItpJUy3%2F15WYIJqcJ9Q5N%2FLFJ4c3dc1URpWl9hW6mu50MUIelg4ucTPf15zs5DFo1c0VSp1tKB9jkwIyuM45kb%2BIP8gHed%2B6jO3v0KbIknzLy636E8KPTdCuUpB0wLo9JKnAO6pv0vS31EtBha%2FfJemkgLVVnd8KCk4qBTpQ5m7FbifBKrPJcq0pZAFVG%2FXbOFz%2BTcq2MLrcmV28Nmi%2FOHskh82bau0k8eWCaPijQPWQ5lUvslwVCfHkXBMIehqUgtDNLeauH1huvZTbYmw%2BluPjyWoNGEuxRLR7LK5fSyXFUyK7PURQv2v8D3XOt2NJ6liBbmPGOsakw1kbeOs%2B31Wm5qpH%2BiJWSzqdPr2O7zc2TmtnrzCig6bBd%2FvgQmzOlz0STWIlmZEQfupogOZFHUZ7EkUnMn0RrpIMqAgHRJAOjIJ3yGw1I%2FMAp9q9S3Q%2FclADNm1wEeO%2Bxbwg5OIYHZLY3ehG5lJk2xhco%2B6JWybpEVz2wrR6hZyD0QXZbeDVB%2BonmlimpkWprdAs4WEZDSQppsDlcdCBJJESIYFuAtUnC4GIF2C3Uu2Kv7L1bdz6FxtqxpG4TqQOqOUNAJ2HLvPWA2GgDy4O4vaDrtyl6P%2B1fAll%2BSyFcQ28GHqh7fvvf37udylf0fNwhzgz87Y%2Bcf5x9GnF6ygHu18sAbipWeF0YPBgp2GaKeQduxxdEr3SgbH1kvH7tvqSLhedomOvZyts2dw8acu3dY%2Ff%2BucuMtCuP%2Fe4zC4XnH3OLZ8ZuxTWxy8dJfU5dhDeKPSlJy5pn%2F%2B7u3XrJhmr9C5CuleGflGQocKnlAUaRKp0BAHV0ZwUt9VCqk6zYOgRIuMfePJzdmBdpPJ7%2F6B23%2Bf%2Bsp9NMDZevovvfYHG5dGPISQq1DojqNckchVrCcCYz%2FQ0hI0m3NKDRfkgsrnamo%2Bp0CAq1FyvC3a3Nak%2Fs5VX282x9Ufy3E39VAx6o7LpCvO2wK%2Bch9jNqpJCutcIOooKnYWtDK8gTRVYygRQfwgzKM5%2BjP2jOZdx3r32Py7rQUPOzAnoRs95NvRAR0qLGU11Taqu1bUYSzMcWjMEir067JQQHfIrLBHsrgv00%2FWavd8HRLMEEYFSW3HCSNQehnrHztKqHcDyo4VfZ6gPKCR%2BgufwA8GegxUEo4A%2Bgd0BASHiH6jYMLIsUdQJTs%2FC641KN4oCHWolCMLlMfIdtWKScjx7SM5LD9HnfmhrGI0S139UWfUnxgOXdJFW%2BAMcGjKr6eHAttHF5sUoeArYKDcxMSYcKA%2FxUDhPiEOEAPafSIUFArN0r24ynI91EPARDXvIDYyvqZaWeroBOUABQA%2FE%2BDXC7PWafDLQY2oiwpUEyj4RQtVlUp1GrM7In2p2A7VuiOW6otMiGOo5Mrp05ejVuTy6dNX%2Fk%2F7mybZQ0nUmfrbx3U4KueDnlHm5wdh8FFeKnoaKKh%2FTK18StOPhwG9Xo5mqXAxvw%2F79YQwwDR%2BnAKQQ4izVXioB84qcppWB7IqjU45z4CE17OvF1Dw%2BoTFqxtz8dxwtogBnF9MjIl%2Fin%2BK8s3hM9laIn0TiCbTAXL0T798bPXqx36p3chrv0O%2BGC9Xaj48Ecv8U8UEeBvUEsDlTepiU5OvlpeNGvpnKF0RvUooWhIjnx6GeBapXCQYTw9DNg6%2FOC3gZjp76oNTj9Kz6Jqobxb9NDqc08vcKReOpcsQV2K8InXFaXW3aI6Ofr1k48rp7CX7rx%2Bv1UKPsfvzQU0Kc83i2VdILmd2%2FyX55zT9luN2%2BCu4nKfwPcK%2FCvDVU%2BpHh8%2BLaldIf1fA5h3ndT6Fln9%2FW%2F9Ce1vndfvJtnPVO2xhm3qbafHVCN1X363UXHq9xuVD8OSD29Z8pZ5cZrern9cAdGW%2Fuib%2Fud%2BVK0L9a42r6C90kL8KzxwLQw9NkIQJL0ASU8M%2BVG0KsUdgdvpgP%2F6NqqP0%2FgHZFUfGEijZLHpiIgvV5%2FBltrj8Qd7XQd5p4P%2B7tJo30NMO6VGBwahSPMYiaaBYoLY6uEnciyhhh1Z%2FvvacG%2Frjpsvnpzs0B1Id6fmX8119l88XnOxe%2FuGrzzHcdu7UtY3%2B2vmXN5zUyj3ZcPl8p1sZSs6%2FnGXtwrV7Ka0XZdz83fwjjINpZWYw85lL8BRK4nGyIir2RiOsEyipuEcIakpGjWgBjLiHWOgj0Yi34gW1kKPxHt2Na5q%2Blwg1RdRSpFDNzosb44YJXnAfoEOpZW%2F%2F6u1lhYA6leevezbI26zNHO811M2dc5HFxpk4i1jPC0s21%2FBWW5DnPQbn2X1WK43%2FaM2n18DfSoybbNHijFpamzXI31eRibGUOxSu%2FlT96YZlq1Yt20DaSBuG6knw2eusHs5EPBfNmVvHKdaQzcDfz9ZsXmLDWGXy2U5OsYSsIn8CS12jQIyD12KKqZrLPy7mSPdICmd6WGHG8NDZkkHuE4h9TU8FpmUO%2FVjC%2FEinToFyoNDz2p9XD6g78WgQdPG7Z3R0T%2FZ5dTM9lsL8Ktek7szl2L%2BgQwGgwkZHc2g5Su7NvVqwGy2Ua4KSXUwt1X4PaM5paaEu6jQ5zVFyNabxvUksVt2T%2F4VeamYPlLtffdQsk%2B2sUTY%2FzDXl%2F05W53%2FBz9UK3p7LjapZ2ZxOm%2BUlZXrL3HHGqO8%2BwVroDaCTTnTxitMxmiAAYQzVJQH%2Bnj3oIHnPaN6Zq6sNSLjBl8tKgVr2mj%2F9CWi9dnKca8rBQBsd5R1tzVlgrl5pbnPw6kZclCr2CHxMnHohLz%2B3KRQokzALyeIKFU1TNCiayJdoHvDYe7K6mZLm8S3uJ9dojuaJ62%2FqN%2FtjQxnSnhnKPw%2BLNrLi8ZKyJ3x1YhiI1aNAtP6NzCGzYv3DmaGh%2FLvQZnt0evgIhTFV0kE%2FPYxAnOHhCQUZdCWY5JWJwMzlAGl1mpNbDU7yyGnhRMILsYhH3VRAijrPcBU8%2FCj1Y9NY6cnGVW0CjTLaz7E3epvaT%2FLtTV72Rs%2B0WVVmd0dz%2FMGTI5F0OsIviaqDlbbO5X6xT3PeXbXHRtf%2Fz%2Bfdka%2BeKPr8KF7IF4vBsT9MFPuPJMBTBMq9hQxXelQ%2Bbewnf18ap4Ib%2BmSMrtDU5zqlD8QANa5MBGh%2FOwOvSDfcV2d66mfEWsbGWmIz6nsyZDWQSmqmxDneYyvjHPmRXHZxeueyRGLZzvRioKnGto9nIPkibAJA16adcOZRQr1iAP3bUyBR7T4RgAWTKxhkCYFwshq%2B7iV9r0whk50cmRcTg4fy5x4OmmNkHndIA2%2BYuMbmE9dwGYB4KFTsvnDE6Ah47r%2FfE3AYI%2BoXADpkdlENcZ8OZEEf8FFGZNxMs6ZLpG3SUFLL7Q2kcFU%2FA%2FJsw%2BvWDa%2F7emewLaoeibaF1B9qUNnuqWK3%2BUfXYVL1v%2FomD15xxeDkPnXTOKSVcCbDGtOu0YQNpGAP7U1HU58UrqGu8xIbHtkQ3LVhb7Dx46ET3Ffcm1q0YcOizNmf3bC3VjWfAcpSv3MyTlgJ23FHQgmgvk%2Bgk8pL0mcCDOn08MDAQlf%2B%2FSlTZ1z12fnqntOhbOTL9%2FZdevbAPN%2Byby1f%2FuUtC%2Fixm8ZBo59LTXEW060hGrTDplNprWd58fwB%2Fb%2FE27BdS%2Fs7U%2BrGVCeQ46nzaw9QccnmZerGZZs3Yw9aVHt%2BKh6HN4ti6lxIhT%2FwahnZtWwzlY9QHQ2c79C%2BdxzvVDKy8GqKWQERO9YAKbpsDUTLdWV5dE8PVPjvj9pqw7ah%2FPFVtkit7aj6G5xY9mfJrCz1j1e0BcnPol4UjtrCdbahIVtd2HaURujnFJR8CuOuUUfhrGhgKKgjCYNSvCc1WKlEp8wHUaAYynFNyzZn%2B2MnYv36dbMDBTonl%2FT%2Fma5IKAyEGz%2B4eRnVtaX6tss2o34u8mWorFtuFgm4A6qK%2Fyp%2FgLEBVat5WnPDdKA574ubuFJ%2FIUfZ%2FY2Nt6mN%2BZNNTSTaeI56gKwkXerTe9DDHUw8%2FH35FY3nNN7GGuBKWhrV9ep%2B0k1WjNWVaHkW1yA%2BQHWNu8rtBw2a5YXuE40rs7%2FGA%2Bj09V3hA98yRnFPOGr8ltGlsFdD%2F7tRce3LH6Trcneuiy7K7J3khKu%2B3qUaXPWaX7T6%2FKfj9BX2eZq2XAcZT79u1ClJzUtHUqfqSMWBcZS43Ena0cUGLgpkKxB1QM%2B0Fxz10wgg6r5rltnFpH05pepUq3Y2HfYqeKRntmUFNz%2BXmcOs1H31U6cC6RTVLfCg7RNBF1UF2%2FwBgu0fFQtPEU1sSg3VcNsR7dWq3af87tUFn1l3ltXpaJxpNvtcZkH2WmMst3JqRpxUH%2BWC0E1qOGtP66s1MYv%2BVLu8%2FXFXvV%2FZbunYYBeVN64ls0ur6NzpV9xzlmQwB5qC4Tq70WC0tk8dWJXeHvkD0h9zJOM0vD86%2F1NJMaIAolctvlByferCsqOKDKceOfUu1PsmoFCamV5mCrMUOCi6V6FJosMF22AcrKJgQDVhfYh6tepp%2FlYgvnCEAbJQ1L0rOpajEmRcasMiPfxhgGoVo4rwreQpV6fUJHH2e8fa1s2c13Apl1b89a58ozdoap2sjgLN9uISl7P1DrulyeIkt0zr6JjWocoPOZsaXPb6jtqBblsgsaRre2xHi4nELm0MhG1%2Bx1SXwLpFi53b%2BaHRYo%2FIrbZtuWAKu5cSEXfybnnmUCaXGTpQr0xK2O2WWY76f%2BnAjNVf7nCZHU5XqIkTnpt6VtvsFlPXg1031g%2FVRdpkkyVpD7jnmax88QwDvg%2F66NnMRdRXTcGTmQc3cuINwN5IQqi0yzb%2BYFVHuVqI5s4ADfg5oE4ybDLd28mFSFmYvRoomsWXEdLU2Wl3GJy93ZNb%2Fd5gqmNaqJZSO1l6PVRy0nZIj%2F45EetjLguh1rLqR%2BSK0hO6NrsqcNX8zoUdjQYDJ7tb4os6%2Bi%2BY0qpY2AWlnLRDWdGFTfGY1gV0zNAtJ7pdo24se0D88AwLY%2FgZmE9iuP4V5v7CSR%2FRThaHLh%2BUeBkXwU6BC7lGOevK65udTv%2BtS%2FPfW7qj3ljTcj3b9OkbV85t8xsMj7Ddj7DGpthZKwKPvso%2Fc%2F1K9aLE12fMWLV1y1D9ua8lyJdWXr%2FbG%2BnoCFutf%2FmLILe39ITUV4igr3876fpX5g2zeB52sWnIL4fXHlgeUzOx5QfIvJQyrKQE9wHUqVq%2BPEaOrz0wVvNbJZVSfsuMzxN4l9PkedFzw9V5Dj%2BnzpgoT4ZxCxJfC5RWLc74YVHxKlExCYt0JAOMatREhHBSCAtSfod6x6Ls8HCWECLwXZ9nd5Dz1T24JUdWs6fU3%2B%2BfcnT49Qe%2BkBs%2BwdsMZgPXMp3U5S958snPP%2FEE7bvkOPCuTUDTUQ%2FUzirLhML9yPahoe1D5Fj5jWsaoveyP00PehdUAHk%2FseDVWsvDWXXXsyn%2F4wfpXc2V3%2FQxli3jl%2F5hj%2F83avSCfpTNxOEKLmTjxOEKuxgNlsQn0xgct724mhynupNW1Ph6o3RYS3%2F%2B2TJrzLlkFz%2Bip3qCHKf6eqW02QJLjBYuuj4sobhCWqa%2FYHGEHpcnumuWSOhxeaL7sOakNR6vvmo%2BYcfFA8UFXEPZf9UjyudIOyNwx%2Fi90DdsujS%2FFX2UAwvWSVK4NxaMhAGw3oowp%2Fuc8CTi7D2rBgZWwb%2F60faR7SPsEbjkXy4G0XaqhXPwe2cePjxjxuHD6ssQuR1fq6PF0E%2Bo2t1nePTn8TUmxz%2FA3crMoCc7egESuoTHYc7mYdg6etORoOhR7BBGD%2BqJopELrl4S6cJNRtEAsLP%2FOdvnJq0Wo0GolY2Et9VFB2Kf%2B4bZvVyxfOMz3WdFfSIryj6DwWghre7aQbdiDrkTL3A3vNDuDpk93HqXwam%2BbWmUJZfNn5ozKV5Pmmq8PF%2FjVY%2B2Tlk2M2RzSXKjmbQ4RZcQavEYrN%2F9rlXwtIQqzxQNMzPPfHYLvuPoO9TbT8bpGw5CQPGd%2BSyX%2FCyf0Vxjd2R9NmsunnXYa8xGHzn%2BsSfM5J0y0DZEXWWxkXjcR75KBLNLHi7XvX2G8VOrf4Ykg0AMdBESIpo7MgAfyakA6rkqpI6UjNs0px7cMV%2BD5BF49Tez1VGnYmq0WIijp985m4Sn2gJR9b07riPPFo97OYbUZbxJCpot7H%2FlpZBicglCPN7WOfJkcHqc3ElWqvvz%2F1E6bIQrG%2Btz6WkM1SM9FBTR7FSs8KyBBytSmNEoquJNFN5EQyTiCrnKDx1h58yxCepPHU5nxGoxEQeeOZi2m80DxNxncVhr6BmEfUarxejw%2BWSiHhWk19bSY7aKR5MsteblJpfTLtjimBouXsm3d3djjYM%2BwEW0El9dM%2FueVRWIsXwe43R7SgbVZqrnqoJ1X%2FkuF7pcgf8duv4q6vayV5U9zMV91GxO59UUjW8rHV6u799WzKMT7umRCXbYUKM%2BfoaCcwgaoqZUtmodV3p%2BX7akb4dnU9B9La38RPFUG2SCC90tVA4XwEFhyOpZZrUCsgWYHsczLFBBVGNtstoN1bw0Z%2BO4fYIbvZVt4EUcJEKOhHeincWqONw%2Bq6w5Go%2BWGOSR7LhKV%2BKBqbBPpfUvOf9QqkpDyVhBeyyZQGMsdA5FBUqvFMtUyGq9vjnsAJU4UcrxldP1CCaofyDkSAifoP5QwWx%2BSyUGxp75BzGAvtG7uQ38LehlyEQMeh0TeE6Bm7tYdXqdkt0uOb3kfYlNwmOdDyacOq%2FqlFo1v%2BPTmTi3E%2FglC9W11b34A22zmLzvb231Q0L2Bgg60OTW4YdstO%2BYOJnO38TtpH7zy9ymokWyA79qlVSn38HtpFlImFnhu3b4boNWXklOXV0Iwo7lQ1hrZyPFcwtjwFP7iEKSHSSJw509kh8kj6pr%2BH1jR7km9vcvqN9657vffefkv%2BfKxge1X%2B7RdjYUPIESN7gTvRkB%2FRMYtEkaVkdHApmdBPpnKmz0n1xSWFOyVIuLrinZwpoCRe6kyiVZoHX088F%2BUX4%2BWKS4iBTP0IWxGtZgOdMaV4KTayqHQF%2FVihBwTbgDXTCmKoOBJeNhwJMzEVjtjIFLuU38fPR7hqNG1JS7g%2FqRCuy3vmQ3W9Vu8qbVbP%2BSzazGRJH83MzP90Ck2m31mMjP8TiLn5uwD2Ugr2PFvPQjB5BnSJvQxGQZZEB%2BLopqzGzDbMmbkAPkZVJjeO5FzOSBKCgJze2ZS4Gemc9twrwY6u9H61iUQTcRvtdT9RW3tRxAWwFs2tcuJRnI6xjmBdWjbgFNRHMHiF1uHYBfUR%2Fut5Ug2jXAaT96%2B9RH%2FFToRwIzGbKmVJ1AZQnoabSB1yyIg7ByAridHApPMjyw0OiV6RjSbCuzwLAvFizBliWJua1tsuAgvNPbmljYbpt8lkWam7b3XZiOiKJskMOtmfScnsbPW208knwjuXrXK4Q1iKIgNyYXXDVT9C2Ye%2F78GQ5BEEXfFdde2RwauOysdJNL5AzCy84ard%2FnGAVN8alecnFdgu5Gbd5DJTL%2BhHZK0vApVy3OfU8XTSJg1TlssivsPYUlIqvn66PzrVTymCc4wgF6SDNR0pDf%2B9Gp%2BVnsUH5WtpHYsuhOaey8zdwLN47V8MTbm78g687%2BP3cx6tcAeNpjYGRgYGBk8s0%2FzBIfz2%2FzlUGeZQNQhOFCWfF0GP0%2F8P8c1jusIkAuBwMTSBQAYwQM6HjaY2BkYGAV%2Bd8KJgP%2FXWG9wwAUQQGLAYqPBl942n1TvUoDQRCe1VM8kWARjNrZGIurBAsRBIuA2vkAFsJiKTYW4guIjT5ARMgTxCLoA1hcb5OgDyGHrY7f7M65e8fpLF%2B%2B2W%2FnZ2eTmGfaIJi5I0qGDlZZcD51QzTTJirZPAI9JIwVA%2BwT8L5nOdMaV0AuMJ%2BicRHq8of6LSD18fzq8ds7xjpwBnQiSI9V5QVl6NwPvgM15NXn%2FAtWZyj3W0HjEXitOc%2FdIdbetPdFTZ%2BP6t%2BX7xU0%2Fk6GJtOe1%2FB3arN0%2Fpmz1J4UZc%2BD6ExwjD7vioeGd5HvhvU%2BR%2BDZcGZ6YBPNfAi0G97iBPwFXqph2cW8%2BD7kjMfwtinHb6kLb6Wygk3cZytSEoptGrlScdHtLPeri1JKueACMZfU1ViJG1Sq5E43dIt7SZZFl1zuRhb%2FGOs44xFVDbrJzB5tYs35OmaXTrEmkv0DajnMWQB42mNgYNCCwk0MLxheMPrhgUuY2JiUmOqY2pjWMD1hdmPOY%2B5hPsLCwWLEksSyiOUOawzrLrYiti%2FsCuxJ7Kc45DiSOPZxmnG2cG7jvMelweXDNYXrEbcBdxf3KR4OngheLd443g18fHwZfFv4NfiX8T8TEBIIEZggsEpQS7BMcJsQl5CFUI3QAWEp4RLhCyJaIldEbURXiJ4RYxEzE0sQ2yD2TzxIfJkEk4SeRJbENIkNEg8k%2FklqSGZITpE8InlL8p2UmVSG1A6pb9Jx0ltkjGSmyDySlZF1kc2RnSK7R%2FaZnJ5cmdwB%2BST5SwpuCvsUjRTLFHcoOShNU9qhzKespGyhXKV8SPmBCpOKgUqcyjSVR6omqgmqe9RE1OrUnqkHqO9R%2F6FholGgsUZzgeYZLTUtL60WbS7tKh0OnQydXTpvdGV0O3S%2F6Gnopekt0ruhz6fvpl%2Bnv0n%2Fh4GdQYvBJUMhwwTDdYYvjFSM4oxmGd0zVjK2M84w3mYiYZJgssLkkqmO6TzTF2Z2ZjVmd8ylzP3MJ5lfsRCwcLJoszhhyWXpZdlhecZKxirHapbVPesF1ndsJGwCbBbZ%2FLA1sn1jZ2XXY3fFXsM%2Bz36V%2FS8HD4cGh2OOTI51ThJOK5zeOUs4OzmXOS9wPuUi4JLgss7lm2uU6zY3NrcSty1u39zN3Mvct7l%2F8xDzMPLw88jyaPM44ynkaeEZ59niucqLyUvPKwgAn3OqOQAAAQAAARcApwARAAAAAAACAAAAAQABAAAAQAAuAAAAAHjarZK9TgJBEMf%2Fd6CRaAyRhMLqCgsbL4ciglTGRPEjSiSKlnLycXJ86CEniU%2FhM9jYWPgIFkYfwd6nsDD%2Bd1mBIIUx3mZnfzs3MzszuwDCeIYG8UUwQxmAFgxxPeeuyxrmcaNYxzTuFAewi0fFQSTxqXgM11pC8TgS2oPiCUS1d8Uh8ofiSczpYcVT5LjiCPlY8Qui%2BncOr7D02y6%2FBTCrP%2Fm%2Bb5bdTrPi2I26Z9qNGtbRQBMdXMJBGRW0YOCecxEWYoiTCvxrYBunqHPdoX2bLOyrMKlZg8thDETw5K7Itci1TXlGy0124QRZZLDFU%2FexhxztMozlosTpMH6ZPge0L%2BOKGnFKjJ4WRwppHPL0PP3SI2P9jLQwFOu3GRhDfkeyDo%2F%2FG7IHgzllZQxLdquvrdCyBVvat3seJlYo06gxapUxhU2JWnFygR03sSxnEkvcpf5Y5eibGq315TDp7fKWm8zbUVl71Aqq%2FZtNnlkWmLnQtno9ycvXYbA6W2pF3aKfCayyC0Ja7Fr%2FPW70%2FHO4YM0OKxFvzf0C1MyPjwAAeNpt1VWUU2cYRuHsgxenQt1d8%2F3JOUnqAyR1d%2FcCLQVKO22pu7tQd3d3d3d3d3cXmGzumrWy3pWLs%2FNdPDMpZaWu1783l1Lpf14MnfzO6FbqVupfGkD30iR60JNe9KYP09CXfvRnAAMZxGCGMG3pW6ZjemZgKDMyEzMzC7MyG7MzB3MyF3MzD%2FMyH%2FOzAAuyEAuzCIuyGIuzBGWCRIUqOQU16jRYkqVYmmVYluVYng6GMZwRNGmxAiuyEiuzCquyGquzBmuyFmuzDuuyHuuzARuyERuzCZuyGZuzBVuyFVuzDduyHdszklGMZgd2ZAw7MZZxjGdnJrALu9LJbuzOHkxkT%2FZib%2FZhX%2FZjfw7gQA7iYA7hUA7jcI7gSI7iaI7hWI7jeE7gRE7iZE5hEqdyGqdzBmdyFmdzDudyHudzARdyERdzCZdyGZdzBVdyFVdzDddyHddzAzdyEzdzC7dyG7dzB3dyF3dzD%2FdyH%2FfzAA%2FyEA%2FzCI%2FyGI%2FzBE%2FyFE%2FzDM%2FyHM%2FzAi%2FyEi%2FzCq%2FyGq%2FzBm%2FyFm%2FzDu%2FyHu%2FzAR%2FyER%2FzCZ%2FyGZ%2FzBV%2FyFV%2FzDd%2FyHd%2FzAz%2FyEz%2FzC7%2FyG7%2FzB3%2FyF3%2FzD%2F9mpYwsy7pl3bMeWc%2BsV9Y765NNk%2FXN%2BmX9swHZwGxQNjgb0nPkmInjR0V7Uq%2FOsaPL5Y7ylE3l8tQNN7kVt%2BrmbuHW3LrbcDvam1rtzVvdm50TxrU%2FDBvRtZUY1rV5a3jXFn550Wo%2FXDNWK3dFmh7X9LimxzU9qulRTY9qelTTo5rlKLt2wk7YiaprL%2ByFvbAX9pK9ZC%2FZS%2FaSvWQv2Uv2kr1kr2KvYq9ir2KvYq9ir2KvYq9ir2Kvaq9qr2qvaq9qr2qvaq9qr2qvai%2B3l9vL7eX2cnu5vdxebi%2B3l9sr7BV2CjuFncJOYaewU9gp7NTs1LyrZq9mr2avZq9mr2avZq9mr26vbq9ur26vbq9ur26vbq9ur26vYa9hr2GvYa9hr2GvYa%2FR7oXuQ%2Feh%2B2j%2FUU7e3C3cqc%2FV3fYdof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D92H7kP3ofvQfeg%2BdB%2B6D92H7kP3ofvQfRT29B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6j6nuG3Ya7U5q%2F0hN3nCTW3Grbu4Wrs%2FrP%2Bk%2F6T%2FpP%2Bk%2F6T%2FpP%2Bk%2B6T7pPek86TzpPOk86TzpOuk66TrpOuk66TrpOlWmPu%2F36zrpOuk66TrpOuk66TrpOvl%2FPek76TvpO%2Bk76TvpO%2Bk76TvpO%2Bk76TvpO7V9t%2BqtVs%2FOaOURU6bo6PgPt6rZbwAAAAABVFDDFwAA%29%20format%28%27woff%27%29%2Curl%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAAPAIAAAwBwRkZUTW0ql9wAAAD8AAAAHEdERUYBRAAEAAABGAAAACBPUy8yZ7lriQAAATgAAABgY21hcNqt44EAAAGYAAAGcmN2dCAAKAL4AAAIDAAAAARnYXNw%2F%2F8AAwAACBAAAAAIZ2x5Zn1dwm8AAAgYAACUpGhlYWQFTS%2FYAACcvAAAADZoaGVhCkQEEQAAnPQAAAAkaG10eNLHIGAAAJ0YAAADdGxvY2Fv%2B5XOAACgjAAAAjBtYXhwAWoA2AAAorwAAAAgbmFtZbMsoJsAAKLcAAADonBvc3S6o%2BU1AACmgAAACtF3ZWJmwxhUUAAAsVQAAAAGAAAAAQAAAADMPaLPAAAAANB2gXUAAAAA0HZzlwABAAAADgAAABgAAAAAAAIAAQABARYAAQAEAAAAAgAAAAMEiwGQAAUABAMMAtAAAABaAwwC0AAAAaQAMgK4AAAAAAUAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAFVLV04AQAAg%2F%2F8DwP8QAAAFFAB7AAAAAQAAAAAAAAAAAAAAIAABAAAABQAAAAMAAAAsAAAACgAAAdwAAQAAAAAEaAADAAEAAAAsAAMACgAAAdwABAGwAAAAaABAAAUAKAAgACsAoAClIAogLyBfIKwgvSISIxsl%2FCYBJvonCScP4APgCeAZ4CngOeBJ4FngYOBp4HngieCX4QnhGeEp4TnhRuFJ4VnhaeF54YnhleGZ4gbiCeIW4hniIeIn4jniSeJZ4mD4%2F%2F%2F%2FAAAAIAAqAKAApSAAIC8gXyCsIL0iEiMbJfwmASb6JwknD%2BAB4AXgEOAg4DDgQOBQ4GDgYuBw4IDgkOEB4RDhIOEw4UDhSOFQ4WDhcOGA4ZDhl%2BIA4gniEOIY4iHiI%2BIw4kDiUOJg%2BP%2F%2F%2F%2F%2Fj%2F9r%2FZv9i4Ajf5N%2B132nfWd4F3P3aHdoZ2SHZE9kOIB0gHCAWIBAgCiAEH%2F4f%2BB%2F3H%2FEf6x%2FlH3wfdh9wH2ofZB9jH10fVx9RH0sfRR9EHt4e3B7WHtUezh7NHsUevx65HrMIFQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAACjAAAAAAAAAA1AAAAIAAAACAAAAADAAAAKgAAACsAAAAEAAAAoAAAAKAAAAAGAAAApQAAAKUAAAAHAAAgAAAAIAoAAAAIAAAgLwAAIC8AAAATAAAgXwAAIF8AAAAUAAAgrAAAIKwAAAAVAAAgvQAAIL0AAAAWAAAiEgAAIhIAAAAXAAAjGwAAIxsAAAAYAAAl%2FAAAJfwAAAAZAAAmAQAAJgEAAAAaAAAm%2BgAAJvoAAAAbAAAnCQAAJwkAAAAcAAAnDwAAJw8AAAAdAADgAQAA4AMAAAAeAADgBQAA4AkAAAAhAADgEAAA4BkAAAAmAADgIAAA4CkAAAAwAADgMAAA4DkAAAA6AADgQAAA4EkAAABEAADgUAAA4FkAAABOAADgYAAA4GAAAABYAADgYgAA4GkAAABZAADgcAAA4HkAAABhAADggAAA4IkAAABrAADgkAAA4JcAAAB1AADhAQAA4QkAAAB9AADhEAAA4RkAAACGAADhIAAA4SkAAACQAADhMAAA4TkAAACaAADhQAAA4UYAAACkAADhSAAA4UkAAACrAADhUAAA4VkAAACtAADhYAAA4WkAAAC3AADhcAAA4XkAAADBAADhgAAA4YkAAADLAADhkAAA4ZUAAADVAADhlwAA4ZkAAADbAADiAAAA4gYAAADeAADiCQAA4gkAAADlAADiEAAA4hYAAADmAADiGAAA4hkAAADtAADiIQAA4iEAAADvAADiIwAA4icAAADwAADiMAAA4jkAAAD1AADiQAAA4kkAAAD%2FAADiUAAA4lkAAAEJAADiYAAA4mAAAAETAAD4%2FwAA%2BP8AAAEUAAH1EQAB9REAAAEVAAH2qgAB9qoAAAEWAAYCCgAAAAABAAABAAAAAAAAAAAAAAAAAAAAAQACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAEAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAL4AAAAAf%2F%2FAAIAAgAoAAABaAMgAAMABwAusQEALzyyBwQA7TKxBgXcPLIDAgDtMgCxAwAvPLIFBADtMrIHBgH8PLIBAgDtMjMRIRElMxEjKAFA%2Fujw8AMg%2FOAoAtAAAQBkAGQETARMAFsAAAEyFh8BHgEdATc%2BAR8BFgYPATMyFhcWFRQGDwEOASsBFx4BDwEGJi8BFRQGBwYjIiYvAS4BPQEHDgEvASY2PwEjIiYnJjU0Nj8BPgE7AScuAT8BNhYfATU0Njc2AlgPJgsLCg%2BeBxYIagcCB57gChECBgMCAQIRCuCeBwIHaggWB54PCikiDyYLCwoPngcWCGoHAgee4AoRAgYDAgECEQrgngcCB2oIFgeeDwopBEwDAgECEQrgngcCB2oIFgeeDwopIg8mCwsKD54HFghqBwIHnuAKEQIGAwIBAhEK4J4HAgdqCBYHng8KKSIPJgsLCg%2BeBxYIagcCB57gChECBgAAAAABAAAAAARMBEwAIwAAATMyFhURITIWHQEUBiMhERQGKwEiJjURISImPQE0NjMhETQ2AcLIFR0BXhUdHRX%2Boh0VyBUd%2FqIVHR0VAV4dBEwdFf6iHRXIFR3%2BohUdHRUBXh0VyBUdAV4VHQAAAAABAHAAAARABEwARQAAATMyFgcBBgchMhYPAQ4BKwEVITIWDwEOASsBFRQGKwEiJj0BISImPwE%2BATsBNSEiJj8BPgE7ASYnASY2OwEyHwEWMj8BNgM5%2BgoFCP6UBgUBDAoGBngGGAp9ARMKBgZ4BhgKfQ8LlAsP%2Fu0KBgZ4BhgKff7tCgYGeAYYCnYFBv6UCAUK%2BhkSpAgUCKQSBEwKCP6UBgwMCKAIDGQMCKAIDK4LDw8LrgwIoAgMZAwIoAgMDAYBbAgKEqQICKQSAAABAGQABQSMBK4AOwAAATIXFhcjNC4DIyIOAwchByEGFSEHIR4EMzI%2BAzUzBgcGIyInLgEnIzczNjcjNzM%2BATc2AujycDwGtSM0QDkXEys4MjAPAXtk%2FtQGAZZk%2FtQJMDlCNBUWOUA0I64eYmunznYkQgzZZHABBdpkhhQ%2BH3UErr1oaS1LMCEPCx4uTzJkMjJkSnRCKw8PIjBKK6trdZ4wqndkLzVkV4UljQAAAgB7AAAETASwAD4ARwAAASEyHgUVHAEVFA4FKwEHITIWDwEOASsBFRQGKwEiJj0BISImPwE%2BATsBNSEiJj8BPgE7ARE0NhcRMzI2NTQmIwGsAV5DakIwFgwBAQwWMEJqQ7ICASAKBgZ4BhgKigsKlQoP%2FvUKBgZ4BhgKdf71CgYGeAYYCnUPtstALS1ABLAaJD8yTyokCwsLJCpQMkAlGmQMCKAIDK8LDg8KrwwIoAgMZAwIoAgMAdsKD8j%2B1EJWVEAAAAEAyAGQBEwCvAAPAAATITIWHQEUBiMhIiY9ATQ2%2BgMgFR0dFfzgFR0dArwdFcgVHR0VyBUdAAAAAgDIAAAD6ASwACUAQQAAARUUBisBFRQGBx4BHQEzMhYdASE1NDY7ATU0NjcuAT0BIyImPQEXFRQWFx4BFAYHDgEdASE1NCYnLgE0Njc%2BAT0BA%2BgdFTJjUVFjMhUd%2FOAdFTJjUVFjMhUdyEE3HCAgHDdBAZBBNxwgIBw3QQSwlhUdZFuVIyOVW5YdFZaWFR2WW5UjI5VbZB0VlshkPGMYDDI8MgwYYzyWljxjGAwyPDIMGGM8ZAAAAAEAAAAAAAAAAAAAAAAxAAAB%2F%2FIBLATCBEEAFgAAATIWFzYzMhYVFAYjISImNTQ2NyY1NDYB9261LCwueKqqeP0ST3FVQgLYBEF3YQ6teHmtclBFaw4MGZnXAAAAAgAAAGQEsASvABoAHgAAAB4BDwEBMzIWHQEhNTQ2OwEBJyY%2BARYfATc2AyEnAwL2IAkKiAHTHhQe%2B1AeFB4B1IcKCSAkCm9wCXoBebbDBLMTIxC7%2FRYlFSoqFSUC6rcQJBQJEJSWEPwecAIWAAAAAAQAAABkBLAETAALABcAIwA3AAATITIWBwEGIicBJjYXARYUBwEGJjURNDYJATYWFREUBicBJjQHARYGIyEiJjcBNjIfARYyPwE2MhkEfgoFCP3MCBQI%2FcwIBQMBCAgI%2FvgICgoDjAEICAoKCP74CFwBbAgFCvuCCgUIAWwIFAikCBQIpAgUBEwKCP3JCAgCNwgK2v74CBQI%2FvgIBQoCJgoF%2FvABCAgFCv3aCgUIAQgIFID%2BlAgKCggBbAgIpAgIpAgAAAAD%2F%2FD%2F8AS6BLoACQANABAAAAAyHwEWFA8BJzcTAScJAQUTA%2BAmDpkNDWPWXyL9mdYCZv4f%2FrNuBLoNmQ4mDlzWYP50%2FZrWAmb8anABTwAAAAEAAAAABLAEsAAPAAABETMyFh0BITU0NjsBEQEhArz6FR384B0V%2Bv4MBLACiv3aHRUyMhUdAiYCJgAAAAEADgAIBEwEnAAfAAABJTYWFREUBgcGLgE2NzYXEQURFAYHBi4BNjc2FxE0NgFwAoUnMFNGT4gkV09IQv2oWEFPiCRXT0hCHQP5ow8eIvzBN1EXGSltchkYEAIJm%2F2iKmAVGilucRoYEQJ%2FJioAAAACAAn%2F%2BAS7BKcAHQApAAAAMh4CFQcXFAcBFgYPAQYiJwEGIycHIi4CND4BBCIOARQeATI%2BATQmAZDItoNOAQFOARMXARY7GikT%2Fu13jgUCZLaDTk6DAXKwlFZWlLCUVlYEp06DtmQCBY15%2Fu4aJRg6FBQBEk0BAU6Dtsi2g1tWlLCUVlaUsJQAAQBkAFgErwREABkAAAE%2BAh4CFRQOAwcuBDU0PgIeAQKJMHt4dVg2Q3mEqD4%2Bp4V4Qzhadnh5A7VESAUtU3ZAOXmAf7JVVbJ%2FgHk5QHZTLQVIAAAAAf%2FTAF4EewSUABgAAAETNjIXEyEyFgcFExYGJyUFBiY3EyUmNjMBl4MHFQeBAaUVBhH%2BqoIHDxH%2Bqf6qEQ8Hgv6lEQYUAyABYRMT%2Fp8RDPn%2BbxQLDPb3DAsUAZD7DBEAAv%2FTAF4EewSUABgAIgAAARM2MhcTITIWBwUTFgYnJQUGJjcTJSY2MwUjFwc3Fyc3IycBl4MHFQeBAaUVBhH%2BqoIHDxH%2Bqf6qEQ8Hgv6lEQYUAfPwxUrBw0rA6k4DIAFhExP%2BnxEM%2Bf5vFAsM9vcMCxQBkPsMEWSO4ouM5YzTAAABAAAAAASwBLAAJgAAATIWHQEUBiMVFBYXBR4BHQEUBiMhIiY9ATQ2NyU%2BAT0BIiY9ATQ2Alh8sD4mDAkBZgkMDwr7ggoPDAkBZgkMJj6wBLCwfPouaEsKFwbmBRcKXQoPDwpdChcF5gYXCktoLvp8sAAAAA0AAAAABLAETAAPABMAIwAnACsALwAzADcARwBLAE8AUwBXAAATITIWFREUBiMhIiY1ETQ2FxUzNSkBIgYVERQWMyEyNjURNCYzFTM1BRUzNSEVMzUFFTM1IRUzNQchIgYVERQWMyEyNjURNCYFFTM1IRUzNQUVMzUhFTM1GQR%2BCg8PCvuCCg8PVWQCo%2F3aCg8PCgImCg8Pc2T8GGQDIGT8GGQDIGTh%2FdoKDw8KAiYKDw%2F872QDIGT8GGQDIGQETA8K%2B%2BYKDw8KBBoKD2RkZA8K%2FqIKDw8KAV4KD2RkyGRkZGTIZGRkZGQPCv6iCg8PCgFeCg9kZGRkZMhkZGRkAAAEAAAAAARMBEwADwAfAC8APwAAEyEyFhURFAYjISImNRE0NikBMhYVERQGIyEiJjURNDYBITIWFREUBiMhIiY1ETQ2KQEyFhURFAYjISImNRE0NjIBkBUdHRX%2BcBUdHQJtAZAVHR0V%2FnAVHR39vQGQFR0dFf5wFR0dAm0BkBUdHRX%2BcBUdHQRMHRX%2BcBUdHRUBkBUdHRX%2BcBUdHRUBkBUd%2FagdFf5wFR0dFQGQFR0dFf5wFR0dFQGQFR0AAAkAAAAABEwETAAPAB8ALwA%2FAE8AXwBvAH8AjwAAEzMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYhMzIWHQEUBisBIiY9ATQ2ATMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYhMzIWHQEUBisBIiY9ATQ2ATMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYhMzIWHQEUBisBIiY9ATQ2MsgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR389cgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR389cgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR0ETB0VyBUdHRXIFR0dFcgVHR0VyBUdHRXIFR0dFcgVHf5wHRXIFR0dFcgVHR0VyBUdHRXIFR0dFcgVHR0VyBUd%2FnAdFcgVHR0VyBUdHRXIFR0dFcgVHR0VyBUdHRXIFR0ABgAAAAAEsARMAA8AHwAvAD8ATwBfAAATMzIWHQEUBisBIiY9ATQ2KQEyFh0BFAYjISImPQE0NgEzMhYdARQGKwEiJj0BNDYpATIWHQEUBiMhIiY9ATQ2ATMyFh0BFAYrASImPQE0NikBMhYdARQGIyEiJj0BNDYyyBUdHRXIFR0dAaUCvBUdHRX9RBUdHf6FyBUdHRXIFR0dAaUCvBUdHRX9RBUdHf6FyBUdHRXIFR0dAaUCvBUdHRX9RBUdHQRMHRXIFR0dFcgVHR0VyBUdHRXIFR3%2BcB0VyBUdHRXIFR0dFcgVHR0VyBUd%2FnAdFcgVHR0VyBUdHRXIFR0dFcgVHQAAAAABACYALAToBCAAFwAACQE2Mh8BFhQHAQYiJwEmND8BNjIfARYyAdECOwgUB7EICPzxBxUH%2FoAICLEHFAirBxYB3QI7CAixBxQI%2FPAICAGACBQHsQgIqwcAAQBuAG4EQgRCACMAAAEXFhQHCQEWFA8BBiInCQEGIi8BJjQ3CQEmND8BNjIXCQE2MgOIsggI%2FvUBCwgIsggVB%2F70%2FvQHFQiyCAgBC%2F71CAiyCBUHAQwBDAcVBDuzCBUH%2FvT%2B9AcVCLIICAEL%2FvUICLIIFQcBDAEMBxUIsggI%2FvUBDAcAAwAX%2F%2BsExQSZABkAJQBJAAAAMh4CFRQHARYUDwEGIicBBiMiLgI0PgEEIg4BFB4BMj4BNCYFMzIWHQEzMhYdARQGKwEVFAYrASImPQEjIiY9ATQ2OwE1NDYBmcSzgk1OASwICG0HFQj%2B1HeOYrSBTU2BAW%2BzmFhYmLOZWFj%2BvJYKD0sKDw8KSw8KlgoPSwoPDwpLDwSZTYKzYo15%2FtUIFQhsCAgBK01NgbTEs4JNWJmzmFhYmLOZIw8KSw8KlgoPSwoPDwpLDwqWCg9LCg8AAAMAF%2F%2FrBMUEmQAZACUANQAAADIeAhUUBwEWFA8BBiInAQYjIi4CND4BBCIOARQeATI%2BATQmBSEyFh0BFAYjISImPQE0NgGZxLOCTU4BLAgIbQcVCP7Ud45itIFNTYEBb7OYWFiYs5lYWP5YAV4KDw8K%2FqIKDw8EmU2Cs2KNef7VCBUIbAgIAStNTYG0xLOCTViZs5hYWJizmYcPCpYKDw8KlgoPAAAAAAIAFwAXBJkEsAAPAC0AAAEzMhYVERQGKwEiJjURNDYFNRYSFRQOAiIuAjU0EjcVDgEVFB4BMj4BNTQmAiZkFR0dFWQVHR0BD6fSW5vW6tabW9KnZ3xyxejFcnwEsB0V%2FnAVHR0VAZAVHeGmPv7ZuHXWm1tbm9Z1uAEnPqY3yHh0xXJyxXR4yAAEAGQAAASwBLAADwAfAC8APwAAATMyFhURFAYrASImNRE0NgEzMhYVERQGKwEiJjURNDYBMzIWFREUBisBIiY1ETQ2BTMyFh0BFAYrASImPQE0NgQBlgoPDwqWCg8P%2Ft6WCg8PCpYKDw%2F%2B3pYKDw8KlgoPD%2F7elgoPDwqWCg8PBLAPCvuCCg8PCgR%2BCg%2F%2BcA8K%2FRIKDw8KAu4KD%2F7UDwr%2BPgoPDwoBwgoPyA8K%2BgoPDwr6Cg8AAAAAAgAaABsElgSWAEcATwAAATIfAhYfATcWFwcXFh8CFhUUDwIGDwEXBgcnBwYPAgYjIi8CJi8BByYnNycmLwImNTQ%2FAjY%2FASc2Nxc3Nj8CNhIiBhQWMjY0AlghKSYFMS0Fhj0rUAMZDgGYBQWYAQ8YA1AwOIYFLDIFJisfISkmBTEtBYY8LFADGQ0ClwYGlwINGQNQLzqFBS0xBSYreLJ%2BfrJ%2BBJYFmAEOGQJQMDmGBSwxBiYrHiIoJgYxLAWGPSxRAxkOApcFBZcCDhkDUTA5hgUtMAYmKiAhKCYGMC0Fhj0sUAIZDgGYBf6ZfrF%2BfrEABwBkAAAEsAUUABMAFwAhACUAKQAtADEAAAEhMhYdASEyFh0BITU0NjMhNTQ2FxUhNQERFAYjISImNREXETMRMxEzETMRMxEzETMRAfQBLCk7ARMKD%2Fu0DwoBEzspASwBLDsp%2FUQpO2RkZGRkZGRkBRQ7KWQPCktLCg9kKTtkZGT%2B1PzgKTs7KQMgZP1EArz9RAK8%2FUQCvP1EArwAAQAMAAAFCATRAB8AABMBNjIXARYGKwERFAYrASImNREhERQGKwEiJjURIyImEgJsCBUHAmAIBQqvDwr6Cg%2F%2B1A8K%2BgoPrwoFAmoCYAcH%2FaAICv3BCg8PCgF3%2FokKDw8KAj8KAAIAZAAAA%2BgEsAARABcAAAERFBYzIREUBiMhIiY1ETQ2MwEjIiY9AQJYOykBLB0V%2FOAVHR0VA1L6FR0EsP5wKTv9dhUdHRUETBUd%2FnAdFfoAAwAXABcEmQSZAA8AGwAwAAAAMh4CFA4CIi4CND4BBCIOARQeATI%2BATQmBTMyFhURMzIWHQEUBisBIiY1ETQ2AePq1ptbW5vW6tabW1ubAb%2FoxXJyxejFcnL%2BfDIKD68KDw8K%2BgoPDwSZW5vW6tabW1ub1urWmztyxejFcnLF6MUNDwr%2B7Q8KMgoPDwoBXgoPAAAAAAL%2FnAAABRQEsAALAA8AACkBAyMDIQEzAzMDMwEDMwMFFP3mKfIp%2FeYBr9EVohTQ%2Fp4b4BsBkP5wBLD%2B1AEs%2FnD%2B1AEsAAAAAAIAZAAABLAEsAAVAC8AAAEzMhYVETMyFgcBBiInASY2OwERNDYBMzIWFREUBiMhIiY1ETQ2OwEyFh0BITU0NgImyBUdvxQLDf65DSYN%2FrkNCxS%2FHQJUMgoPDwr75goPDwoyCg8DhA8EsB0V%2Fj4XEP5wEBABkBAXAcIVHfzgDwr%2BogoPDwoBXgoPDwqvrwoPAAMAFwAXBJkEmQAPABsAMQAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgUzMhYVETMyFgcDBiInAyY2OwERNDYB4%2BrWm1tbm9bq1ptbW5sBv%2BjFcnLF6MVycv58lgoPiRUKDd8NJg3fDQoViQ8EmVub1urWm1tbm9bq1ps7csXoxXJyxejFDQ8K%2Fu0XEP7tEBABExAXARMKDwAAAAMAFwAXBJkEmQAPABsAMQAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JiUTFgYrAREUBisBIiY1ESMiJjcTNjIB4%2BrWm1tbm9bq1ptbW5sBv%2BjFcnLF6MVycv7n3w0KFYkPCpYKD4kVCg3fDSYEmVub1urWm1tbm9bq1ps7csXoxXJyxejFAf7tEBf%2B7QoPDwoBExcQARMQAAAAAAIAAAAABLAEsAAZADkAABMhMhYXExYVERQGBwYjISImJyY1EzQ3Ez4BBSEiBgcDBhY7ATIWHwEeATsBMjY%2FAT4BOwEyNicDLgHhAu4KEwO6BwgFDBn7tAweAgYBB7kDEwKX%2FdQKEgJXAgwKlgoTAiYCEwr6ChMCJgITCpYKDAJXAhIEsA4K%2FXQYGf5XDB4CBggEDRkBqRkYAowKDsgOC%2F4%2BCw4OCpgKDg4KmAoODgsBwgsOAAMAFwAXBJkEmQAPABsAJwAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgUXFhQPAQYmNRE0NgHj6tabW1ub1urWm1tbmwG%2F6MVycsXoxXJy%2Fov9ERH9EBgYBJlbm9bq1ptbW5vW6tabO3LF6MVycsXoxV2%2BDCQMvgwLFQGQFQsAAQAXABcEmQSwACgAAAE3NhYVERQGIyEiJj8BJiMiDgEUHgEyPgE1MxQOAiIuAjQ%2BAjMyA7OHBwsPCv6WCwQHhW2BdMVycsXoxXKWW5vW6tabW1ub1nXABCSHBwQL%2FpYKDwsHhUxyxejFcnLFdHXWm1tbm9bq1ptbAAAAAAIAFwABBJkEsAAaADUAAAE3NhYVERQGIyEiJj8BJiMiDgEVIzQ%2BAjMyEzMUDgIjIicHBiY1ETQ2MyEyFg8BFjMyPgEDs4cHCw8L%2FpcLBAeGboF0xXKWW5vWdcDrllub1nXAnIYHCw8LAWgKBQiFboJ0xXIEJIcHBAv%2BlwsPCweGS3LFdHXWm1v9v3XWm1t2hggFCgFoCw8LB4VMcsUAAAAKAGQAAASwBLAADwAfAC8APwBPAF8AbwB%2FAI8AnwAAEyEyFhURFAYjISImNRE0NgUhIgYVERQWMyEyNjURNCYFMzIWHQEUBisBIiY9ATQ2MyEyFh0BFAYjISImPQE0NgczMhYdARQGKwEiJj0BNDYzITIWHQEUBiMhIiY9ATQ2BzMyFh0BFAYrASImPQE0NjMhMhYdARQGIyEiJj0BNDYHMzIWHQEUBisBIiY9ATQ2MyEyFh0BFAYjISImPQE0Nn0EGgoPDwr75goPDwPA%2FK4KDw8KA1IKDw%2F9CDIKDw8KMgoPD9IBwgoPDwr%2BPgoPD74yCg8PCjIKDw%2FSAcIKDw8K%2Fj4KDw%2B%2BMgoPDwoyCg8P0gHCCg8PCv4%2BCg8PvjIKDw8KMgoPD9IBwgoPDwr%2BPgoPDwSwDwr7ggoPDwoEfgoPyA8K%2FK4KDw8KA1IKD2QPCjIKDw8KMgoPDwoyCg8PCjIKD8gPCjIKDw8KMgoPDwoyCg8PCjIKD8gPCjIKDw8KMgoPDwoyCg8PCjIKD8gPCjIKDw8KMgoPDwoyCg8PCjIKDwAAAAACAAAAAARMBLAAGQAjAAABNTQmIyEiBh0BIyIGFREUFjMhMjY1ETQmIyE1NDY7ATIWHQEDhHVT%2FtRSdmQpOzspA4QpOzsp%2FageFMgUHgMgyFN1dlLIOyn9qCk7OykCWCk7lhUdHRWWAAIAZAAABEwETAAJADcAABMzMhYVESMRNDYFMhcWFREUBw4DIyIuAScuAiMiBwYjIicmNRE%2BATc2HgMXHgIzMjc2fTIKD2QPA8AEBRADIUNAMRwaPyonKSxHHlVLBwgGBQ4WeDsXKC4TOQQpLUUdZ1AHBEwPCvvNBDMKDzACBhH%2BWwYGO1AkDQ0ODg8PDzkFAwcPAbY3VwMCAwsGFAEODg5XCAAAAwAAAAAEsASXACEAMQBBAAAAMh4CFREUBisBIiY1ETQuASAOARURFAYrASImNRE0PgEDMzIWFREUBisBIiY1ETQ2ITMyFhURFAYrASImNRE0NgHk6N6jYw8KMgoPjeT%2B%2BuSNDwoyCg9joyqgCAwMCKAIDAwCYKAIDAwIoAgMDASXY6PedP7UCg8PCgEsf9FyctF%2F%2FtQKDw8KASx03qP9wAwI%2FjQIDAwIAcwIDAwI%2FjQIDAwIAcwIDAAAAAACAAAA0wRHA90AFQA5AAABJTYWFREUBiclJisBIiY1ETQ2OwEyBTc2Mh8BFhQPARcWFA8BBiIvAQcGIi8BJjQ%2FAScmND8BNjIXAUEBAgkMDAn%2B%2FhUZ%2BgoPDwr6GQJYeAcUByIHB3h4BwciBxQHeHgHFAciBwd3dwcHIgcUBwMurAYHCv0SCgcGrA4PCgFeCg%2BEeAcHIgcUB3h4BxQHIgcHd3cHByIHFAd4eAcUByIICAAAAAACAAAA0wNyA90AFQAvAAABJTYWFREUBiclJisBIiY1ETQ2OwEyJTMWFxYVFAcGDwEiLwEuATc2NTQnJjY%2FATYBQQECCQwMCf7%2BFRn6Cg8PCvoZAdIECgZgWgYLAwkHHQcDBkhOBgMIHQcDLqwGBwr9EgoHBqwODwoBXgoPZAEJgaGafwkBAQYXBxMIZ36EaggUBxYFAAAAAAMAAADEBGID7AAbADEASwAAATMWFxYVFAYHBgcjIi8BLgE3NjU0JicmNj8BNgUlNhYVERQGJyUmKwEiJjURNDY7ATIlMxYXFhUUBwYPASIvAS4BNzY1NCcmNj8BNgPHAwsGh0RABwoDCQcqCAIGbzs3BgIJKgf9ggECCQwMCf7%2BFRn6Cg8PCvoZAdIECgZgWgYLAwkHHQcDBkhOBgMIHQcD7AEJs9lpy1QJAQYiBhQIlrJarEcJFAYhBb6sBgcK%2FRIKBwasDg8KAV4KD2QBCYGhmn8JAQEGFwcTCGd%2BhGoIFQYWBQAAAAANAAAAAASwBLAACQAVABkAHQAhACUALQA7AD8AQwBHAEsATwAAATMVIxUhFSMRIQEjFTMVIREjESM1IQURIREhESERBSM1MwUjNTMBMxEhETM1MwEzFSMVIzUjNTM1IzUhBREhEQcjNTMFIzUzASM1MwUhNSEB9GRk%2FnBkAfQCvMjI%2FtTIZAJY%2B7QBLAGQASz84GRkArxkZP1EyP4MyGQB9MhkyGRkyAEs%2FUQBLGRkZAOEZGT%2BDGRkAfT%2B1AEsA4RkZGQCWP4MZMgBLAEsyGT%2B1AEs%2FtQBLMhkZGT%2BDP4MAfRk%2FtRkZGRkyGTI%2FtQBLMhkZGT%2B1GRkZAAAAAAJAAAAAASwBLAAAwAHAAsADwATABcAGwAfACMAADcjETMTIxEzASMRMxMjETMBIxEzASE1IRcjNTMXIzUzBSM1M2RkZMhkZAGQyMjIZGQBLMjI%2FOD%2B1AEsyGRkyGRkASzIyMgD6PwYA%2Bj8GAPo%2FBgD6PwYA%2Bj7UGRkW1tbW1sAAAIAAAAKBKYEsAANABUAAAkBFhQHAQYiJwETNDYzBCYiBhQWMjYB9AKqCAj%2BMAgUCP1WAQ8KAUM7Uzs7UzsEsP1WCBQI%2FjAICAKqAdsKD807O1Q7OwAAAAADAAAACgXSBLAADQAZACEAAAkBFhQHAQYiJwETNDYzIQEWFAcBBiIvAQkBBCYiBhQWMjYB9AKqCAj%2BMAgUCP1WAQ8KAwYCqggI%2FjAIFAg4Aaj9RP7TO1M7O1M7BLD9VggUCP4wCAgCqgHbCg%2F9VggUCP4wCAg4AaoCvM07O1Q7OwAAAAABAGQAAASwBLAAJgAAASEyFREUDwEGJjURNCYjISIPAQYWMyEyFhURFAYjISImNRE0PwE2ASwDOUsSQAgKDwr9RBkSQAgFCgK8Cg8PCvyuCg8SixIEsEv8fBkSQAgFCgO2Cg8SQAgKDwr8SgoPDwoDzxkSixIAAAABAMj%2F%2FwRMBLAACgAAEyEyFhURCQERNDb6AyAVHf4%2B%2Fj4dBLAdFfuCAbz%2BQwR%2FFR0AAAAAAwAAAAAEsASwABUARQBVAAABISIGBwMGHwEeATMhMjY%2FATYnAy4BASMiBg8BDgEjISImLwEuASsBIgYVERQWOwEyNj0BNDYzITIWHQEUFjsBMjY1ETQmASEiBg8BBhYzITI2LwEuAQM2%2FkQLEAFOBw45BhcKAcIKFwY%2BDgdTARABVpYKFgROBBYK%2FdoKFgROBBYKlgoPDwqWCg8PCgLuCg8PCpYKDw%2F%2Bsf4MChMCJgILCgJYCgsCJgITBLAPCv7TGBVsCQwMCWwVGAEtCg%2F%2BcA0JnAkNDQmcCQ0PCv12Cg8PCpYKDw8KlgoPDwoCigoP%2FagOCpgKDg4KmAoOAAAAAAQAAABkBLAETAAdACEAKQAxAAABMzIeAh8BMzIWFREUBiMhIiY1ETQ2OwE%2BBAEVMzUEIgYUFjI2NCQyFhQGIiY0AfTIOF00JAcGlik7Oyn8GCk7OymWAgknM10ByGT%2Bz76Hh76H%2Fu9WPDxWPARMKTs7FRQ7Kf2oKTs7KQJYKTsIG0U1K%2F7UZGRGh76Hh74IPFY8PFYAAAAAAgA1AAAEsASvACAAIwAACQEWFx4BHwEVITUyNi8BIQYHBh4CMxUhNTY3PgE%2FAQEDIQMCqQGBFCgSJQkK%2Fl81LBFS%2Fnk6IgsJKjIe%2FpM4HAwaBwcBj6wBVKIEr%2FwaMioTFQECQkJXLd6RWSIuHAxCQhgcDCUNDQPu%2FVoByQAAAAADAGQAAAPwBLAAJwAyADsAAAEeBhUUDgMjITU%2BATURNC4EJzUFMh4CFRQOAgclMzI2NTQuAisBETMyNjU0JisBAvEFEzUwOyodN1htbDD%2BDCk7AQYLFyEaAdc5dWM%2BHy0tEP6Pi05pESpTPnbYUFJ9Xp8CgQEHGB0zOlIuQ3VONxpZBzMoAzsYFBwLEAkHRwEpSXNDM1s6KwkxYUopOzQb%2FK5lUFqBAAABAMgAAANvBLAAGQAAARcOAQcDBhYXFSE1NjcTNjQuBCcmJzUDbQJTQgeECSxK%2Fgy6Dq0DAw8MHxUXDQYEsDkTNSj8uTEoBmFhEFIDQBEaExAJCwYHAwI5AAAAAAL%2FtQAABRQEsAAlAC8AAAEjNC4FKwERFBYfARUhNTI%2BAzURIyIOBRUjESEFIxEzByczESM3BRQyCAsZEyYYGcgyGRn%2BcAQOIhoWyBkYJhMZCwgyA%2Bj7m0tLfX1LS30DhBUgFQ4IAwH8rhYZAQJkZAEFCRUOA1IBAwgOFSAVASzI%2FOCnpwMgpwACACH%2FtQSPBLAAJQAvAAABIzQuBSsBERQWHwEVITUyPgM1ESMiDgUVIxEhEwc1IRUnNxUhNQRMMggLGRMmGBnIMhkZ%2FnAEDiIaFsgZGCYTGQsIMgPoQ6f84KenAyADhBUgFQ4IAwH9dhYZAQJkZAEFCRUOAooBAwgOFSAVASz7gn1LS319S0sABAAAAAAEsARMAA8AHwAvAD8AABMhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2EyEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYyAlgVHR0V%2FagVHR0VA%2BgVHR0V%2FBgVHR0VAyAVHR0V%2FOAVHR0VBEwVHR0V%2B7QVHR0ETB0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0ABAAAAAAEsARMAA8AHwAvAD8AABMhMhYdARQGIyEiJj0BNDYDITIWHQEUBiMhIiY9ATQ2EyEyFh0BFAYjISImPQE0NgMhMhYdARQGIyEiJj0BNDb6ArwVHR0V%2FUQVHR2zBEwVHR0V%2B7QVHR3dArwVHR0V%2FUQVHR2zBEwVHR0V%2B7QVHR0ETB0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0ABAAAAAAEsARMAA8AHwAvAD8AAAE1NDYzITIWHQEUBiMhIiYBNTQ2MyEyFh0BFAYjISImEzU0NjMhMhYdARQGIyEiJgE1NDYzITIWHQEUBiMhIiYB9B0VAlgVHR0V%2FagVHf5wHRUD6BUdHRX8GBUdyB0VAyAVHR0V%2FOAVHf7UHRUETBUdHRX7tBUdA7ZkFR0dFWQVHR3%2B6WQVHR0VZBUdHf7pZBUdHRVkFR0d%2FulkFR0dFWQVHR0AAAQAAAAABLAETAAPAB8ALwA%2FAAATITIWHQEUBiMhIiY9ATQ2EyEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2MgRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dBEwdFWQVHR0VZBUd%2FtQdFWQVHR0VZBUd%2FtQdFWQVHR0VZBUd%2FtQdFWQVHR0VZBUdAAgAAAAABLAETAAPAB8ALwA%2FAE8AXwBvAH8AABMzMhYdARQGKwEiJj0BNDYpATIWHQEUBiMhIiY9ATQ2ATMyFh0BFAYrASImPQE0NikBMhYdARQGIyEiJj0BNDYBMzIWHQEUBisBIiY9ATQ2KQEyFh0BFAYjISImPQE0NgEzMhYdARQGKwEiJj0BNDYpATIWHQEUBiMhIiY9ATQ2MmQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR3%2B6WQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR3%2B6WQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR3%2B6WQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR0ETB0VZBUdHRVkFR0dFWQVHR0VZBUd%2FtQdFWQVHR0VZBUdHRVkFR0dFWQVHf7UHRVkFR0dFWQVHR0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0dFWQVHR0VZBUdAAAG%2F5wAAASwBEwAAwATACMAKgA6AEoAACEjETsCMhYdARQGKwEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2BQc1IzUzNQUhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2AZBkZJZkFR0dFWQVHR0VAfQVHR0V%2FgwVHR3%2B%2BqfIyAHCASwVHR0V%2FtQVHR0VAlgVHR0V%2FagVHR0ETB0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR36fUtkS68dFWQVHR0VZBUd%2FtQdFWQVHR0VZBUdAAAABgAAAAAFFARMAA8AEwAjACoAOgBKAAATMzIWHQEUBisBIiY9ATQ2ASMRMwEhMhYdARQGIyEiJj0BNDYFMxUjFSc3BSEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYyZBUdHRVkFR0dA2dkZPyuAfQVHR0V%2FgwVHR0EL8jIp6f75gEsFR0dFf7UFR0dFQJYFR0dFf2oFR0dBEwdFWQVHR0VZBUd%2B7QETP7UHRVkFR0dFWQVHchkS319rx0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0AAAAAAgAAAMgEsAPoAA8AEgAAEyEyFhURFAYjISImNRE0NgkCSwLuHywsH%2F0SHywsBIT%2B1AEsA%2BgsH%2F12HywsHwKKHyz9RAEsASwAAwAAAAAEsARMAA8AFwAfAAATITIWFREUBiMhIiY1ETQ2FxE3BScBExEEMhYUBiImNCwEWBIaGhL7qBIaGkr3ASpKASXs%2FNJwTk5wTgRMGhL8DBIaGhID9BIaZP0ftoOcAT7%2B4AH0dE5vT09vAAAAAAIA2wAFBDYEkQAWAB4AAAEyHgEVFAcOAQ8BLgQnJjU0PgIWIgYUFjI2NAKIdcZzRkWyNjYJIV5YbSk8RHOft7eCgreCBJF4ynVzj23pPz4IIWZomEiEdVijeUjDgriBgbgAAAACABcAFwSZBJkADwAXAAAAMh4CFA4CIi4CND4BAREiDgEUHgEB4%2BrWm1tbm9bq1ptbW5sBS3TFcnLFBJlbm9bq1ptbW5vW6tab%2FG8DVnLF6MVyAAACAHUAAwPfBQ8AGgA1AAABHgYVFA4DBy4DNTQ%2BBQMOAhceBBcWNj8BNiYnLgInJjc2IyYCKhVJT1dOPiUzVnB9P1SbfEokP0xXUEm8FykoAwEbITEcExUWAgYCCQkFEikMGiACCAgFD0iPdXdzdYdFR4BeRiYEBTpjl1lFh3ZzeHaQ%2Ff4hS4I6JUEnIw4IBwwQIgoYBwQQQSlZtgsBAAAAAwAAAAAEywRsAAwAKgAvAAABNz4CHgEXHgEPAiUhMhcHISIGFREUFjMhMjY9ATcRFAYjISImNRE0NgkBBzcBA%2BhsAgYUFR0OFgoFBmz9BQGQMje7%2FpApOzspAfQpO8i7o%2F5wpbm5Azj%2BlqE3AWMD9XMBAgIEDw4WKgsKc8gNuzsp%2FgwpOzsptsj%2BtKW5uaUBkKW5%2Ftf%2BljKqAWMAAgAAAAAEkwRMABsANgAAASEGByMiBhURFBYzITI2NTcVFAYjISImNRE0NgUBFhQHAQYmJzUmDgMHPgY3NT4BAV4BaaQ0wyk7OykB9Ck7yLml%2FnClubkCfwFTCAj%2BrAcLARo5ZFRYGgouOUlARioTAQsETJI2Oyn%2BDCk7OymZZ6W5uaUBkKW5G%2F7TBxUH%2Fs4GBAnLAQINFjAhO2JBNB0UBwHSCgUAAAAAAgAAAAAEnQRMAB0ANQAAASEyFwchIgYVERQWMyEyNj0BNxUUBiMhIiY1ETQ2CQE2Mh8BFhQHAQYiLwEmND8BNjIfARYyAV4BXjxDsv6jKTs7KQH0KTvIuaX%2BcKW5uQHKAYsHFQdlBwf97QcVB%2FgHB2UHFQdvCBQETBexOyn%2BDCk7OylFyNulubmlAZCluf4zAYsHB2UHFQf97AcH%2BAcVB2UHB28HAAAAAQAKAAoEpgSmADsAAAkBNjIXARYGKwEVMzU0NhcBFhQHAQYmPQEjFTMyFgcBBiInASY2OwE1IxUUBicBJjQ3ATYWHQEzNSMiJgE%2BAQgIFAgBBAcFCqrICggBCAgI%2FvgICsiqCgUH%2FvwIFAj%2B%2BAgFCq%2FICgj%2B%2BAgIAQgICsivCgUDlgEICAj%2B%2BAgKyK0KBAf%2B%2FAcVB%2F73BwQKrcgKCP74CAgBCAgKyK0KBAcBCQcVBwEEBwQKrcgKAAEAyAAAA4QETAAZAAATMzIWFREBNhYVERQGJwERFAYrASImNRE0NvpkFR0B0A8VFQ%2F%2BMB0VZBUdHQRMHRX%2BSgHFDggV%2FBgVCA4Bxf5KFR0dFQPoFR0AAAABAAAAAASwBEwAIwAAEzMyFhURATYWFREBNhYVERQGJwERFAYnAREUBisBIiY1ETQ2MmQVHQHQDxUB0A8VFQ%2F%2BMBUP%2FjAdFWQVHR0ETB0V%2FkoBxQ4IFf5KAcUOCBX8GBUIDgHF%2FkoVCA4Bxf5KFR0dFQPoFR0AAAABAJ0AGQSwBDMAFQAAAREUBicBERQGJwEmNDcBNhYVEQE2FgSwFQ%2F%2BMBUP%2FhQPDwHsDxUB0A8VBBr8GBUIDgHF%2FkoVCA4B4A4qDgHgDggV%2FkoBxQ4IAAAAAQDIABYEMwQ2AAsAABMBFhQHAQYmNRE0NvMDLhIS%2FNISGRkEMv4OCx4L%2Fg4LDhUD6BUOAAIAyABkA4QD6AAPAB8AABMzMhYVERQGKwEiJjURNDYhMzIWFREUBisBIiY1ETQ2%2BsgVHR0VyBUdHQGlyBUdHRXIFR0dA%2BgdFfzgFR0dFQMgFR0dFfzgFR0dFQMgFR0AAAEAyABkBEwD6AAPAAABERQGIyEiJjURNDYzITIWBEwdFfzgFR0dFQMgFR0DtvzgFR0dFQMgFR0dAAAAAAEAAAAZBBMEMwAVAAABETQ2FwEWFAcBBiY1EQEGJjURNDYXAfQVDwHsDw%2F%2BFA8V%2FjAPFRUPAmQBthUIDv4gDioO%2FiAOCBUBtv47DggVA%2BgVCA4AAAH%2F%2FgACBLMETwAjAAABNzIWFRMUBiMHIiY1AwEGJjUDAQYmNQM0NhcBAzQ2FwEDNDYEGGQUHgUdFWQVHQL%2BMQ4VAv4yDxUFFQ8B0gIVDwHSAh0ETgEdFfwYFR0BHRUBtf46DwkVAbX%2BOQ4JFAPoFQkP%2Fj4BthQJDv49AbYVHQAAAQEsAAAD6ARMABkAAAEzMhYVERQGKwEiJjURAQYmNRE0NhcBETQ2A1JkFR0dFWQVHf4wDxUVDwHQHQRMHRX8GBUdHRUBtv47DggVA%2BgVCA7%2BOwG2FR0AAAIAZADIBLAESAALABsAAAkBFgYjISImNwE2MgEhMhYdARQGIyEiJj0BNDYCrgH1DwkW%2B%2B4WCQ8B9Q8q%2FfcD6BUdHRX8GBUdHQQ5%2FeQPFhYPAhwP%2FUgdFWQVHR0VZBUdAAEAiP%2F8A3UESgAFAAAJAgcJAQN1%2FqABYMX92AIoA4T%2Bn%2F6fxgIoAiYAAAAAAQE7%2F%2FwEKARKAAUAAAkBJwkBNwQo%2FdnGAWH%2Bn8YCI%2F3ZxgFhAWHGAAIAFwAXBJkEmQAPADMAAAAyHgIUDgIiLgI0PgEFIyIGHQEjIgYdARQWOwEVFBY7ATI2PQEzMjY9ATQmKwE1NCYB4%2BrWm1tbm9bq1ptbW5sBfWQVHZYVHR0Vlh0VZBUdlhUdHRWWHQSZW5vW6tabW1ub1urWm7odFZYdFWQVHZYVHR0Vlh0VZBUdlhUdAAAAAAIAFwAXBJkEmQAPAB8AAAAyHgIUDgIiLgI0PgEBISIGHQEUFjMhMjY9ATQmAePq1ptbW5vW6tabW1ubAkX%2BDBUdHRUB9BUdHQSZW5vW6tabW1ub1urWm%2F5%2BHRVkFR0dFWQVHQACABcAFwSZBJkADwAzAAAAMh4CFA4CIi4CND4BBCIPAScmIg8BBhQfAQcGFB8BFjI%2FARcWMj8BNjQvATc2NC8BAePq1ptbW5vW6tabW1ubAeUZCXh4CRkJjQkJeHgJCY0JGQl4eAkZCY0JCXh4CQmNBJlbm9bq1ptbW5vW6tabrQl4eAkJjQkZCXh4CRkJjQkJeHgJCY0JGQl4eAkZCY0AAgAXABcEmQSZAA8AJAAAADIeAhQOAiIuAjQ%2BAQEnJiIPAQYUHwEWMjcBNjQvASYiBwHj6tabW1ub1urWm1tbmwEVVAcVCIsHB%2FIHFQcBdwcHiwcVBwSZW5vW6tabW1ub1urWm%2F4xVQcHiwgUCPEICAF3BxUIiwcHAAAAAAMAFwAXBJkEmQAPADsASwAAADIeAhQOAiIuAjQ%2BAQUiDgMVFDsBFjc%2BATMyFhUUBgciDgUHBhY7ATI%2BAzU0LgMTIyIGHQEUFjsBMjY9ATQmAePq1ptbW5vW6tabW1ubAT8dPEIyIRSDHgUGHR8UFw4TARkOGhITDAIBDQ6tBx4oIxgiM0Q8OpYKDw8KlgoPDwSZW5vW6tabW1ub1urWm5ELHi9PMhkFEBQQFRIXFgcIBw4UHCoZCBEQKDhcNi9IKhsJ%2FeMPCpYKDw8KlgoPAAADABcAFwSZBJkADwAfAD4AAAAyHgIUDgIiLgI0PgEFIyIGHQEUFjsBMjY9ATQmAyMiBh0BFBY7ARUjIgYdARQWMyEyNj0BNCYrARE0JgHj6tabW1ub1urWm1tbmwGWlgoPDwqWCg8PCvoKDw8KS0sKDw8KAV4KDw8KSw8EmVub1urWm1tbm9bq1ptWDwqWCg8PCpYKD%2F7UDwoyCg%2FIDwoyCg8PCjIKDwETCg8AAgAAAAAEsASwAC8AXwAAATMyFh0BHgEXMzIWHQEUBisBDgEHFRQGKwEiJj0BLgEnIyImPQE0NjsBPgE3NTQ2ExUUBisBIiY9AQ4BBzMyFh0BFAYrAR4BFzU0NjsBMhYdAT4BNyMiJj0BNDY7AS4BAg2WCg9nlxvCCg8PCsIbl2cPCpYKD2eXG8IKDw8KwhuXZw%2B5DwqWCg9EZheoCg8PCqgXZkQPCpYKD0RmF6gKDw8KqBdmBLAPCsIbl2cPCpYKD2eXG8IKDw8KwhuXZw8KlgoPZ5cbwgoP%2Fs2oCg8PCqgXZkQPCpYKD0RmF6gKDw8KqBdmRA8KlgoPRGYAAwAXABcEmQSZAA8AGwA%2FAAAAMh4CFA4CIi4CND4BBCIOARQeATI%2BATQmBxcWFA8BFxYUDwEGIi8BBwYiLwEmND8BJyY0PwE2Mh8BNzYyAePq1ptbW5vW6tabW1ubAb%2FoxXJyxejFcnKaQAcHfHwHB0AHFQd8fAcVB0AHB3x8BwdABxUHfHwHFQSZW5vW6tabW1ub1urWmztyxejFcnLF6MVaQAcVB3x8BxUHQAcHfHwHB0AHFQd8fAcVB0AHB3x8BwAAAAMAFwAXBJkEmQAPABsAMAAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgcXFhQHAQYiLwEmND8BNjIfATc2MgHj6tabW1ub1urWm1tbmwG%2F6MVycsXoxXJyg2oHB%2F7ACBQIyggIagcVB0%2FFBxUEmVub1urWm1tbm9bq1ps7csXoxXJyxejFfWoHFQf%2BvwcHywcVB2oICE%2FFBwAAAAMAFwAXBJkEmQAPABgAIQAAADIeAhQOAiIuAjQ%2BAQUiDgEVFBcBJhcBFjMyPgE1NAHj6tabW1ub1urWm1tbmwFLdMVyQQJLafX9uGhzdMVyBJlbm9bq1ptbW5vW6tabO3LFdHhpAktB0P24PnLFdHMAAAAAAQAXAFMEsAP5ABUAABMBNhYVESEyFh0BFAYjIREUBicBJjQnAgoQFwImFR0dFf3aFxD99hACRgGrDQoV%2Ft0dFcgVHf7dFQoNAasNJgAAAAABAAAAUwSZA%2FkAFQAACQEWFAcBBiY1ESEiJj0BNDYzIRE0NgJ%2FAgoQEP32EBf92hUdHRUCJhcD8f5VDSYN%2FlUNChUBIx0VyBUdASMVCgAAAAEAtwAABF0EmQAVAAAJARYGIyERFAYrASImNREhIiY3ATYyAqoBqw0KFf7dHRXIFR3%2B3RUKDQGrDSYEif32EBf92hUdHRUCJhcQAgoQAAAAAQC3ABcEXQSwABUAAAEzMhYVESEyFgcBBiInASY2MyERNDYCJsgVHQEjFQoN%2FlUNJg3%2BVQ0KFQEjHQSwHRX92hcQ%2FfYQEAIKEBcCJhUdAAABAAAAtwSZBF0AFwAACQEWFAcBBiY1EQ4DBz4ENxE0NgJ%2FAgoQEP32EBdesKWBJAUsW4fHfhcEVf5VDSYN%2FlUNChUBIwIkRHVNabGdcUYHAQYVCgACAAAAAASwBLAAFQArAAABITIWFREUBi8BBwYiLwEmND8BJyY2ASEiJjURNDYfATc2Mh8BFhQPARcWBgNSASwVHRUOXvkIFAhqBwf5Xg4I%2FiH%2B1BUdFQ5e%2BQgUCGoHB%2FleDggEsB0V%2FtQVCA5e%2BQcHaggUCPleDhX7UB0VASwVCA5e%2BQcHaggUCPleDhUAAAACAEkASQRnBGcAFQArAAABFxYUDwEXFgYjISImNRE0Nh8BNzYyASEyFhURFAYvAQcGIi8BJjQ%2FAScmNgP2agcH%2BV4OCBX%2B1BUdFQ5e%2BQgU%2FQwBLBUdFQ5e%2BQgUCGoHB%2FleDggEYGoIFAj5Xg4VHRUBLBUIDl75B%2F3xHRX%2B1BUIDl75BwdqCBQI%2BV4OFQAAAAADABcAFwSZBJkADwAfAC8AAAAyHgIUDgIiLgI0PgEFIyIGFxMeATsBMjY3EzYmAyMiBh0BFBY7ATI2PQE0JgHj6tabW1ub1urWm1tbmwGz0BQYBDoEIxQ2FCMEOgQYMZYKDw8KlgoPDwSZW5vW6tabW1ub1urWm7odFP7SFB0dFAEuFB3%2BDA8KlgoPDwqWCg8AAAAABQAAAAAEsASwAEkAVQBhAGgAbwAAATIWHwEWHwEWFxY3Nj8BNjc2MzIWHwEWHwIeATsBMhYdARQGKwEiBh0BIREjESE1NCYrASImPQE0NjsBMjY1ND8BNjc%2BBAUHBhY7ATI2LwEuAQUnJgYPAQYWOwEyNhMhIiY1ESkBERQGIyERAQQJFAUFFhbEFQ8dCAsmxBYXERUXMA0NDgQZCAEPCj0KDw8KMgoP%2FnDI%2FnAPCjIKDw8KPQsOCRkFDgIGFRYfAp2mBwQK2woKAzMDEP41sQgQAzMDCgrnCwMe%2FokKDwGQAlgPCv6JBLAEAgIKDXYNCxUJDRZ2DQoHIREQFRh7LAkLDwoyCg8PCq8BLP7UrwoPDwoyCg8GBQQwgBkUAwgWEQ55ogcKDgqVCgSqnQcECo8KDgr8cg8KAXf%2BiQoPAZAAAAAAAgAAAAwErwSmACsASQAAATYWFQYCDgQuAScmByYOAQ8BBiY1NDc%2BATc%2BAScuAT4BNz4GFyYGBw4BDwEOBAcOARY2Nz4CNz4DNz4BBI0IGgItQmxhi2KORDg9EQQRMxuZGhYqCFUYEyADCQIQOjEnUmFch3vAJQgdHyaiPT44XHRZUhcYDhItIRmKcVtGYWtbKRYEBKYDEwiy%2Ft3IlVgxEQgLCwwBAQIbG5kYEyJAJghKFRE8Hzdff4U%2FM0o1JSMbL0QJGCYvcSEhHjZST2c1ODwEJygeW0AxJUBff1UyFAABAF0AHgRyBM8ATwAAAQ4BHgQXLgc%2BATceAwYHDgQHBicmNzY3PgQuAScWDgMmJy4BJyY%2BBDcGHgM3PgEuAicmPgMCjScfCic4R0IgBBsKGAoQAwEJEg5gikggBhANPkpTPhZINx8SBgsNJysiCRZOQQoVNU1bYC9QZwICBAUWITsoCAYdJzIYHw8YIiYHDyJJYlkEz0OAZVxEOSQMBzgXOB42IzElKRIqg5Gnl0o3Z0c6IAYWCwYNAwQFIDhHXGF1OWiqb0sdBxUknF0XNTQ8PEUiNWNROBYJDS5AQVUhVZloUSkAAAAAA%2F%2FcAGoE1ARGABsAPwBRAAAAMh4FFA4FIi4FND4EBSYGFxYVFAYiJjU0NzYmBwYHDgEXHgQyPgM3NiYnJgUHDgEXFhcWNj8BNiYnJicuAQIGpJ17bk85HBw6T257naKde25POhwcOU9uewIPDwYIGbD4sBcIBw5GWg0ECxYyWl%2BDiINfWjIWCwQMWv3%2FIw8JCSU4EC0OIw4DDywtCyIERi1JXGJcSSpJXGJcSS0tSVxiXEkqSVxiXEncDwYTOT58sLB8OzcTBg9FcxAxEiRGXkQxMEVeRSQSMRF1HiQPLxJEMA0EDyIPJQ8sSRIEAAAABP%2FcAAAE1ASwABQAJwA7AEwAACEjNy4ENTQ%2BBTMyFzczEzceARUUDgMHNz4BNzYmJyYlBgcOARceBBc3LgE1NDc2JhcHDgEXFhcWNj8CJyYnLgECUJQfW6l2WSwcOU9ue51SPUEglCYvbIknUGqYUi5NdiYLBAw2%2FVFGWg0ECxIqSExoNSlrjxcIB3wjDwkJJTgQLQ4MFgMsLQsieBRhdHpiGxVJXGJcSS0Pef5StVXWNBpacm5jGq0xiD8SMRFGckVzEDESHjxRQTkNmhKnbjs3EwZwJA8vEkQwDQQPC1YELEkSBAAAAAP%2FngAABRIEqwALABgAKAAAJwE2FhcBFgYjISImJSE1NDY7ATIWHQEhAQczMhYPAQ4BKwEiJi8BJjZaAoIUOBQCghUbJfryJRsBCgFZDwqWCg8BWf5DaNAUGAQ6BCMUNhQjBDoEGGQEKh8FIfvgIEdEhEsKDw8KSwLT3x0U%2FBQdHRT8FB0AAAABAGQAFQSwBLAAKAAAADIWFREBHgEdARQGJyURFh0BFAYvAQcGJj0BNDcRBQYmPQE0NjcBETQCTHxYAWsPFhgR%2FplkGhPNzRMaZP6ZERgWDwFrBLBYPv6t%2FrsOMRQpFA0M%2Bf75XRRAFRAJgIAJEBVAFF0BB%2FkMDRQpFDEOAUUBUz4AAAARAAAAAARMBLAAHQAnACsALwAzADcAOwA%2FAEMARwBLAE8AUwBXAFsAXwBjAAABMzIWHQEzMhYdASE1NDY7ATU0NjsBMhYdASE1NDYBERQGIyEiJjURFxUzNTMVMzUzFTM1MxUzNTMVMzUFFTM1MxUzNTMVMzUzFTM1MxUzNQUVMzUzFTM1MxUzNTMVMzUzFTM1A1JkFR0yFR37tB0VMh0VZBUdAfQdAQ8dFfwYFR1kZGRkZGRkZGRk%2FHxkZGRkZGRkZGT8fGRkZGRkZGRkZASwHRUyHRWWlhUdMhUdHRUyMhUd%2FnD9EhUdHRUC7shkZGRkZGRkZGRkyGRkZGRkZGRkZGTIZGRkZGRkZGRkZAAAAAMAAAAZBXcElwAZACUANwAAARcWFA8BBiY9ASMBISImPQE0NjsBATM1NDYBBycjIiY9ATQ2MyEBFxYUDwEGJj0BIyc3FzM1NDYEb%2FkPD%2FkOFZ%2F9qP7dFR0dFdECWPEV%2FamNetEVHR0VASMDGvkPD%2FkOFfG1jXqfFQSN5g4qDuYOCBWW%2FagdFWQVHQJYlhUI%2FpiNeh0VZBUd%2Fk3mDioO5g4IFZa1jXqWFQgAAAABAAAAAASwBEwAEgAAEyEyFhURFAYjIQERIyImNRE0NmQD6Ck7Oyn9rP7QZCk7OwRMOyn9qCk7%2FtQBLDspAlgpOwAAAAMAZAAABEwEsAAJABMAPwAAEzMyFh0BITU0NiEzMhYdASE1NDYBERQOBSIuBTURIRUUFRwBHgYyPgYmNTQ9AZbIFR3%2B1B0C0cgVHf7UHQEPBhgoTGacwJxmTCgYBgEsAwcNFB8nNkI2Jx8TDwUFAQSwHRX6%2BhUdHRX6%2BhUd%2FnD%2B1ClJalZcPigoPlxWakkpASz6CRIVKyclIRsWEAgJEBccISUnKhURCPoAAAAB%2F%2F8A1ARMA8IABQAAAQcJAScBBEzG%2Fp%2F%2Bn8UCJwGbxwFh%2Fp%2FHAicAAQAAAO4ETQPcAAUAAAkCNwkBBE392v3ZxgFhAWEDFf3ZAifH%2Fp8BYQAAAAAC%2F1EAZAVfA%2BgAFAApAAABITIWFREzMhYPAQYiLwEmNjsBESElFxYGKwERIRchIiY1ESMiJj8BNjIBlALqFR2WFQgO5g4qDuYOCBWW%2FoP%2BHOYOCBWWAYHX%2FRIVHZYVCA7mDioD6B0V%2FdkVDvkPD%2FkOFQGRuPkOFf5wyB0VAiYVDvkPAAABAAYAAASeBLAAMAAAEzMyFh8BITIWBwMOASMhFyEyFhQGKwEVFAYiJj0BIRUUBiImPQEjIiYvAQMjIiY0NjheERwEJgOAGB4FZAUsIf2HMAIXFR0dFTIdKh3%2B1B0qHR8SHQYFyTYUHh4EsBYQoiUY%2FiUVK8gdKh0yFR0dFTIyFR0dFTIUCQoDwR0qHQAAAAACAAAAAASwBEwACwAPAAABFSE1MzQ2MyEyFhUFIREhBLD7UMg7KQEsKTv9RASw%2B1AD6GRkKTs7Kcj84AACAAAAAAXcBEwADAAQAAATAxEzNDYzITIWFSEVBQEhAcjIyDspASwqOgH0ASz%2B1PtQASwDIP5wAlgpOzspyGT9RAK8AAEBRQAAA2sErwAbAAABFxYGKwERMzIWDwEGIi8BJjY7AREjIiY%2FATYyAnvmDggVlpYVCA7mDioO5g4IFZaWFQgO5g4qBKD5DhX9pxUO%2BQ8P%2BQ4VAlkVDvkPAAAAAQABAUQErwNrABsAAAEXFhQPAQYmPQEhFRQGLwEmND8BNhYdASE1NDYDqPkODvkPFf2oFQ%2F5Dg75DxUCWBUDYOUPKQ%2FlDwkUl5cUCQ%2FlDykP5Q8JFZWVFQkAAAAEAAAAAASwBLAACQAZAB0AIQAAAQMuASMhIgYHAwUhIgYdARQWMyEyNj0BNCYFNTMVMzUzFQSRrAUkFP1gFCQFrAQt%2FBgpOzspA%2BgpOzv%2Bq2RkZAGQAtwXLSgV%2FR1kOylkKTs7KWQpO8hkZGRkAAAAA%2F%2BcAGQEsARMAAsAIwAxAAAAMhYVERQGIiY1ETQDJSMTFgYjIisBIiYnAj0BNDU0PgE7ASUBFSIuAz0BND4CNwRpKh0dKh1k%2FV0mLwMRFQUCVBQdBDcCCwzIAqP8GAQOIhoWFR0dCwRMHRX8rhUdHRUDUhX8mcj%2B7BAIHBUBUQ76AgQQDw36%2FtT6AQsTKRwyGigUDAEAAAACAEoAAARmBLAALAA1AAABMzIWDwEeARcTFzMyFhQGBw4EIyIuBC8BLgE0NjsBNxM%2BATcnJjYDFjMyNw4BIiYCKV4UEgYSU3oPP3YRExwaEggeZGqfTzl0XFU%2BLwwLEhocExF2Pw96UxIGEyQyNDUxDDdGOASwFRMlE39N%2FrmtHSkoBwQLHBYSCg4REg4FBAgoKR2tAUdNfhQgExr7vgYGMT09AAEAFAAUBJwEnAAXAAABNwcXBxcHFycHJwcnBzcnNyc3Jxc3FzcDIOBO6rS06k7gLZubLeBO6rS06k7gLZubA7JO4C2bmy3gTuq0tOpO4C2bmy3gTuq0tAADAAAAZASwBLAAIQAtAD0AAAEzMhYdAQchMhYdARQHAw4BKwEiJi8BIyImNRE0PwI%2BARcPAREzFzMTNSE3NQEzMhYVERQGKwEiJjURNDYCijIoPBwBSCg8He4QLBf6B0YfHz0tNxSRYA0xG2SWZIjW%2Bv4%2BMv12ZBUdHRVkFR0dBLBRLJZ9USxkLR3%2BqBghMhkZJCcBkCQbxMYcKGTU1f6JZAF3feGv%2FtQdFf4MFR0dFQH0FR0AAAAAAwAAAAAEsARMACAAMAA8AAABMzIWFxMWHQEUBiMhFh0BFAYrASImLwImNRE0NjsBNgUzMhYVERQGKwEiJjURNDYhByMRHwEzNSchNQMCWPoXLBDuHTwo%2FrgcPCgyGzENYJEUNy09fP3pZBUdHRVkFR0dAl%2BIZJZkMjIBwvoETCEY%2FqgdLWQsUXYHlixRKBzGxBskAZAnJGRkHRX%2BDBUdHRUB9BUdZP6J1dSv4X0BdwADAAAAZAUOBE8AGwA3AEcAAAElNh8BHgEPASEyFhQGKwEDDgEjISImNRE0NjcXERchEz4BOwEyNiYjISoDLgQnJj8BJwUzMhYVERQGKwEiJjURNDYBZAFrHxZuDQEMVAEuVGxuVGqDBhsP%2FqoHphwOOmQBJYMGGw%2FLFRMSFv44AgoCCQMHAwUDAQwRklb9T2QVHR0VZBUdHQNp5hAWcA0mD3lMkE7%2BrRUoog0CDRElCkj%2BCVkBUxUoMjIBAgIDBQIZFrdT5B0V%2FgwVHR0VAfQVHQAAAAP%2FnABkBLAETwAdADYARgAAAQUeBBURFAYjISImJwMjIiY0NjMhJyY2PwE2BxcWBw4FKgIjIRUzMhYXEyE3ESUFMzIWFREUBisBIiY1ETQ2AdsBbgIIFBANrAf%2Bqg8bBoNqVW1sVAEuVQsBDW4WSpIRDAIDBQMHAwkDCgH%2BJd0PHAaCASZq%2FqoCUGQVHR0VZBUdHQRP5gEFEBEXC%2F3zDaIoFQFTTpBMeQ8mDXAWrrcWGQIFAwICAWQoFf6tWQH37OQdFf4MFR0dFQH0FR0AAAADAGEAAARMBQ4AGwA3AEcAAAAyFh0BBR4BFREUBiMhIiYvAQMmPwE%2BAR8BETQXNTQmBhURHAMOBAcGLwEHEyE3ESUuAQMhMhYdARQGIyEiJj0BNDYB3pBOAVMVKKIN%2FfMRJQoJ5hAWcA0mD3nGMjIBAgIDBQIZFrdT7AH3Wf6tFSiWAfQVHR0V%2FgwVHR0FDm5UaoMGGw%2F%2BqgemHA4OAWsfFm4NAQxUAS5U1ssVExIW%2FjgCCgIJAwcDBQMBDBGSVv6tZAElgwYb%2FQsdFWQVHR0VZBUdAAP%2F%2FQAGA%2BgFFAAPAC0ASQAAASEyNj0BNCYjISIGHQEUFgEVFAYiJjURBwYmLwEmNxM%2BBDMhMhYVERQGBwEDFzc2Fx4FHAIVERQWNj0BNDY3JREnAV4B9BUdHRX%2BDBUdHQEPTpBMeQ8mDXAWEOYBBRARFwsCDQ2iKBX9iexTtxYZAgUDAgIBMjIoFQFTWQRMHRVkFR0dFWQVHfzmalRubFQBLlQMAQ1uFh8BawIIEw8Mpgf%2Bqg8bBgHP%2Fq1WkhEMAQMFAwcDCQIKAv44FhITFcsPGwaDASVkAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgEBJSYGHQEhIgYdARQWMyEVFBY3JTY0AeLs1ptbW5vW7NabW1ubAob%2B7RAX%2Fu0KDw8KARMXEAETEASaW5vW7NabW1ub1uzWm%2F453w0KFYkPCpYKD4kVCg3fDSYAAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgENAQYUFwUWNj0BITI2PQE0JiMhNTQmAeLs1ptbW5vW7NabW1ubASX%2B7RAQARMQFwETCg8PCv7tFwSaW5vW7NabW1ub1uzWm%2BjfDSYN3w0KFYkPCpYKD4kVCgAAAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgEBAyYiBwMGFjsBERQWOwEyNjURMzI2AeLs1ptbW5vW7NabW1ubAkvfDSYN3w0KFYkPCpYKD4kVCgSaW5vW7NabW1ub1uzWm%2F5AARMQEP7tEBf%2B7QoPDwoBExcAAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgEFIyIGFREjIgYXExYyNxM2JisBETQmAeLs1ptbW5vW7NabW1ubAZeWCg%2BJFQoN3w0mDd8NChWJDwSaW5vW7NabW1ub1uzWm7sPCv7tFxD%2B7RAQARMQFwETCg8AAAMAGAAYBJgEmAAPAJYApgAAADIeAhQOAiIuAjQ%2BASUOAwcGJgcOAQcGFgcOAQcGFgcUFgcyHgEXHgIXHgI3Fg4BFx4CFxQGFBcWNz4CNy4BJy4BJyIOAgcGJyY2NS4BJzYuAQYHBicmNzY3HgIXHgMfAT4CJyY%2BATc%2BAzcmNzIWMjY3LgMnND4CJiceAT8BNi4CJwYHFB4BFS4CJz4BNxYyPgEB5OjVm1xcm9Xo1ZtcXJsBZA8rHDoKDz0PFD8DAxMBAzEFCRwGIgEMFhkHECIvCxU%2FOR0HFBkDDRQjEwcFaHUeISQDDTAMD0UREi4oLBAzDwQBBikEAQMLGhIXExMLBhAGKBsGBxYVEwYFAgsFAwMNFwQGCQcYFgYQCCARFwkKKiFBCwQCAQMDHzcLDAUdLDgNEiEQEgg%2FKhADGgMKEgoRBJhcm9Xo1ZtcXJvV6NWbEQwRBwkCAwYFBycPCxcHInIWInYcCUcYChQECA4QBAkuHgQPJioRFRscBAcSCgwCch0kPiAIAQcHEAsBAgsLIxcBMQENCQIPHxkCFBkdHB4QBgEBBwoMGBENBAMMJSAQEhYXDQ4qFBkKEhIDCQsXJxQiBgEOCQwHAQ0DBAUcJAwSCwRnETIoAwEJCwsLJQcKDBEAAAAAAQAAAAIErwSFABYAAAE2FwUXNxYGBw4BJwEGIi8BJjQ3ASY2AvSkjv79kfsGUE08hjv9rA8rD28PDwJYIk8EhVxliuh%2BWYcrIgsW%2FawQEG4PKxACV2XJAAYAAABgBLAErAAPABMAIwAnADcAOwAAEyEyFh0BFAYjISImPQE0NgUjFTMFITIWHQEUBiMhIiY9ATQ2BSEVIQUhMhYdARQGIyEiJj0BNDYFIRUhZAPoKTs7KfwYKTs7BBHIyPwYA%2BgpOzsp%2FBgpOzsEEf4MAfT8GAPoKTs7KfwYKTs7BBH%2B1AEsBKw7KWQpOzspZCk7ZGTIOylkKTs7KWQpO2RkyDspZCk7OylkKTtkZAAAAAIAZAAABEwEsAALABEAABMhMhYUBiMhIiY0NgERBxEBIZYDhBUdHRX8fBUdHQI7yP6iA4QEsB0qHR0qHf1E%2FtTIAfQB9AAAAAMAAABkBLAEsAAXABsAJQAAATMyFh0BITIWFREhNSMVIRE0NjMhNTQ2FxUzNQEVFAYjISImPQEB9MgpOwEsKTv%2BDMj%2BDDspASw7KcgB9Dsp%2FBgpOwSwOylkOyn%2BcGRkAZApO2QpO2RkZP1EyCk7OynIAAAABAAAAAAEsASwABUAKwBBAFcAABMhMhYPARcWFA8BBiIvAQcGJjURNDYpATIWFREUBi8BBwYiLwEmND8BJyY2ARcWFA8BFxYGIyEiJjURNDYfATc2MgU3NhYVERQGIyEiJj8BJyY0PwE2MhcyASwVCA5exwcHaggUCMdeDhUdAzUBLBUdFQ5exwgUCGoHB8deDgj%2BL2oHB8deDggV%2FtQVHRUOXscIFALLXg4VHRX%2B1BUIDl7HBwdqCBQIBLAVDl7HCBQIagcHx14OCBUBLBUdHRX%2B1BUIDl7HBwdqCBQIx14OFf0maggUCMdeDhUdFQEsFQgOXscHzl4OCBX%2B1BUdFQ5exwgUCGoHBwAAAAYAAAAABKgEqAAPABsAIwA7AEMASwAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JiQyFhQGIiY0JDIWFAYjIicHFhUUBiImNTQ2PwImNTQEMhYUBiImNCQyFhQGIiY0Advy3Z9fX5%2Fd8t2gXl6gAcbgv29vv%2BC%2Fb2%2F%2BLS0gIC0gAUwtICAWDg83ETNIMykfegEJ%2FoctICAtIAIdLSAgLSAEqF%2Bf3fLdoF5eoN3y3Z9Xb7%2Fgv29vv%2BC%2FBiAtISEtICAtIQqRFxwkMzMkIDEFfgEODhekIC0gIC0gIC0gIC0AAf%2FYAFoEuQS8AFsAACUBNjc2JicmIyIOAwcABw4EFx4BMzI3ATYnLgEjIgcGBwEOASY0NwA3PgEzMhceARcWBgcOBgcGIyImJyY2NwE2NzYzMhceARcWBgcBDgEnLgECIgHVWwgHdl8WGSJBMD8hIP6IDx4eLRMNBQlZN0ozAiQkEAcdEhoYDRr%2Bqw8pHA4BRyIjQS4ODyw9DQ4YIwwod26La1YOOEBGdiIwGkQB%2F0coW2tQSE5nDxE4Qv4eDyoQEAOtAdZbZWKbEQQUGjIhH%2F6JDxsdNSg3HT5CMwIkJCcQFBcMGv6uDwEcKQ4BTSIjIQEINykvYyMLKnhuiWZMBxtAOU6%2BRAH%2FSBg3ISSGV121Qv4kDwIPDyYAAAACAGQAWASvBEQAGQBEAAABPgIeAhUUDgMHLgQ1ND4CHgEFIg4DIi4DIyIGFRQeAhcWFx4EMj4DNzY3PgQ1NCYCiTB7eHVYNkN5hKg%2BPqeFeEM4WnZ4eQEjIT8yLSohJyktPyJDbxtBMjMPBw86KzEhDSIzKUAMBAgrKT8dF2oDtURIBS1TdkA5eYB%2FslVVsn%2BAeTlAdlMtBUgtJjY1JiY1NiZvTRc4SjQxDwcOPCouGBgwKEALBAkpKkQqMhNPbQACADn%2F8gR3BL4AFwAuAAAAMh8BFhUUBg8BJi8BNycBFwcvASY0NwEDNxYfARYUBwEGIi8BJjQ%2FARYfAQcXAQKru0KNQjgiHR8uEl%2F3%2FnvUaRONQkIBGxJpCgmNQkL%2B5UK6Qo1CQjcdLhJf9wGFBL5CjUJeKmsiHTUuEl%2F4%2FnvUahKNQrpCARv%2BRmkICY1CukL%2B5UJCjUK7Qjc3LxFf%2BAGFAAAAAAMAyAAAA%2BgEsAARABUAHQAAADIeAhURFAYjISImNRE0PgEHESERACIGFBYyNjQCBqqaZDo7Kf2oKTs8Zj4CWP7%2FVj09Vj0EsB4uMhX8Ryk7OykDuRUzLar9RAK8%2FRY9Vj09VgABAAAAAASwBLAAFgAACQEWFAYiLwEBEScBBRMBJyEBJyY0NjIDhgEbDx0qDiT%2B6dT%2BzP7oywEz0gEsAQsjDx0qBKH%2B5g8qHQ8j%2FvX%2B1NL%2BzcsBGAE01AEXJA4qHQAAAAADAScAEQQJBOAAMgBAAEsAAAEVHgQXIy4DJxEXHgQVFAYHFSM1JicuASczHgEXEScuBDU0PgI3NRkBDgMVFB4DFxYXET4ENC4CArwmRVI8LAKfBA0dMydAIjxQNyiym2SWVygZA4sFV0obLkJOMCAyVWg6HSoqFQ4TJhkZCWgWKTEiGBkzNwTgTgUTLD9pQiQuLBsH%2Fs0NBxMtPGQ%2Bi6oMTU8QVyhrVk1iEAFPCA4ZLzlYNkZwSCoGTf4SARIEDh02Jh0rGRQIBgPQ%2FsoCCRYgNEM0JRkAAAABAGQAZgOUBK0ASgAAATIeARUjNC4CIyIGBwYVFB4BFxYXMxUjFgYHBgc%2BATM2FjMyNxcOAyMiLgEHDgEPASc%2BBTc%2BAScjNTMmJy4CPgE3NgIxVJlemSc8OxolVBQpGxoYBgPxxQgVFS02ImIWIIwiUzUyHzY4HCAXanQmJ1YYFzcEGAcTDBEJMAwk3aYXFQcKAg4tJGEErVCLTig%2FIhIdFSw5GkowKgkFZDKCHj4yCg8BIh6TExcIASIfBAMaDAuRAxAFDQsRCjePR2QvORQrREFMIVgAAAACABn%2F%2FwSXBLAADwAfAAABMzIWDwEGIi8BJjY7AREzBRcWBisBESMRIyImPwE2MgGQlhUIDuYOKg7mDggVlsgCF%2BYOCBWWyJYVCA7mDioBLBYO%2Bg8P%2Bg4WA4QQ%2BQ4V%2FHwDhBUO%2BQ8AAAQAGf%2F%2FA%2BgEsAAHABcAGwAlAAABIzUjFSMRIQEzMhYPAQYiLwEmNjsBETMFFTM1EwczFSE1NyM1IQPoZGRkASz9qJYVCA7mDioO5g4IFZbIAZFkY8jI%2FtTIyAEsArxkZAH0%2FHwWDvoPD%2FoOFgOEZMjI%2FRL6ZJb6ZAAAAAAEABn%2F%2FwPoBLAADwAZACEAJQAAATMyFg8BBiIvASY2OwERMwUHMxUhNTcjNSERIzUjFSMRIQcVMzUBkJYVCA7mDioO5g4IFZbIAljIyP7UyMgBLGRkZAEsx2QBLBYO%2Bg8P%2Bg4WA4SW%2BmSW%2BmT7UGRkAfRkyMgAAAAEABn%2F%2FwRMBLAADwAVABsAHwAAATMyFg8BBiIvASY2OwERMwEjESM1MxMjNSMRIQcVMzUBkJYVCA7mDioO5g4IFZbIAlhkZMhkZMgBLMdkASwWDvoPD%2FoOFgOE%2FgwBkGT7UGQBkGTIyAAAAAAEABn%2F%2FwRMBLAADwAVABkAHwAAATMyFg8BBiIvASY2OwERMwEjNSMRIQcVMzUDIxEjNTMBkJYVCA7mDioO5g4IFZbIArxkyAEsx2QBZGTIASwWDvoPD%2FoOFgOE%2FgxkAZBkyMj7tAGQZAAAAAAFABn%2F%2FwSwBLAADwATABcAGwAfAAABMzIWDwEGIi8BJjY7AREzBSM1MxMhNSETITUhEyE1IQGQlhUIDuYOKg7mDggVlsgB9MjIZP7UASxk%2FnABkGT%2BDAH0ASwWDvoPD%2FoOFgOEyMj%2BDMj%2BDMj%2BDMgABQAZ%2F%2F8EsASwAA8AEwAXABsAHwAAATMyFg8BBiIvASY2OwERMwUhNSEDITUhAyE1IQMjNTMBkJYVCA7mDioO5g4IFZbIAyD%2BDAH0ZP5wAZBk%2FtQBLGTIyAEsFg76Dw%2F6DhYDhMjI%2FgzI%2FgzI%2FgzIAAIAAAAABEwETAAPAB8AAAEhMhYVERQGIyEiJjURNDYFISIGFREUFjMhMjY1ETQmAV4BkKK8u6P%2BcKW5uQJn%2FgwpOzspAfQpOzsETLuj%2FnClubmlAZClucg7Kf4MKTs7KQH0KTsAAAAAAwAAAAAETARMAA8AHwArAAABITIWFREUBiMhIiY1ETQ2BSEiBhURFBYzITI2NRE0JgUXFhQPAQYmNRE0NgFeAZClubml%2FnCju7wCZP4MKTs7KQH0KTs7%2Fm%2F9ERH9EBgYBEy5pf5wpbm5pQGQo7vIOyn%2BDCk7OykB9Ck7gr4MJAy%2BDAsVAZAVCwAAAAADAAAAAARMBEwADwAfACsAAAEhMhYVERQGIyEiJjURNDYFISIGFREUFjMhMjY1ETQmBSEyFg8BBiIvASY2AV4BkKO7uaX%2BcKW5uQJn%2FgwpOzspAfQpOzv%2BFQGQFQsMvgwkDL4MCwRMvKL%2BcKW5uaUBkKO7yDsp%2FgwpOzspAfQpO8gYEP0REf0QGAAAAAMAAAAABEwETAAPAB8AKwAAASEyFhURFAYjISImNRE0NgUhIgYVERQWMyEyNjURNCYFFxYGIyEiJj8BNjIBXgGQpbm5pf5wo7u5Amf%2BDCk7OykB9Ck7O%2F77vgwLFf5wFQsMvgwkBEy5pf5wo7u8ogGQpbnIOyn%2BDCk7OykB9Ck7z%2F0QGBgQ%2FREAAAAAAgAAAAAFFARMAB8ANQAAASEyFhURFAYjISImPQE0NjMhMjY1ETQmIyEiJj0BNDYHARYUBwEGJj0BIyImPQE0NjsBNTQ2AiYBkKW5uaX%2BcBUdHRUBwik7Oyn%2BPhUdHb8BRBAQ%2FrwQFvoVHR0V%2BhYETLml%2FnCluR0VZBUdOykB9Ck7HRVkFR3p%2FuQOJg7%2B5A4KFZYdFcgVHZYVCgAAAQDZAAID1wSeACMAAAEXFgcGAgclMhYHIggBBwYrAScmNz4BPwEhIicmNzYANjc2MwMZCQgDA5gCASwYEQ4B%2Fvf%2B8wQMDgkJCQUCUCcn%2FtIXCAoQSwENuwUJEASeCQoRC%2F5TBwEjEv7K%2FsUFDwgLFQnlbm4TFRRWAS%2FTBhAAAAACAAAAAAT%2BBEwAHwA1AAABITIWHQEUBiMhIgYVERQWMyEyFh0BFAYjISImNRE0NgUBFhQHAQYmPQEjIiY9ATQ2OwE1NDYBXgGQFR0dFf4%2BKTs7KQHCFR0dFf5wpbm5AvEBRBAQ%2FrwQFvoVHR0V%2BhYETB0VZBUdOyn%2BDCk7HRVkFR25pQGQpbnp%2FuQOJg7%2B5A4KFZYdFcgVHZYVCgACAAAAAASwBLAAFQAxAAABITIWFREUBi8BAQYiLwEmNDcBJyY2ASMiBhURFBYzITI2PQE3ERQGIyEiJjURNDYzIQLuAZAVHRUObf7IDykPjQ8PAThtDgj%2B75wpOzspAfQpO8i7o%2F5wpbm5pQEsBLAdFf5wFQgObf7IDw%2BNDykPAThtDhX%2B1Dsp%2FgwpOzsplMj%2B1qW5uaUBkKW5AAADAA4ADgSiBKIADwAbACMAAAAyHgIUDgIiLgI0PgEEIg4BFB4BMj4BNCYEMhYUBiImNAHh7tmdXV2d2e7ZnV1dnQHD5sJxccLmwnFx%2FnugcnKgcgSiXZ3Z7tmdXV2d2e7ZnUdxwubCcXHC5sJzcqBycqAAAAMAAAAABEwEsAAVAB8AIwAAATMyFhURMzIWBwEGIicBJjY7ARE0NgEhMhYdASE1NDYFFTM1AcLIFR31FAoO%2FoEOJw3%2BhQ0JFfod%2FoUD6BUd%2B7QdA2dkBLAdFf6iFg%2F%2BVg8PAaoPFgFeFR38fB0V%2BvoVHWQyMgAAAAMAAAAABEwErAAVAB8AIwAACQEWBisBFRQGKwEiJj0BIyImNwE%2BAQEhMhYdASE1NDYFFTM1AkcBeg4KFfQiFsgUGPoUCw4Bfw4n%2FfkD6BUd%2B7QdA2dkBJ7%2BTQ8g%2BhQeHRX6IQ8BrxAC%2FH8dFfr6FR1kMjIAAwAAAAAETARLABQAHgAiAAAJATYyHwEWFAcBBiInASY0PwE2MhcDITIWHQEhNTQ2BRUzNQGMAXEHFQeLBwf98wcVB%2F7cBweLCBUH1APoFR37tB0DZ2QC0wFxBweLCBUH%2FfMICAEjCBQIiwcH%2FdIdFfr6FR1kMjIABAAAAAAETASbAAkAGQAjACcAABM3NjIfAQcnJjQFNzYWFQMOASMFIiY%2FASc3ASEyFh0BITU0NgUVMzWHjg4qDk3UTQ4CFtIOFQIBHRX9qxUIDtCa1P49A%2BgVHfu0HQNnZAP%2Fjg4OTdRMDyqa0g4IFf2pFB4BFQ7Qm9T9Oh0V%2BvoVHWQyMgAAAAQAAAAABEwEsAAPABkAIwAnAAABBR4BFRMUBi8BByc3JyY2EwcGIi8BJjQ%2FAQEhMhYdASE1NDYFFTM1AV4CVxQeARUO0JvUm9IOCMNMDyoOjg4OTf76A%2BgVHfu0HQNnZASwAgEdFf2rFQgO0JrUmtIOFf1QTQ4Ojg4qDk3%2BWB0V%2BvoVHWQyMgACAAT%2F7ASwBK8ABQAIAAAlCQERIQkBFQEEsP4d%2Fsb%2BcQSs%2FTMCq2cBFP5xAacDHPz55gO5AAAAAAIAAABkBEwEsAAVABkAAAERFAYrAREhESMiJjURNDY7AREhETMHIzUzBEwdFZb9RJYVHR0V%2BgH0ZMhkZAPo%2FK4VHQGQ%2FnAdFQPoFB7%2B1AEsyMgAAAMAAABFBN0EsAAWABoALwAAAQcBJyYiDwEhESMiJjURNDY7AREhETMHIzUzARcWFAcBBiIvASY0PwE2Mh8BATYyBEwC%2FtVfCRkJlf7IlhUdHRX6AfRkyGRkAbBqBwf%2BXAgUCMoICGoHFQdPASkHFQPolf7VXwkJk%2F5wHRUD6BQe%2FtQBLMjI%2Fc5qBxUH%2FlsHB8sHFQdqCAhPASkHAAMAAAANBQcEsAAWABoAPgAAAREHJy4BBwEhESMiJjURNDY7AREhETMHIzUzARcWFA8BFxYUDwEGIi8BBwYiLwEmND8BJyY0PwE2Mh8BNzYyBExnhg8lEP72%2FreWFR0dFfoB9GTIZGQB9kYPD4ODDw9GDykPg4MPKQ9GDw%2BDgw8PRg8pD4ODDykD6P7zZ4YPAw7%2B9v5wHRUD6BQe%2FtQBLMjI%2FYxGDykPg4MPKQ9GDw%2BDgw8PRg8pD4ODDykPRg8Pg4MPAAADAAAAFQSXBLAAFQAZAC8AAAERISIGHQEhESMiJjURNDY7AREhETMHIzUzEzMyFh0BMzIWDwEGIi8BJjY7ATU0NgRM%2FqIVHf4MlhUdHRX6AfRkyGRklmQVHZYVCA7mDioO5g4IFZYdA%2Bj%2B1B0Vlv5wHRUD6BQe%2FtQBLMjI%2FagdFfoVDuYODuYOFfoVHQAAAAADAAAAAASXBLAAFQAZAC8AAAERJyYiBwEhESMiJjURNDY7AREhETMHIzUzExcWBisBFRQGKwEiJj0BIyImPwE2MgRMpQ4qDv75%2Fm6WFR0dFfoB9GTIZGTr5g4IFZYdFWQVHZYVCA7mDioD6P5wpQ8P%2Fvf%2BcB0VA%2BgUHv7UASzIyP2F5Q8V%2BhQeHhT6FQ%2FlDwADAAAAyASwBEwACQATABcAABMhMhYdASE1NDYBERQGIyEiJjURExUhNTIETBUd%2B1AdBJMdFfu0FR1kAZAETB0VlpYVHf7U%2FdoVHR0VAib%2B1MjIAAAGAAMAfQStBJcADwAZAB0ALQAxADsAAAEXFhQPAQYmPQEhNSE1NDYBIyImPQE0NjsBFyM1MwE3NhYdASEVIRUUBi8BJjQFIzU7AjIWHQEUBisBA6f4Dg74DhX%2BcAGQFf0vMhUdHRUyyGRk%2FoL3DhUBkP5wFQ73DwOBZGRkMxQdHRQzBI3mDioO5g4IFZbIlhUI%2FoUdFWQVHcjI%2FcvmDggVlsiWFQgO5g4qecgdFWQVHQAAAAACAGQAAASwBLAAFgBRAAABJTYWFREUBisBIiY1ES4ENRE0NiUyFh8BERQOAg8BERQGKwEiJjURLgQ1ETQ%2BAzMyFh8BETMRPAE%2BAjMyFh8BETMRND4DA14BFBklHRXIFR0EDiIaFiX%2B4RYZAgEVHR0LCh0VyBUdBA4iGhYBBwoTDRQZAgNkBQkVDxcZAQFkAQUJFQQxdBIUH%2FuuFR0dFQGNAQgbHzUeAWcfRJEZDA3%2BPhw%2FMSkLC%2F5BFR0dFQG%2FBA8uLkAcAcICBxENCxkMDf6iAV4CBxENCxkMDf6iAV4CBxENCwABAGQAAASwBEwAMwAAARUiDgMVERQWHwEVITUyNjURIREUFjMVITUyPgM1ETQmLwE1IRUiBhURIRE0JiM1BLAEDiIaFjIZGf5wSxn%2BDBlL%2FnAEDiIaFjIZGQGQSxkB9BlLBEw4AQUKFA78iBYZAQI4OA0lAYr%2BdiUNODgBBQoUDgN4FhkBAjg4DSX%2BdgGKJQ04AAAABgAAAAAETARMAAwAHAAgACQAKAA0AAABITIWHQEjBTUnITchBSEyFhURFAYjISImNRE0NhcVITUBBTUlBRUhNQUVFAYjIQchJyE3MwKjAXcVHWn%2B2cj%2BcGQBd%2F4lASwpOzsp%2FtQpOzspASwCvP5wAZD8GAEsArwdFf6JZP6JZAGQyGkD6B0VlmJiyGTIOyn%2BDCk7OykB9Ck7ZMjI%2FveFo4XGyMhm%2BBUdZGTIAAEAEAAQBJ8EnwAmAAATNzYWHwEWBg8BHgEXNz4BHwEeAQ8BBiIuBicuBTcRohEuDosOBhF3ZvyNdxEzE8ATBxGjAw0uMUxPZWZ4O0p3RjITCwED76IRBhPCFDERdo78ZXYRBA6IDi8RogEECBUgNUNjO0qZfHNVQBAAAAACAAAAAASwBEwAIwBBAAAAMh4EHwEVFAYvAS4BPQEmIAcVFAYPAQYmPQE%2BBRIyHgIfARUBHgEdARQGIyEiJj0BNDY3ATU0PgIB%2FLimdWQ%2FLAkJHRTKFB2N%2FsKNHRTKFB0DDTE7ZnTKcFImFgEBAW0OFR0V%2B7QVHRUOAW0CFiYETBUhKCgiCgrIFRgDIgMiFZIYGJIVIgMiAxgVyAQNJyQrIP7kExwcCgoy%2FtEPMhTUFR0dFdQUMg8BLzIEDSEZAAADAAAAAASwBLAADQAdACcAAAEHIScRMxUzNTMVMzUzASEyFhQGKwEXITcjIiY0NgMhMhYdASE1NDYETMj9qMjIyMjIyPyuArwVHR0VDIn8SokMFR0dswRMFR37UB0CvMjIAfTIyMjI%2FOAdKh1kZB0qHf7UHRUyMhUdAAAAAwBkAAAEsARMAAkAEwAdAAABIyIGFREhETQmASMiBhURIRE0JgEhETQ2OwEyFhUCvGQpOwEsOwFnZCk7ASw7%2FRv%2B1DspZCk7BEw7KfwYA%2BgpO%2F7UOyn9RAK8KTv84AGQKTs7KQAAAAAF%2F5wAAASwBEwADwATAB8AJQApAAATITIWFREUBiMhIiY1ETQ2FxEhEQUjFTMRITUzNSMRIQURByMRMwcRMxHIArx8sLB8%2FUR8sLAYA4T%2BDMjI%2FtTIyAEsAZBkyMhkZARMsHz%2BDHywsHwB9HywyP1EArzIZP7UZGQBLGT%2B1GQB9GT%2B1AEsAAAABf%2BcAAAEsARMAA8AEwAfACUAKQAAEyEyFhURFAYjISImNRE0NhcRIREBIzUjFSMRMxUzNTMFEQcjETMHETMRyAK8fLCwfP1EfLCwGAOE%2FgxkZGRkZGQBkGTIyGRkBEywfP4MfLCwfAH0fLDI%2FUQCvP2oyMgB9MjIZP7UZAH0ZP7UASwABP%2BcAAAEsARMAA8AEwAbACMAABMhMhYVERQGIyEiJjURNDYXESERBSMRMxUhESEFIxEzFSERIcgCvHywsHz9RHywsBgDhP4MyMj%2B1AEsAZDIyP7UASwETLB8%2Fgx8sLB8AfR8sMj9RAK8yP7UZAH0ZP7UZAH0AAAABP%2BcAAAEsARMAA8AEwAWABkAABMhMhYVERQGIyEiJjURNDYXESERAS0BDQERyAK8fLCwfP1EfLCwGAOE%2Fgz%2B1AEsAZD%2B1ARMsHz%2BDHywsHwB9HywyP1EArz%2BDJaWlpYBLAAAAAX%2FnAAABLAETAAPABMAFwAgACkAABMhMhYVERQGIyEiJjURNDYXESERAyERIQcjIgYVFBY7AQERMzI2NTQmI8gCvHywsHz9RHywsBgDhGT9RAK8ZIImOTYpgv4Mgik2OSYETLB8%2Fgx8sLB8AfR8sMj9RAK8%2FagB9GRWQUFUASz%2B1FRBQVYAAAAF%2F5wAAASwBEwADwATAB8AJQApAAATITIWFREUBiMhIiY1ETQ2FxEhEQUjFTMRITUzNSMRIQEjESM1MwMjNTPIArx8sLB8%2FUR8sLAYA4T%2BDMjI%2FtTIyAEsAZBkZMjIZGQETLB8%2Fgx8sLB8AfR8sMj9RAK8yGT%2B1GRkASz%2BDAGQZP4MZAAG%2F5wAAASwBEwADwATABkAHwAjACcAABMhMhYVERQGIyEiJjURNDYXESERBTMRIREzASMRIzUzBRUzNQEjNTPIArx8sLB8%2FUR8sLAYA4T9RMj%2B1GQCWGRkyP2oZAEsZGQETLB8%2Fgx8sLB8AfR8sMj9RAK8yP5wAfT%2BDAGQZMjIyP7UZAAF%2F5wAAASwBEwADwATABwAIgAmAAATITIWFREUBiMhIiY1ETQ2FxEhEQEHIzU3NSM1IQEjESM1MwMjNTPIArx8sLB8%2FUR8sLAYA4T%2BDMdkx8gBLAGQZGTIx2RkBEywfP4MfLCwfAH0fLDI%2FUQCvP5wyDLIlmT%2BDAGQZP4MZAAAAAMACQAJBKcEpwAPABsAJQAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgchFSEVISc1NyEB4PDbnl5entvw255eXp4BxeTCcXHC5MJxcWz%2B1AEs%2FtRkZAEsBKdentvw255eXp7b8NueTHHC5MJxccLkwtDIZGTIZAAAAAAEAAkACQSnBKcADwAbACcAKwAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgcVBxcVIycjFSMRIQcVMzUB4PDbnl5entvw255eXp4BxeTCcXHC5MJxcWwyZGRklmQBLMjIBKdentvw255eXp7b8NueTHHC5MJxccLkwtBkMmQyZGQBkGRkZAAAAv%2Fy%2F50EwgRBACAANgAAATIWFzYzMhYUBisBNTQmIyEiBh0BIyImNTQ2NyY1ND4BEzMyFhURMzIWDwEGIi8BJjY7ARE0NgH3brUsLC54qqp4gB0V%2FtQVHd5QcFZBAmKqepYKD4kVCg3fDSYN3w0KFYkPBEF3YQ6t8a36FR0dFfpzT0VrDhMSZKpi%2FbMPCv7tFxD0EBD0EBcBEwoPAAAAAAL%2F8v%2BcBMMEQQAcADMAAAEyFhc2MzIWFxQGBwEmIgcBIyImNTQ2NyY1ND4BExcWBisBERQGKwEiJjURIyImNzY3NjIB9m62LCsueaoBeFr%2Bhg0lDf6DCU9xVkECYqnm3w0KFYkPCpYKD4kVCg3HGBMZBEF3YQ%2BteGOkHAFoEBD%2Bk3NPRWsOExNkqWP9kuQQF%2F7tCg8PCgETFxDMGBMAAAABAGQAAARMBG0AGAAAJTUhATMBMwkBMwEzASEVIyIGHQEhNTQmIwK8AZD%2B8qr%2B8qr%2B1P7Uqv7yqv7yAZAyFR0BkB0VZGQBLAEsAU3%2Bs%2F7U%2FtRkHRUyMhUdAAAAAAEAeQAABDcEmwAvAAABMhYXHgEVFAYHFhUUBiMiJxUyFh0BITU0NjM1BiMiJjU0Ny4BNTQ2MzIXNCY1NDYCWF6TGll7OzIJaUo3LRUd%2FtQdFS03SmkELzlpSgUSAqMEm3FZBoNaPWcfHRpKaR77HRUyMhUd%2Bx5pShIUFVg1SmkCAhAFdKMAAAAGACcAFASJBJwAEQAqAEIASgBiAHsAAAEWEgIHDgEiJicmAhI3PgEyFgUiBw4BBwYWHwEWMzI3Njc2Nz4BLwEmJyYXIgcOAQcGFh8BFjMyNz4BNz4BLwEmJyYWJiIGFBYyNjciBw4BBw4BHwEWFxYzMjc%2BATc2Ji8BJhciBwYHBgcOAR8BFhcWMzI3PgE3NiYvASYD8m9PT29T2dzZU29PT29T2dzZ%2Fj0EBHmxIgQNDCQDBBcGG0dGYAsNAwkDCwccBAVQdRgEDA0iBAQWBhJROQwMAwkDCwf5Y4xjY4xjVhYGElE6CwwDCQMLBwgEBVB1GAQNDCIEjRcGG0dGYAsNAwkDCwcIBAR5sSIEDQwkAwPyb%2F7V%2FtVvU1dXU28BKwErb1NXVxwBIrF5DBYDCQEWYEZHGwMVDCMNBgSRAhh1UA0WAwkBFTpREgMVCyMMBwT6Y2OMY2MVFTpREQQVCyMMBwQCGHVQDRYDCQEkFmBGRxsDFQwjDQYEASKxeQwWAwkBAAAABQBkAAAD6ASwAAwADwAWABwAIgAAASERIzUhFSERNDYzIQEjNQMzByczNTMDISImNREFFRQGKwECvAEstP6s%2FoQPCgI%2FASzIZKLU1KJktP51Cg8DhA8KwwMg%2FoTIyALzCg%2F%2B1Mj84NTUyP4MDwoBi8jDCg8AAAAABQBkAAAD6ASwAAkADAATABoAIQAAASERCQERNDYzIQEjNRMjFSM1IzcDISImPQEpARUUBisBNQK8ASz%2Bov3aDwoCPwEsyD6iZKLUqv6dCg8BfAIIDwqbAyD9%2BAFe%2FdoERwoP%2FtTI%2FHzIyNT%2BZA8KNzcKD1AAAAAAAwAAAAAEsAP0AAgAGQAfAAABIxUzFyERIzcFMzIeAhUhFSEDETM0PgIBMwMhASEEiqJkZP7UotT9EsgbGiEOASz9qMhkDiEaAnPw8PzgASwB9AMgyGQBLNTUBBErJGT%2BogHCJCsRBP5w%2FnAB9AAAAAMAAAAABEwETAAZADIAOQAAATMyFh0BMzIWHQEUBiMhIiY9ATQ2OwE1NDYFNTIWFREUBiMhIic3ARE0NjMVFBYzITI2AQc1IzUzNQKKZBUdMhUdHRX%2B1BUdHRUyHQFzKTs7Kf2oARP2%2Fro7KVg%2BASw%2BWP201MjIBEwdFTIdFWQVHR0VZBUdMhUd%2BpY7KfzgKTsE9gFGAUQpO5Y%2BWFj95tSiZKIAAwBkAAAEvARMABkANgA9AAABMzIWHQEzMhYdARQGIyEiJj0BNDY7ATU0NgU1MhYVESMRMxQOAiMhIiY1ETQ2MxUUFjMhMjYBBzUjNTM1AcJkFR0yFR0dFf7UFR0dFTIdAXMpO8jIDiEaG%2F2oKTs7KVg%2BASw%2BWAGc1MjIBEwdFTIdFWQVHR0VZBUdMhUd%2BpY7Kf4M%2FtQkKxEEOykDICk7lj5YWP3m1KJkogAAAAP%2FogAABRYE1AALABsAHwAACQEWBiMhIiY3ATYyEyMiBhcTHgE7ATI2NxM2JgMVMzUCkgJ9FyAs%2BwQsIBcCfRZARNAUGAQ6BCMUNhQjBDoEGODIBK37sCY3NyYEUCf%2BTB0U%2FtIUHR0UAS4UHf4MZGQAAAAACQAAAAAETARMAA8AHwAvAD8ATwBfAG8AfwCPAAABMzIWHQEUBisBIiY9ATQ2EzMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYBMzIWHQEUBisBIiY9ATQ2ITMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYBMzIWHQEUBisBIiY9ATQ2ITMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYBqfoKDw8K%2BgoPDwr6Cg8PCvoKDw8BmvoKDw8K%2BgoPD%2Fzq%2BgoPDwr6Cg8PAZr6Cg8PCvoKDw8BmvoKDw8K%2BgoPD%2Fzq%2BgoPDwr6Cg8PAZr6Cg8PCvoKDw8BmvoKDw8K%2BgoPDwRMDwqWCg8PCpYKD%2F7UDwqWCg8PCpYKDw8KlgoPDwqWCg%2F%2B1A8KlgoPDwqWCg8PCpYKDw8KlgoPDwqWCg8PCpYKD%2F7UDwqWCg8PCpYKDw8KlgoPDwqWCg8PCpYKDw8KlgoPAAAAAwAAAAAEsAUUABkAKQAzAAABMxUjFSEyFg8BBgchJi8BJjYzITUjNTM1MwEhMhYUBisBFyE3IyImNDYDITIWHQEhNTQ2ArxkZAFePjEcQiko%2FPwoKUIcMT4BXmRkyP4%2BArwVHR0VDIn8SooNFR0dswRMFR37UB0EsMhkTzeEUzMzU4Q3T2TIZPx8HSodZGQdKh3%2B1B0VMjIVHQAABAAAAAAEsAUUAAUAGQArADUAAAAyFhUjNAchFhUUByEyFg8BIScmNjMhJjU0AyEyFhQGKwEVBSElNSMiJjQ2AyEyFh0BITU0NgIwUDnCPAE6EgMBSCkHIq%2F9WrIiCikBSAOvArwVHR0VlgET%2FEoBE5YVHR2zBEwVHftQHQUUOykpjSUmCBEhFpGRFiERCCb%2BlR0qHcjIyMgdKh39qB0VMjIVHQAEAAAAAASwBJ0ABwAUACQALgAAADIWFAYiJjQTMzIWFRQXITY1NDYzASEyFhQGKwEXITcjIiY0NgMhMhYdASE1NDYCDZZqapZqty4iKyf%2BvCcrI%2F7NArwVHR0VDYr8SokMFR0dswRMFR37UB0EnWqWamqW%2Fus5Okxra0w6Of5yHSodZGQdKh3%2B1B0VMjIVHQAEAAAAAASwBRQADwAcACwANgAAATIeARUUBiImNTQ3FzcnNhMzMhYVFBchNjU0NjMBITIWFAYrARchNyMiJjQ2AyEyFh0BITU0NgJYL1szb5xvIpBvoyIfLiIrJ%2F68Jysj%2Fs0CvBUdHRUNivxKiQwVHR2zBEwVHftQHQUUa4s2Tm9vTj5Rj2%2BjGv4KOTpMa2tMOjn%2Bch0qHWRkHSod%2FtQdFTIyFR0AAAADAAAAAASwBRIAEgAiACwAAAEFFSEUHgMXIS4BNTQ%2BAjcBITIWFAYrARchNyMiJjQ2AyEyFh0BITU0NgJYASz%2B1CU%2FP00T%2Fe48PUJtj0r%2BogK8FR0dFQ2K%2FEqJDBUdHbMETBUd%2B1AdBLChizlmUT9IGVO9VFShdksE%2FH4dKh1kZB0qHf7UHRUyMhUdAAIAyAAAA%2BgFFAAPACkAAAAyFh0BHgEdASE1NDY3NTQDITIWFyMVMxUjFTMVIxUzFAYjISImNRE0NgIvUjsuNv5wNi5kAZA2XBqsyMjIyMh1U%2F5wU3V1BRQ7KU4aXDYyMjZcGk4p%2Fkc2LmRkZGRkU3V1UwGQU3UAAAMAZP%2F%2FBEwETAAPAC8AMwAAEyEyFhURFAYjISImNRE0NgMhMhYdARQGIyEXFhQGIi8BIQcGIiY0PwEhIiY9ATQ2BQchJ5YDhBUdHRX8fBUdHQQDtgoPDwr%2B5eANGiUNWP30Vw0mGg3g%2Ft8KDw8BqmQBRGQETB0V%2FgwVHR0VAfQVHf1EDwoyCg%2FgDSUbDVhYDRslDeAPCjIKD2RkZAAAAAAEAAAAAASwBEwAGQAjAC0ANwAAEyEyFh0BIzQmKwEiBhUjNCYrASIGFSM1NDYDITIWFREhETQ2ExUUBisBIiY9ASEVFAYrASImPQHIAyBTdWQ7KfopO2Q7KfopO2R1EQPoKTv7UDvxHRVkFR0D6B0VZBUdBEx1U8gpOzspKTs7KchTdf4MOyn%2B1AEsKTv%2BDDIVHR0VMjIVHR0VMgADAAEAAASpBKwADQARABsAAAkBFhQPASEBJjQ3ATYyCQMDITIWHQEhNTQ2AeACqh8fg%2F4f%2FfsgIAEnH1n%2BrAFWAS%2F%2Bq6IDIBUd%2FHwdBI39VR9ZH4MCBh9ZHwEoH%2F5u%2FqoBMAFV%2FBsdFTIyFR0AAAAAAgCPAAAEIQSwABcALwAAAQMuASMhIgYHAwYWMyEVFBYyNj0BMzI2AyE1NDY7ATU0NjsBETMRMzIWHQEzMhYVBCG9CCcV%2FnAVJwi9CBMVAnEdKh19FROo%2Fa0dFTIdFTDILxUdMhUdAocB%2BhMcHBP%2BBhMclhUdHRWWHP2MMhUdMhUdASz%2B1B0VMh0VAAAEAAAAAASwBLAADQAQAB8AIgAAASERFAYjIREBNTQ2MyEBIzUBIREUBiMhIiY1ETQ2MyEBIzUDhAEsDwr%2Bif7UDwoBdwEsyP2oASwPCv12Cg8PCgF3ASzIAyD9wQoPAk8BLFQKD%2F7UyP4M%2FcEKDw8KA7YKD%2F7UyAAC%2F5wAZAUUBEcARgBWAAABMzIeAhcWFxY2NzYnJjc%2BARYXFgcOASsBDgEPAQ4BKwEiJj8BBisBIicHDgErASImPwEmLwEuAT0BNDY7ATY3JyY2OwE2BSMiBh0BFBY7ATI2PQE0JgHkw0uOakkMEhEfQwoKGRMKBQ8XDCkCA1Y9Pgc4HCcDIhVkFRgDDDEqwxgpCwMiFWQVGAMaVCyfExwdFXwLLW8QBxXLdAFF%2BgoPDwr6Cg8PBEdBa4pJDgYKISAiJRsQCAYIDCw9P1c3fCbqFB0dFEYOCEAUHR0UnUplNQcmFTIVHVdPXw4TZV8PCjIKDw8KMgoPAAb%2FnP%2FmBRQEfgAJACQANAA8AFIAYgAAASU2Fh8BFgYPASUzMhYfASEyFh0BFAYHBQYmJyYjISImPQE0NhcjIgYdARQ7ATI2NTQmJyYEIgYUFjI2NAE3PgEeARceAT8BFxYGDwEGJi8BJjYlBwYfAR4BPwE2Jy4BJy4BAoEBpxMuDiAOAxCL%2FCtqQ0geZgM3FR0cE%2F0fFyIJKjr%2B1D5YWLlQExIqhhALIAsSAYBALS1ALf4PmBIgHhMQHC0aPzANITNQL3wpgigJASlmHyElDR0RPRMFAhQHCxADhPcICxAmDyoNeMgiNtQdFTIVJgeEBBQPQ1g%2ByD5YrBwVODMQEAtEERzJLUAtLUD%2B24ITChESEyMgAwWzPUkrRSgJL5cvfRxYGyYrDwkLNRAhFEgJDAQAAAAAAwBkAAAEOQSwAFEAYABvAAABMzIWHQEeARcWDgIPATIeBRUUDgUjFRQGKwEiJj0BIxUUBisBIiY9ASMiJj0BNDY7AREjIiY9ATQ2OwE1NDY7ATIWHQEzNTQ2AxUhMj4CNTc0LgMjARUhMj4CNTc0LgMjAnGWCg9PaAEBIC4uEBEGEjQwOiodFyI2LUAjGg8KlgoPZA8KlgoPrwoPDwpLSwoPDwqvDwqWCg9kD9cBBxwpEwsBAQsTKRz%2B%2BQFrHCkTCwEBCxMpHASwDwptIW1KLk0tHwYGAw8UKDJOLTtdPCoVCwJLCg8PCktLCg8PCksPCpYKDwJYDwqWCg9LCg8PCktLCg%2F%2B1MgVHR0LCgQOIhoW%2FnDIFR0dCwoEDiIaFgAAAwAEAAIEsASuABcAKQAsAAATITIWFREUBg8BDgEjISImJy4CNRE0NgQiDgQPARchNy4FAyMT1AMMVnokEhIdgVL9xFKCHAgYKHoCIIx9VkcrHQYGnAIwnAIIIClJVSGdwwSuelb%2BYDO3QkJXd3ZYHFrFMwGgVnqZFyYtLSUMDPPzBQ8sKDEj%2FsIBBQACAMgAAAOEBRQADwAZAAABMzIWFREUBiMhIiY1ETQ2ARUUBisBIiY9AQHblmesVCn%2BPilUrAFINhWWFTYFFKxn%2FgwpVFQpAfRnrPwY4RU2NhXhAAACAMgAAAOEBRQADwAZAAABMxQWMxEUBiMhIiY1ETQ2ARUUBisBIiY9AQHbYLOWVCn%2BPilUrAFINhWWFTYFFJaz%2FkIpVFQpAfRnrPwY4RU2NhXhAAACAAAAFAUOBBoAFAAaAAAJASUHFRcVJwc1NzU0Jj4CPwEnCQEFJTUFJQUO%2FYL%2Bhk5klpZkAQEBBQQvkwKCAVz%2Bov6iAV4BXgL%2F%2FuWqPOCWx5SVyJb6BA0GCgYDKEEBG%2F1ipqaTpaUAAAMAZAH0BLADIAAHAA8AFwAAEjIWFAYiJjQkMhYUBiImNCQyFhQGIiY0vHxYWHxYAeh8WFh8WAHofFhYfFgDIFh8WFh8WFh8WFh8WFh8WFh8AAAAAAMBkAAAArwETAAHAA8AFwAAADIWFAYiJjQSMhYUBiImNBIyFhQGIiY0Aeh8WFh8WFh8WFh8WFh8WFh8WARMWHxYWHz%2ByFh8WFh8%2FshYfFhYfAAAAAMAZABkBEwETAAPAB8ALwAAEyEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2fQO2Cg8PCvxKCg8PCgO2Cg8PCvxKCg8PCgO2Cg8PCvxKCg8PBEwPCpYKDw8KlgoP%2FnAPCpYKDw8KlgoP%2FnAPCpYKDw8KlgoPAAAABAAAAAAEsASwAA8AHwAvADMAAAEhMhYVERQGIyEiJjURNDYFISIGFREUFjMhMjY1ETQmBSEyFhURFAYjISImNRE0NhcVITUBXgH0ory7o%2F4Mpbm5Asv9qCk7OykCWCk7O%2F2xAfQVHR0V%2FgwVHR1HAZAEsLuj%2FgylubmlAfSlucg7Kf2oKTs7KQJYKTtkHRX%2B1BUdHRUBLBUdZMjIAAAAAAEAZABkBLAETAA7AAATITIWFAYrARUzMhYUBisBFTMyFhQGKwEVMzIWFAYjISImNDY7ATUjIiY0NjsBNSMiJjQ2OwE1IyImNDaWA%2BgVHR0VMjIVHR0VMjIVHR0VMjIVHR0V%2FBgVHR0VMjIVHR0VMjIVHR0VMjIVHR0ETB0qHcgdKh3IHSodyB0qHR0qHcgdKh3IHSodyB0qHQAAAAYBLAAFA%2BgEowAHAA0AEwAZAB8AKgAAAR4BBgcuATYBMhYVIiYlFAYjNDYBMhYVIiYlFAYjNDYDFRQGIiY9ARYzMgKKVz8%2FV1c%2FP%2F75fLB8sAK8sHyw%2FcB8sHywArywfLCwHSodKAMRBKNDsrJCQrKy%2FsCwfLB8fLB8sP7UsHywfHywfLD%2B05AVHR0VjgQAAAH%2FtQDIBJQDgQBCAAABNzYXAR4BBw4BKwEyFRQOBCsBIhE0NyYiBxYVECsBIi4DNTQzIyImJyY2NwE2HwEeAQ4BLwEHIScHBi4BNgLpRRkUASoLCAYFGg8IAQQNGyc%2FKZK4ChRUFQu4jjBJJxkHAgcPGQYGCAsBKhQaTBQVCiMUM7YDe7YsFCMKFgNuEwYS%2FtkLHw8OEw0dNkY4MhwBIBgXBAQYF%2F7gKjxTQyMNEw4PHwoBKBIHEwUjKBYGDMHBDAUWKCMAAAAAAgAAAAAEsASwACUAQwAAASM0LgUrAREUFh8BFSE1Mj4DNREjIg4FFSMRIQEjNC4DKwERFBYXMxUjNTI1ESMiDgMVIzUhBLAyCAsZEyYYGcgyGRn%2BcAQOIhoWyBkYJhMZCwgyA%2Bj9RBkIChgQEWQZDQzIMmQREBgKCBkB9AOEFSAVDggDAfyuFhkBAmRkAQUJFQ4DUgEDCA4VIBUBLP0SDxMKBQH%2BVwsNATIyGQGpAQUKEw%2BWAAAAAAMAAAAABEwErgAdACAAMAAAATUiJy4BLwEBIwEGBw4BDwEVITUiJj8BIRcWBiMVARsBARUUBiMhIiY9ATQ2MyEyFgPoGR4OFgUE%2Ft9F%2FtQSFQkfCwsBETE7EkUBJT0NISf%2B7IZ5AbEdFfwYFR0dFQPoFR0BLDIgDiIKCwLr%2FQ4jFQkTBQUyMisusKYiQTIBhwFW%2Fqr942QVHR0VZBUdHQADAAAAAASwBLAADwBHAEoAABMhMhYVERQGIyEiJjURNDYFIyIHAQYHBgcGHQEUFjMhMjY9ATQmIyInJj8BIRcWBwYjIgYdARQWMyEyNj0BNCYnIicmJyMBJhMjEzIETBUdHRX7tBUdHQJGRg0F%2FtUREhImDAsJAREIDAwINxAKCj8BCjkLEQwYCAwMCAE5CAwLCBEZGQ8B%2FuAFDsVnBLAdFfu0FR0dFQRMFR1SDP0PIBMSEAUNMggMDAgyCAwXDhmjmR8YEQwIMggMDAgyBwwBGRskAuwM%2FgUBCAAABAAAAAAEsASwAAMAEwAjACcAAAEhNSEFITIWFREUBiMhIiY1ETQ2KQEyFhURFAYjISImNRE0NhcRIREEsPtQBLD7ggGQFR0dFf5wFR0dAm0BkBUdHRX%2BcBUdHUcBLARMZMgdFfx8FR0dFQOEFR0dFf5wFR0dFQGQFR1k%2FtQBLAAEAAAAAASwBLAADwAfACMAJwAAEyEyFhURFAYjISImNRE0NgEhMhYVERQGIyEiJjURNDYXESEREyE1ITIBkBUdHRX%2BcBUdHQJtAZAVHR0V%2FnAVHR1HASzI%2B1AEsASwHRX8fBUdHRUDhBUd%2FgwdFf5wFR0dFQGQFR1k%2FtQBLP2oZAAAAAACAAAAZASwA%2BgAJwArAAATITIWFREzNTQ2MyEyFh0BMxUjFRQGIyEiJj0BIxEUBiMhIiY1ETQ2AREhETIBkBUdZB0VAZAVHWRkHRX%2BcBUdZB0V%2FnAVHR0CnwEsA%2BgdFf6ilhUdHRWWZJYVHR0Vlv6iFR0dFQMgFR3%2B1P7UASwAAAQAAAAABLAEsAADABMAFwAnAAAzIxEzFyEyFhURFAYjISImNRE0NhcRIREBITIWFREUBiMhIiY1ETQ2ZGRklgGQFR0dFf5wFR0dRwEs%2FqIDhBUdHRX8fBUdHQSwZB0V%2FnAVHR0VAZAVHWT%2B1AEs%2FgwdFf5wFR0dFQGQFR0AAAAAAgBkAAAETASwACcAKwAAATMyFhURFAYrARUhMhYVERQGIyEiJjURNDYzITUjIiY1ETQ2OwE1MwcRIRECWJYVHR0VlgHCFR0dFfx8FR0dFQFelhUdHRWWZMgBLARMHRX%2BcBUdZB0V%2FnAVHR0VAZAVHWQdFQGQFR1kyP7UASwAAAAEAAAAAASwBLAAAwATABcAJwAAISMRMwUhMhYVERQGIyEiJjURNDYXESERASEyFhURFAYjISImNRE0NgSwZGT9dgGQFR0dFf5wFR0dRwEs%2FK4DhBUdHRX8fBUdHQSwZB0V%2FnAVHR0VAZAVHWT%2B1AEs%2FgwdFf5wFR0dFQGQFR0AAAEBLAAwA28EgAAPAAAJAQYjIiY1ETQ2MzIXARYUA2H%2BEhcSDhAQDhIXAe4OAjX%2BEhcbGQPoGRsX%2FhIOKgAAAAABAUEAMgOEBH4ACwAACQE2FhURFAYnASY0AU8B7h0qKh3%2BEg4CewHuHREp%2FBgpER0B7g4qAAAAAAEAMgFBBH4DhAALAAATITIWBwEGIicBJjZkA%2BgpER3%2BEg4qDv4SHREDhCod%2FhIODgHuHSoAAAAAAQAyASwEfgNvAAsAAAkBFgYjISImNwE2MgJ7Ae4dESn8GCkRHQHuDioDYf4SHSoqHQHuDgAAAAACAAgAAASwBCgABgAKAAABFQE1LQE1ASE1IQK8%2FUwBnf5jBKj84AMgAuW2%2Fr3dwcHd%2B9jIAAAAAAIAAABkBLAEsAALADEAAAEjFTMVIREzNSM1IQEzND4FOwERFAYPARUhNSIuAzURMzIeBRUzESEEsMjI%2FtTIyAEs%2B1AyCAsZEyYYGWQyGRkBkAQOIhoWZBkYJhMZCwgy%2FOADhGRkASxkZP4MFSAVDggDAf3aFhkBAmRkAQUJFQ4CJgEDCA4VIBUBLAAAAgAAAAAETAPoACUAMQAAASM0LgUrAREUFh8BFSE1Mj4DNREjIg4FFSMRIQEjFTMVIREzNSM1IQMgMggLGRMmGBlkMhkZ%2FnAEDiIaFmQZGCYTGQsIMgMgASzIyP7UyMgBLAK8FSAVDggDAf3aFhkCAWRkAQUJFQ4CJgEDCA4VIBUBLPzgZGQBLGRkAAABAMgAZgNyBEoAEgAAATMyFgcJARYGKwEiJwEmNDcBNgK9oBAKDP4wAdAMChCgDQr%2BKQcHAdcKBEoWDP4w%2FjAMFgkB1wgUCAHXCQAAAQE%2BAGYD6ARKABIAAAEzMhcBFhQHAQYrASImNwkBJjYBU6ANCgHXBwf%2BKQoNoBAKDAHQ%2FjAMCgRKCf4pCBQI%2FikJFgwB0AHQDBYAAAEAZgDIBEoDcgASAAAAFh0BFAcBBiInASY9ATQ2FwkBBDQWCf4pCBQI%2FikJFgwB0AHQA3cKEKANCv4pBwcB1woNoBAKDP4wAdAAAAABAGYBPgRKA%2BgAEgAACQEWHQEUBicJAQYmPQE0NwE2MgJqAdcJFgz%2BMP4wDBYJAdcIFAPh%2FikKDaAQCgwB0P4wDAoQoA0KAdcHAAAAAgDZ%2F%2FkEPQSwAAUAOgAAARQGIzQ2BTMyFh8BNjc%2BAh4EBgcOBgcGIiYjIgYiJy4DLwEuAT4EHgEXJyY2A%2BiwfLD%2BVmQVJgdPBQsiKFAzRyorDwURAQQSFyozTSwNOkkLDkc3EDlfNyYHBw8GDyUqPjdGMR%2BTDA0EsHywfLDIHBPCAQIGBwcFDx81S21DBxlLR1xKQhEFBQcHGWt0bCQjP2hJNyATBwMGBcASGAAAAAACAMgAFQOEBLAAFgAaAAATITIWFREUBisBEQcGJjURIyImNRE0NhcVITX6AlgVHR0Vlv8TGpYVHR2rASwEsB0V%2FnAVHf4MsgkQFQKKHRUBkBUdZGRkAAAAAgDIABkETASwAA4AEgAAEyEyFhURBRElIREjETQ2ARU3NfoC7ic9%2FUQCWP1EZB8BDWQEsFEs%2FFt1A7Z9%2FBgEARc0%2FV1kFGQAAQAAAAECTW%2FDBF9fDzz1AB8EsAAAAADQdnOXAAAAANB2c5f%2FUf%2BcBdwFFAAAAAgAAgAAAAAAAAABAAAFFP%2BFAAAFFP9R%2FtQF3AABAAAAAAAAAAAAAAAAAAAAowG4ACgAAAAAAZAAAASwAAAEsABkBLAAAASwAAAEsABwAooAAAUUAAACigAABRQAAAGxAAABRQAAANgAAADYAAAAogAAAQQAAABIAAABBAAAAUUAAASwAGQEsAB7BLAAyASwAMgB9AAABLD%2F8gSwAAAEsAAABLD%2F8ASwAAAEsAAOBLAACQSwAGQEsP%2FTBLD%2F0wSwAAAEsAAABLAAAASwAAAEsAAABLAAJgSwAG4EsAAXBLAAFwSwABcEsABkBLAAGgSwAGQEsAAMBLAAZASwABcEsP%2BcBLAAZASwABcEsAAXBLAAAASwABcEsAAXBLAAFwSwAGQEsAAABLAAZASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAZASwAMgEsAAABLAAAASwADUEsABkBLAAyASw%2F7UEsAAhBLAAAASwAAAEsAAABLAAAASwAAAEsP%2BcBLAAAASwAAAEsAAABLAA2wSwABcEsAB1BLAAAASwAAAEsAAABLAACgSwAMgEsAAABLAAnQSwAMgEsADIBLAAyASwAAAEsP%2F%2BBLABLASwAGQEsACIBLABOwSwABcEsAAXBLAAFwSwABcEsAAXBLAAFwSwAAAEsAAXBLAAFwSwABcEsAAXBLAAAASwALcEsAC3BLAAAASwAAAEsABJBLAAFwSwAAAEsAAABLAAXQSw%2F9wEsP%2FcBLD%2FnwSwAGQEsAAABLAAAASwAAAEsABkBLD%2F%2FwSwAAAEsP9RBLAABgSwAAAEsAAABLABRQSwAAEEsAAABLD%2FnASwAEoEsAAUBLAAAASwAAAEsAAABLD%2FnASwAGEEsP%2F9BLAAFgSwABYEsAAWBLAAFgSwABgEsAAABMQAAASwAGQAAAAAAAD%2F2ABkADkAyAAAAScAZAAZABkAGQAZABkAGQAZAAAAAAAAAAAAAADZAAAAAAAOAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAMAZABkAAAAEAAAAAAAZP%2Bc%2F5z%2FnP%2Bc%2F5z%2FnP%2Bc%2F5wACQAJ%2F%2FL%2F8gBkAHkAJwBkAGQAAAAAAGT%2FogAAAAAAAAAAAAAAAADIAGQAAAABAI8AAP%2Bc%2F5wAZAAEAMgAyAAAAGQBkABkAAAAZAEs%2F7UAAAAAAAAAAAAAAAAAAABkAAABLAFBADIAMgAIAAAAAADIAT4AZgBmANkAyADIAAAAKgAqACoAKgCyAOgA6AFOAU4BTgFOAU4BTgFOAU4BTgFOAU4BTgFOAU4BpAIGAiICfgKGAqwC5ANGA24DjAPEBAgEMgRiBKIE3AVcBboGcgb0ByAHYgfKCB4IYgi%2BCTYJhAm2Cd4KKApMCpQK4gswC4oLygwIDFgNKg1eDbAODg5oDrQPKA%2BmD%2BYQEhBUEJAQqhEqEXYRthIKEjgSfBLAExoTdBPQFCoU1BU8FagVzBYEFjYWYBawFv4XUhemGAIYLhhqGJYYsBjgGP4ZKBloGZQZxBnaGe4aNhpoGrga9hteG7QcMhyUHOIdHB1EHWwdlB28HeYeLh52HsAfYh%2FSIEYgviEyIXYhuCJAIpYiuCMOIyIjOCN6I8Ij4CQCJDAkXiSWJOIlNCVgJbwmFCZ%2BJuYnUCe8J%2FgoNChwKKwpoCnMKiYqSiqEKworeiwILGgsuizsLRwtiC30LiguZi6iLtgvDi9GL34vsi%2F4MD4whDDSMRIxYDGuMegyJDJeMpoy3jMiMz4zaDO2NBg0YDSoNNI1LDWeNeg2PjZ8Ntw3GjdON5I31DgQOEI4hjjIOQo5SjmIOcw6HDpsOpo63jugO9w8GDxQPKI8%2BD0yPew%2BOj6MPtQ%2FKD9uP6o%2F%2BkBIQIBAxkECQX5CGEKoQu5DGENCQ3ZDoEPKRBBEYESuRPZFWkW2RgZGdEa0RvZHNkd2R7ZH9kgWSDJITkhqSIZIzEkSSThJXkmESapKAkouSlIAAQAAARcApwARAAAAAAACAAAAAQABAAAAQAAuAAAAAAAAABAAxgABAAAAAAATABIAAAADAAEECQAAAGoAEgADAAEECQABACgAfAADAAEECQACAA4ApAADAAEECQADAEwAsgADAAEECQAEADgA%2FgADAAEECQAFAHgBNgADAAEECQAGADYBrgADAAEECQAIABYB5AADAAEECQAJABYB%2BgADAAEECQALACQCEAADAAEECQAMACQCNAADAAEECQATACQCWAADAAEECQDIABYCfAADAAEECQDJADACkgADAAEECdkDABoCwnd3dy5nbHlwaGljb25zLmNvbQBDAG8AcAB5AHIAaQBnAGgAdAAgAKkAIAAyADAAMQA0ACAAYgB5ACAASgBhAG4AIABLAG8AdgBhAHIAaQBrAC4AIABBAGwAbAAgAHIAaQBnAGgAdABzACAAcgBlAHMAZQByAHYAZQBkAC4ARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAFIAZQBnAHUAbABhAHIAMQAuADAAMAA5ADsAVQBLAFcATgA7AEcATABZAFAASABJAEMATwBOAFMASABhAGwAZgBsAGkAbgBnAHMALQBSAGUAZwB1AGwAYQByAEcATABZAFAASABJAEMATwBOAFMAIABIAGEAbABmAGwAaQBuAGcAcwAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAOQA7AFAAUwAgADAAMAAxAC4AMAAwADkAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARwBMAFkAUABIAEkAQwBPAE4AUwBIAGEAbABmAGwAaQBuAGcAcwAtAFIAZQBnAHUAbABhAHIASgBhAG4AIABLAG8AdgBhAHIAaQBrAEoAYQBuACAASwBvAHYAYQByAGkAawB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQBXAGUAYgBmAG8AbgB0ACAAMQAuADAAVwBlAGQAIABPAGMAdAAgADIAOQAgADAANgA6ADMANgA6ADAANwAgADIAMAAxADQARgBvAG4AdAAgAFMAcQB1AGkAcgByAGUAbAAAAAIAAAAAAAD%2FtQAyAAAAAAAAAAAAAAAAAAAAAAAAAAABFwAAAQIBAwADAA0ADgEEAJYBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMA7wEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE%2BAT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG%2FAcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB%2BgH7AfwB%2FQH%2BAf8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CDwIQAhECEgZnbHlwaDEGZ2x5cGgyB3VuaTAwQTAHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMkYHdW5pMjA1RgRFdXJvB3VuaTIwQkQHdW5pMjMxQgd1bmkyNUZDB3VuaTI2MDEHdW5pMjZGQQd1bmkyNzA5B3VuaTI3MEYHdW5pRTAwMQd1bmlFMDAyB3VuaUUwMDMHdW5pRTAwNQd1bmlFMDA2B3VuaUUwMDcHdW5pRTAwOAd1bmlFMDA5B3VuaUUwMTAHdW5pRTAxMQd1bmlFMDEyB3VuaUUwMTMHdW5pRTAxNAd1bmlFMDE1B3VuaUUwMTYHdW5pRTAxNwd1bmlFMDE4B3VuaUUwMTkHdW5pRTAyMAd1bmlFMDIxB3VuaUUwMjIHdW5pRTAyMwd1bmlFMDI0B3VuaUUwMjUHdW5pRTAyNgd1bmlFMDI3B3VuaUUwMjgHdW5pRTAyOQd1bmlFMDMwB3VuaUUwMzEHdW5pRTAzMgd1bmlFMDMzB3VuaUUwMzQHdW5pRTAzNQd1bmlFMDM2B3VuaUUwMzcHdW5pRTAzOAd1bmlFMDM5B3VuaUUwNDAHdW5pRTA0MQd1bmlFMDQyB3VuaUUwNDMHdW5pRTA0NAd1bmlFMDQ1B3VuaUUwNDYHdW5pRTA0Nwd1bmlFMDQ4B3VuaUUwNDkHdW5pRTA1MAd1bmlFMDUxB3VuaUUwNTIHdW5pRTA1Mwd1bmlFMDU0B3VuaUUwNTUHdW5pRTA1Ngd1bmlFMDU3B3VuaUUwNTgHdW5pRTA1OQd1bmlFMDYwB3VuaUUwNjIHdW5pRTA2Mwd1bmlFMDY0B3VuaUUwNjUHdW5pRTA2Ngd1bmlFMDY3B3VuaUUwNjgHdW5pRTA2OQd1bmlFMDcwB3VuaUUwNzEHdW5pRTA3Mgd1bmlFMDczB3VuaUUwNzQHdW5pRTA3NQd1bmlFMDc2B3VuaUUwNzcHdW5pRTA3OAd1bmlFMDc5B3VuaUUwODAHdW5pRTA4MQd1bmlFMDgyB3VuaUUwODMHdW5pRTA4NAd1bmlFMDg1B3VuaUUwODYHdW5pRTA4Nwd1bmlFMDg4B3VuaUUwODkHdW5pRTA5MAd1bmlFMDkxB3VuaUUwOTIHdW5pRTA5Mwd1bmlFMDk0B3VuaUUwOTUHdW5pRTA5Ngd1bmlFMDk3B3VuaUUxMDEHdW5pRTEwMgd1bmlFMTAzB3VuaUUxMDQHdW5pRTEwNQd1bmlFMTA2B3VuaUUxMDcHdW5pRTEwOAd1bmlFMTA5B3VuaUUxMTAHdW5pRTExMQd1bmlFMTEyB3VuaUUxMTMHdW5pRTExNAd1bmlFMTE1B3VuaUUxMTYHdW5pRTExNwd1bmlFMTE4B3VuaUUxMTkHdW5pRTEyMAd1bmlFMTIxB3VuaUUxMjIHdW5pRTEyMwd1bmlFMTI0B3VuaUUxMjUHdW5pRTEyNgd1bmlFMTI3B3VuaUUxMjgHdW5pRTEyOQd1bmlFMTMwB3VuaUUxMzEHdW5pRTEzMgd1bmlFMTMzB3VuaUUxMzQHdW5pRTEzNQd1bmlFMTM2B3VuaUUxMzcHdW5pRTEzOAd1bmlFMTM5B3VuaUUxNDAHdW5pRTE0MQd1bmlFMTQyB3VuaUUxNDMHdW5pRTE0NAd1bmlFMTQ1B3VuaUUxNDYHdW5pRTE0OAd1bmlFMTQ5B3VuaUUxNTAHdW5pRTE1MQd1bmlFMTUyB3VuaUUxNTMHdW5pRTE1NAd1bmlFMTU1B3VuaUUxNTYHdW5pRTE1Nwd1bmlFMTU4B3VuaUUxNTkHdW5pRTE2MAd1bmlFMTYxB3VuaUUxNjIHdW5pRTE2Mwd1bmlFMTY0B3VuaUUxNjUHdW5pRTE2Ngd1bmlFMTY3B3VuaUUxNjgHdW5pRTE2OQd1bmlFMTcwB3VuaUUxNzEHdW5pRTE3Mgd1bmlFMTczB3VuaUUxNzQHdW5pRTE3NQd1bmlFMTc2B3VuaUUxNzcHdW5pRTE3OAd1bmlFMTc5B3VuaUUxODAHdW5pRTE4MQd1bmlFMTgyB3VuaUUxODMHdW5pRTE4NAd1bmlFMTg1B3VuaUUxODYHdW5pRTE4Nwd1bmlFMTg4B3VuaUUxODkHdW5pRTE5MAd1bmlFMTkxB3VuaUUxOTIHdW5pRTE5Mwd1bmlFMTk0B3VuaUUxOTUHdW5pRTE5Nwd1bmlFMTk4B3VuaUUxOTkHdW5pRTIwMAd1bmlFMjAxB3VuaUUyMDIHdW5pRTIwMwd1bmlFMjA0B3VuaUUyMDUHdW5pRTIwNgd1bmlFMjA5B3VuaUUyMTAHdW5pRTIxMQd1bmlFMjEyB3VuaUUyMTMHdW5pRTIxNAd1bmlFMjE1B3VuaUUyMTYHdW5pRTIxOAd1bmlFMjE5B3VuaUUyMjEHdW5pRTIyMwd1bmlFMjI0B3VuaUUyMjUHdW5pRTIyNgd1bmlFMjI3B3VuaUUyMzAHdW5pRTIzMQd1bmlFMjMyB3VuaUUyMzMHdW5pRTIzNAd1bmlFMjM1B3VuaUUyMzYHdW5pRTIzNwd1bmlFMjM4B3VuaUUyMzkHdW5pRTI0MAd1bmlFMjQxB3VuaUUyNDIHdW5pRTI0Mwd1bmlFMjQ0B3VuaUUyNDUHdW5pRTI0Ngd1bmlFMjQ3B3VuaUUyNDgHdW5pRTI0OQd1bmlFMjUwB3VuaUUyNTEHdW5pRTI1Mgd1bmlFMjUzB3VuaUUyNTQHdW5pRTI1NQd1bmlFMjU2B3VuaUUyNTcHdW5pRTI1OAd1bmlFMjU5B3VuaUUyNjAHdW5pRjhGRgZ1MUY1MTEGdTFGNkFBAAAAAAFUUMMXAAA%3D%29%20format%28%27truetype%27%29%2Curl%28data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI%2FPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE%2BPC9tZXRhZGF0YT4KPGRlZnM%2BCjxmb250IGlkPSJnbHlwaGljb25zX2hhbGZsaW5nc3JlZ3VsYXIiIGhvcml6LWFkdi14PSIxMjAwIiA%2BCjxmb250LWZhY2UgdW5pdHMtcGVyLWVtPSIxMjAwIiBhc2NlbnQ9Ijk2MCIgZGVzY2VudD0iLTI0MCIgLz4KPG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjUwMCIgLz4KPGdseXBoIGhvcml6LWFkdi14PSIwIiAvPgo8Z2x5cGggaG9yaXotYWR2LXg9IjQwMCIgLz4KPGdseXBoIHVuaWNvZGU9IiAiIC8%2BCjxnbHlwaCB1bmljb2RlPSIqIiBkPSJNNjAwIDExMDBxMTUgMCAzNCAtMS41dDMwIC0zLjVsMTEgLTFxMTAgLTIgMTcuNSAtMTAuNXQ3LjUgLTE4LjV2LTIyNGwxNTggMTU4cTcgNyAxOCA4dDE5IC02bDEwNiAtMTA2cTcgLTggNiAtMTl0LTggLTE4bC0xNTggLTE1OGgyMjRxMTAgMCAxOC41IC03LjV0MTAuNSAtMTcuNXE2IC00MSA2IC03NXEwIC0xNSAtMS41IC0zNHQtMy41IC0zMGwtMSAtMTFxLTIgLTEwIC0xMC41IC0xNy41dC0xOC41IC03LjVoLTIyNGwxNTggLTE1OCBxNyAtNyA4IC0xOHQtNiAtMTlsLTEwNiAtMTA2cS04IC03IC0xOSAtNnQtMTggOGwtMTU4IDE1OHYtMjI0cTAgLTEwIC03LjUgLTE4LjV0LTE3LjUgLTEwLjVxLTQxIC02IC03NSAtNnEtMTUgMCAtMzQgMS41dC0zMCAzLjVsLTExIDFxLTEwIDIgLTE3LjUgMTAuNXQtNy41IDE4LjV2MjI0bC0xNTggLTE1OHEtNyAtNyAtMTggLTh0LTE5IDZsLTEwNiAxMDZxLTcgOCAtNiAxOXQ4IDE4bDE1OCAxNThoLTIyNHEtMTAgMCAtMTguNSA3LjUgdC0xMC41IDE3LjVxLTYgNDEgLTYgNzVxMCAxNSAxLjUgMzR0My41IDMwbDEgMTFxMiAxMCAxMC41IDE3LjV0MTguNSA3LjVoMjI0bC0xNTggMTU4cS03IDcgLTggMTh0NiAxOWwxMDYgMTA2cTggNyAxOSA2dDE4IC04bDE1OCAtMTU4djIyNHEwIDEwIDcuNSAxOC41dDE3LjUgMTAuNXE0MSA2IDc1IDZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iKyIgZD0iTTQ1MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMzUwaDM1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0zNTB2LTM1MHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYzNTBoLTM1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNSBoMzUwdjM1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4YTA7IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4YTU7IiBkPSJNODI1IDExMDBoMjUwcTEwIDAgMTIuNSAtNXQtNS41IC0xM2wtMzY0IC0zNjRxLTYgLTYgLTExIC0xOGgyNjhxMTAgMCAxMyAtNnQtMyAtMTRsLTEyMCAtMTYwcS02IC04IC0xOCAtMTR0LTIyIC02aC0xMjV2LTEwMGgyNzVxMTAgMCAxMyAtNnQtMyAtMTRsLTEyMCAtMTYwcS02IC04IC0xOCAtMTR0LTIyIC02aC0xMjV2LTE3NHEwIC0xMSAtNy41IC0xOC41dC0xOC41IC03LjVoLTE0OHEtMTEgMCAtMTguNSA3LjV0LTcuNSAxOC41djE3NCBoLTI3NXEtMTAgMCAtMTMgNnQzIDE0bDEyMCAxNjBxNiA4IDE4IDE0dDIyIDZoMTI1djEwMGgtMjc1cS0xMCAwIC0xMyA2dDMgMTRsMTIwIDE2MHE2IDggMTggMTR0MjIgNmgxMThxLTUgMTIgLTExIDE4bC0zNjQgMzY0cS04IDggLTUuNSAxM3QxMi41IDVoMjUwcTI1IDAgNDMgLTE4bDE2NCAtMTY0cTggLTggMTggLTh0MTggOGwxNjQgMTY0cTE4IDE4IDQzIDE4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDA7IiBob3Jpei1hZHYteD0iNjUwIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMTsiIGhvcml6LWFkdi14PSIxMzAwIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMjsiIGhvcml6LWFkdi14PSI2NTAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDAzOyIgaG9yaXotYWR2LXg9IjEzMDAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDA0OyIgaG9yaXotYWR2LXg9IjQzMyIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDU7IiBob3Jpei1hZHYteD0iMzI1IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwNjsiIGhvcml6LWFkdi14PSIyMTYiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDA3OyIgaG9yaXotYWR2LXg9IjIxNiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDg7IiBob3Jpei1hZHYteD0iMTYyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwOTsiIGhvcml6LWFkdi14PSIyNjAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDBhOyIgaG9yaXotYWR2LXg9IjcyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAyZjsiIGhvcml6LWFkdi14PSIyNjAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDVmOyIgaG9yaXotYWR2LXg9IjMyNSIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwYWM7IiBkPSJNNzQ0IDExOThxMjQyIDAgMzU0IC0xODlxNjAgLTEwNCA2NiAtMjA5aC0xODFxMCA0NSAtMTcuNSA4Mi41dC00My41IDYxLjV0LTU4IDQwLjV0LTYwLjUgMjR0LTUxLjUgNy41cS0xOSAwIC00MC41IC01LjV0LTQ5LjUgLTIwLjV0LTUzIC0zOHQtNDkgLTYyLjV0LTM5IC04OS41aDM3OWwtMTAwIC0xMDBoLTMwMHEtNiAtNTAgLTYgLTEwMGg0MDZsLTEwMCAtMTAwaC0zMDBxOSAtNzQgMzMgLTEzMnQ1Mi41IC05MXQ2MS41IC01NC41dDU5IC0yOSB0NDcgLTcuNXEyMiAwIDUwLjUgNy41dDYwLjUgMjQuNXQ1OCA0MXQ0My41IDYxdDE3LjUgODBoMTc0cS0zMCAtMTcxIC0xMjggLTI3OHEtMTA3IC0xMTcgLTI3NCAtMTE3cS0yMDYgMCAtMzI0IDE1OHEtMzYgNDggLTY5IDEzM3QtNDUgMjA0aC0yMTdsMTAwIDEwMGgxMTJxMSA0NyA2IDEwMGgtMjE4bDEwMCAxMDBoMTM0cTIwIDg3IDUxIDE1My41dDYyIDEwMy41cTExNyAxNDEgMjk3IDE0MXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMGJkOyIgZD0iTTQyOCAxMjAwaDM1MHE2NyAwIDEyMCAtMTN0ODYgLTMxdDU3IC00OS41dDM1IC01Ni41dDE3IC02NC41dDYuNSAtNjAuNXQwLjUgLTU3di0xNi41di0xNi41cTAgLTM2IC0wLjUgLTU3dC02LjUgLTYxdC0xNyAtNjV0LTM1IC01N3QtNTcgLTUwLjV0LTg2IC0zMS41dC0xMjAgLTEzaC0xNzhsLTIgLTEwMGgyODhxMTAgMCAxMyAtNnQtMyAtMTRsLTEyMCAtMTYwcS02IC04IC0xOCAtMTR0LTIyIC02aC0xMzh2LTE3NXEwIC0xMSAtNS41IC0xOCB0LTE1LjUgLTdoLTE0OXEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE3NWgtMjY3cS0xMCAwIC0xMyA2dDMgMTRsMTIwIDE2MHE2IDggMTggMTR0MjIgNmgxMTd2MTAwaC0yNjdxLTEwIDAgLTEzIDZ0MyAxNGwxMjAgMTYwcTYgOCAxOCAxNHQyMiA2aDExN3Y0NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNjAwIDEwMDB2LTMwMGgyMDNxNjQgMCA4Ni41IDMzdDIyLjUgMTE5cTAgODQgLTIyLjUgMTE2dC04Ni41IDMyaC0yMDN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjIxMjsiIGQ9Ik0yNTAgNzAwaDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjMxYjsiIGQ9Ik0xMDAwIDEyMDB2LTE1MHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTEwMHEwIC05MSAtNDkuNSAtMTY1LjV0LTEzMC41IC0xMDkuNXE4MSAtMzUgMTMwLjUgLTEwOS41dDQ5LjUgLTE2NS41di0xNTBoNTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTE1MGgtODAwdjE1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNTB2MTUwcTAgOTEgNDkuNSAxNjUuNXQxMzAuNSAxMDkuNXEtODEgMzUgLTEzMC41IDEwOS41IHQtNDkuNSAxNjUuNXYxMDBoLTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxNTBoODAwek00MDAgMTAwMHYtMTAwcTAgLTYwIDMyLjUgLTEwOS41dDg3LjUgLTczLjVxMjggLTEyIDQ0IC0zN3QxNiAtNTV0LTE2IC01NXQtNDQgLTM3cS01NSAtMjQgLTg3LjUgLTczLjV0LTMyLjUgLTEwOS41di0xNTBoNDAwdjE1MHEwIDYwIC0zMi41IDEwOS41dC04Ny41IDczLjVxLTI4IDEyIC00NCAzN3QtMTYgNTV0MTYgNTV0NDQgMzcgcTU1IDI0IDg3LjUgNzMuNXQzMi41IDEwOS41djEwMGgtNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDI1ZmM7IiBob3Jpei1hZHYteD0iNTAwIiBkPSJNMCAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDI2MDE7IiBkPSJNNTAzIDEwODlxMTEwIDAgMjAwLjUgLTU5LjV0MTM0LjUgLTE1Ni41cTQ0IDE0IDkwIDE0cTEyMCAwIDIwNSAtODYuNXQ4NSAtMjA2LjVxMCAtMTIxIC04NSAtMjA3LjV0LTIwNSAtODYuNWgtNzUwcS03OSAwIC0xMzUuNSA1N3QtNTYuNSAxMzdxMCA2OSA0Mi41IDEyMi41dDEwOC41IDY3LjVxLTIgMTIgLTIgMzdxMCAxNTMgMTA4IDI2MC41dDI2MCAxMDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyNmZhOyIgZD0iTTc3NCAxMTkzLjVxMTYgLTkuNSAyMC41IC0yN3QtNS41IC0zMy41bC0xMzYgLTE4N2w0NjcgLTc0NmgzMHEyMCAwIDM1IC0xOC41dDE1IC0zOS41di00MmgtMTIwMHY0MnEwIDIxIDE1IDM5LjV0MzUgMTguNWgzMGw0NjggNzQ2bC0xMzUgMTgzcS0xMCAxNiAtNS41IDM0dDIwLjUgMjh0MzQgNS41dDI4IC0yMC41bDExMSAtMTQ4bDExMiAxNTBxOSAxNiAyNyAyMC41dDM0IC01ek02MDAgMjAwaDM3N2wtMTgyIDExMmwtMTk1IDUzNHYtNjQ2eiAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyNzA5OyIgZD0iTTI1IDExMDBoMTE1MHExMCAwIDEyLjUgLTV0LTUuNSAtMTNsLTU2NCAtNTY3cS04IC04IC0xOCAtOHQtMTggOGwtNTY0IDU2N3EtOCA4IC01LjUgMTN0MTIuNSA1ek0xOCA4ODJsMjY0IC0yNjRxOCAtOCA4IC0xOHQtOCAtMThsLTI2NCAtMjY0cS04IC04IC0xMyAtNS41dC01IDEyLjV2NTUwcTAgMTAgNSAxMi41dDEzIC01LjV6TTkxOCA2MThsMjY0IDI2NHE4IDggMTMgNS41dDUgLTEyLjV2LTU1MHEwIC0xMCAtNSAtMTIuNXQtMTMgNS41IGwtMjY0IDI2NHEtOCA4IC04IDE4dDggMTh6TTgxOCA0ODJsMzY0IC0zNjRxOCAtOCA1LjUgLTEzdC0xMi41IC01aC0xMTUwcS0xMCAwIC0xMi41IDV0NS41IDEzbDM2NCAzNjRxOCA4IDE4IDh0MTggLThsMTY0IC0xNjRxOCAtOCAxOCAtOHQxOCA4bDE2NCAxNjRxOCA4IDE4IDh0MTggLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjcwZjsiIGQ9Ik0xMDExIDEyMTBxMTkgMCAzMyAtMTNsMTUzIC0xNTNxMTMgLTE0IDEzIC0zM3QtMTMgLTMzbC05OSAtOTJsLTIxNCAyMTRsOTUgOTZxMTMgMTQgMzIgMTR6TTEwMTMgODAwbC02MTUgLTYxNGwtMjE0IDIxNGw2MTQgNjE0ek0zMTcgOTZsLTMzMyAtMTEybDExMCAzMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwMTsiIGQ9Ik03MDAgNjUwdi01NTBoMjUwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtODAwdjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgyNTB2NTUwbC01MDAgNTUwaDEyMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwMjsiIGQ9Ik0zNjggMTAxN2w2NDUgMTYzcTM5IDE1IDYzIDB0MjQgLTQ5di04MzFxMCAtNTUgLTQxLjUgLTk1LjV0LTExMS41IC02My41cS03OSAtMjUgLTE0NyAtNC41dC04NiA3NXQyNS41IDExMS41dDEyMi41IDgycTcyIDI0IDEzOCA4djUyMWwtNjAwIC0xNTV2LTYwNnEwIC00MiAtNDQgLTkwdC0xMDkgLTY5cS03OSAtMjYgLTE0NyAtNS41dC04NiA3NS41dDI1LjUgMTExLjV0MTIyLjUgODIuNXE3MiAyNCAxMzggN3Y2MzlxMCAzOCAxNC41IDU5IHQ1My41IDM0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDM7IiBkPSJNNTAwIDExOTFxMTAwIDAgMTkxIC0zOXQxNTYuNSAtMTA0LjV0MTA0LjUgLTE1Ni41dDM5IC0xOTFsLTEgLTJsMSAtNXEwIC0xNDEgLTc4IC0yNjJsMjc1IC0yNzRxMjMgLTI2IDIyLjUgLTQ0LjV0LTIyLjUgLTQyLjVsLTU5IC01OHEtMjYgLTIwIC00Ni41IC0yMHQtMzkuNSAyMGwtMjc1IDI3NHEtMTE5IC03NyAtMjYxIC03N2wtNSAxbC0yIC0xcS0xMDAgMCAtMTkxIDM5dC0xNTYuNSAxMDQuNXQtMTA0LjUgMTU2LjV0LTM5IDE5MSB0MzkgMTkxdDEwNC41IDE1Ni41dDE1Ni41IDEwNC41dDE5MSAzOXpNNTAwIDEwMjJxLTg4IDAgLTE2MiAtNDN0LTExNyAtMTE3dC00MyAtMTYydDQzIC0xNjJ0MTE3IC0xMTd0MTYyIC00M3QxNjIgNDN0MTE3IDExN3Q0MyAxNjJ0LTQzIDE2MnQtMTE3IDExN3QtMTYyIDQzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDU7IiBkPSJNNjQ5IDk0OXE0OCA2OCAxMDkuNSAxMDR0MTIxLjUgMzguNXQxMTguNSAtMjB0MTAyLjUgLTY0dDcxIC0xMDAuNXQyNyAtMTIzcTAgLTU3IC0zMy41IC0xMTcuNXQtOTQgLTEyNC41dC0xMjYuNSAtMTI3LjV0LTE1MCAtMTUyLjV0LTE0NiAtMTc0cS02MiA4NSAtMTQ1LjUgMTc0dC0xNTAgMTUyLjV0LTEyNi41IDEyNy41dC05My41IDEyNC41dC0zMy41IDExNy41cTAgNjQgMjggMTIzdDczIDEwMC41dDEwNCA2NHQxMTkgMjAgdDEyMC41IC0zOC41dDEwNC41IC0xMDR6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwNjsiIGQ9Ik00MDcgODAwbDEzMSAzNTNxNyAxOSAxNy41IDE5dDE3LjUgLTE5bDEyOSAtMzUzaDQyMXEyMSAwIDI0IC04LjV0LTE0IC0yMC41bC0zNDIgLTI0OWwxMzAgLTQwMXE3IC0yMCAtMC41IC0yNS41dC0yNC41IDYuNWwtMzQzIDI0NmwtMzQyIC0yNDdxLTE3IC0xMiAtMjQuNSAtNi41dC0wLjUgMjUuNWwxMzAgNDAwbC0zNDcgMjUxcS0xNyAxMiAtMTQgMjAuNXQyMyA4LjVoNDI5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDc7IiBkPSJNNDA3IDgwMGwxMzEgMzUzcTcgMTkgMTcuNSAxOXQxNy41IC0xOWwxMjkgLTM1M2g0MjFxMjEgMCAyNCAtOC41dC0xNCAtMjAuNWwtMzQyIC0yNDlsMTMwIC00MDFxNyAtMjAgLTAuNSAtMjUuNXQtMjQuNSA2LjVsLTM0MyAyNDZsLTM0MiAtMjQ3cS0xNyAtMTIgLTI0LjUgLTYuNXQtMC41IDI1LjVsMTMwIDQwMGwtMzQ3IDI1MXEtMTcgMTIgLTE0IDIwLjV0MjMgOC41aDQyOXpNNDc3IDcwMGgtMjQwbDE5NyAtMTQybC03NCAtMjI2IGwxOTMgMTM5bDE5NSAtMTQwbC03NCAyMjlsMTkyIDE0MGgtMjM0bC03OCAyMTF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwODsiIGQ9Ik02MDAgMTIwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTI1MHEwIC00NiAtMzEgLTk4dC02OSAtNTJ2LTc1cTAgLTEwIDYgLTIxLjV0MTUgLTE3LjVsMzU4IC0yMzBxOSAtNSAxNSAtMTYuNXQ2IC0yMS41di05M3EwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTExNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY5M3EwIDEwIDYgMjEuNXQxNSAxNi41bDM1OCAyMzBxOSA2IDE1IDE3LjV0NiAyMS41djc1cS0zOCAwIC02OSA1MiB0LTMxIDk4djI1MHEwIDEyNCA4OCAyMTJ0MjEyIDg4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDk7IiBkPSJNMjUgMTEwMGgxMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTA1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTExNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxMDUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTEwMCAxMDAwdi0xMDBoMTAwdjEwMGgtMTAwek04NzUgMTAwMGgtNTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMzUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoNTUwIHExMCAwIDE3LjUgNy41dDcuNSAxNy41djM1MHEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6TTEwMDAgMTAwMHYtMTAwaDEwMHYxMDBoLTEwMHpNMTAwIDgwMHYtMTAwaDEwMHYxMDBoLTEwMHpNMTAwMCA4MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMDAgNjAwdi0xMDBoMTAwdjEwMGgtMTAwek04NzUgNTAwaC01NTBxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di0zNTBxMCAtMTAgNy41IC0xNy41IHQxNy41IC03LjVoNTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2MzUwcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXpNMTAwIDQwMHYtMTAwaDEwMHYxMDBoLTEwMHpNMTAwMCA0MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMCAyMDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTA7IiBkPSJNNTAgMTEwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek02NTAgMTEwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDAgcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgNTAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTY1MCA1MDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMTsiIGQ9Ik01MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04NTAgMTEwMGgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA3MDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCA3MDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNODUwIDcwMGgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMzAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAzMDBoMjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTg1MCAzMDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41IHQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMjsiIGQ9Ik01MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAxMTAwaDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC03MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA3MDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNDUwIDcwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMzAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAzMDBoNzAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC03MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMzsiIGQ9Ik00NjUgNDc3bDU3MSA1NzFxOCA4IDE4IDh0MTcgLThsMTc3IC0xNzdxOCAtNyA4IC0xN3QtOCAtMThsLTc4MyAtNzg0cS03IC04IC0xNy41IC04dC0xNy41IDhsLTM4NCAzODRxLTggOCAtOCAxOHQ4IDE3bDE3NyAxNzdxNyA4IDE3IDh0MTggLThsMTcxIC0xNzFxNyAtNyAxOCAtN3QxOCA3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTQ7IiBkPSJNOTA0IDEwODNsMTc4IC0xNzlxOCAtOCA4IC0xOC41dC04IC0xNy41bC0yNjcgLTI2OGwyNjcgLTI2OHE4IC03IDggLTE3LjV0LTggLTE4LjVsLTE3OCAtMTc4cS04IC04IC0xOC41IC04dC0xNy41IDhsLTI2OCAyNjdsLTI2OCAtMjY3cS03IC04IC0xNy41IC04dC0xOC41IDhsLTE3OCAxNzhxLTggOCAtOCAxOC41dDggMTcuNWwyNjcgMjY4bC0yNjcgMjY4cS04IDcgLTggMTcuNXQ4IDE4LjVsMTc4IDE3OHE4IDggMTguNSA4dDE3LjUgLTggbDI2OCAtMjY3bDI2OCAyNjhxNyA3IDE3LjUgN3QxOC41IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTU7IiBkPSJNNTA3IDExNzdxOTggMCAxODcuNSAtMzguNXQxNTQuNSAtMTAzLjV0MTAzLjUgLTE1NC41dDM4LjUgLTE4Ny41cTAgLTE0MSAtNzggLTI2MmwzMDAgLTI5OXE4IC04IDggLTE4LjV0LTggLTE4LjVsLTEwOSAtMTA4cS03IC04IC0xNy41IC04dC0xOC41IDhsLTMwMCAyOTlxLTExOSAtNzcgLTI2MSAtNzdxLTk4IDAgLTE4OCAzOC41dC0xNTQuNSAxMDN0LTEwMyAxNTQuNXQtMzguNSAxODh0MzguNSAxODcuNXQxMDMgMTU0LjUgdDE1NC41IDEwMy41dDE4OCAzOC41ek01MDYuNSAxMDIzcS04OS41IDAgLTE2NS41IC00NHQtMTIwIC0xMjAuNXQtNDQgLTE2NnQ0NCAtMTY1LjV0MTIwIC0xMjB0MTY1LjUgLTQ0dDE2NiA0NHQxMjAuNSAxMjB0NDQgMTY1LjV0LTQ0IDE2NnQtMTIwLjUgMTIwLjV0LTE2NiA0NHpNNDI1IDkwMGgxNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di03NWg3NXExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41IHQtMTcuNSAtNy41aC03NXYtNzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY3NWgtNzVxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWg3NXY3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTY7IiBkPSJNNTA3IDExNzdxOTggMCAxODcuNSAtMzguNXQxNTQuNSAtMTAzLjV0MTAzLjUgLTE1NC41dDM4LjUgLTE4Ny41cTAgLTE0MSAtNzggLTI2MmwzMDAgLTI5OXE4IC04IDggLTE4LjV0LTggLTE4LjVsLTEwOSAtMTA4cS03IC04IC0xNy41IC04dC0xOC41IDhsLTMwMCAyOTlxLTExOSAtNzcgLTI2MSAtNzdxLTk4IDAgLTE4OCAzOC41dC0xNTQuNSAxMDN0LTEwMyAxNTQuNXQtMzguNSAxODh0MzguNSAxODcuNXQxMDMgMTU0LjUgdDE1NC41IDEwMy41dDE4OCAzOC41ek01MDYuNSAxMDIzcS04OS41IDAgLTE2NS41IC00NHQtMTIwIC0xMjAuNXQtNDQgLTE2NnQ0NCAtMTY1LjV0MTIwIC0xMjB0MTY1LjUgLTQ0dDE2NiA0NHQxMjAuNSAxMjB0NDQgMTY1LjV0LTQ0IDE2NnQtMTIwLjUgMTIwLjV0LTE2NiA0NHpNMzI1IDgwMGgzNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0zNTBxLTEwIDAgLTE3LjUgNy41IHQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxNzsiIGQ9Ik01NTAgMTIwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04MDAgOTc1djE2NnExNjcgLTYyIDI3MiAtMjA5LjV0MTA1IC0zMzEuNXEwIC0xMTcgLTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNSB0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHEwIDE4NCAxMDUgMzMxLjV0MjcyIDIwOS41di0xNjZxLTEwMyAtNTUgLTE2NSAtMTU1dC02MiAtMjIwcTAgLTExNiA1NyAtMjE0LjV0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXEwIDEyMCAtNjIgMjIwdC0xNjUgMTU1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTg7IiBkPSJNMTAyNSAxMjAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTExNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxMTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTcyNSA4MDBoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNzUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NzUwIHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek00MjUgNTAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTQ1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djQ1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek0xMjUgMzAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTI1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41IHYyNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDE5OyIgZD0iTTYwMCAxMTc0cTMzIDAgNzQgLTVsMzggLTE1Mmw1IC0xcTQ5IC0xNCA5NCAtMzlsNSAtMmwxMzQgODBxNjEgLTQ4IDEwNCAtMTA1bC04MCAtMTM0bDMgLTVxMjUgLTQ0IDM5IC05M2wxIC02bDE1MiAtMzhxNSAtNDMgNSAtNzNxMCAtMzQgLTUgLTc0bC0xNTIgLTM4bC0xIC02cS0xNSAtNDkgLTM5IC05M2wtMyAtNWw4MCAtMTM0cS00OCAtNjEgLTEwNCAtMTA1bC0xMzQgODFsLTUgLTNxLTQ0IC0yNSAtOTQgLTM5bC01IC0ybC0zOCAtMTUxIHEtNDMgLTUgLTc0IC01cS0zMyAwIC03NCA1bC0zOCAxNTFsLTUgMnEtNDkgMTQgLTk0IDM5bC01IDNsLTEzNCAtODFxLTYwIDQ4IC0xMDQgMTA1bDgwIDEzNGwtMyA1cS0yNSA0NSAtMzggOTNsLTIgNmwtMTUxIDM4cS02IDQyIC02IDc0cTAgMzMgNiA3M2wxNTEgMzhsMiA2cTEzIDQ4IDM4IDkzbDMgNWwtODAgMTM0cTQ3IDYxIDEwNSAxMDVsMTMzIC04MGw1IDJxNDUgMjUgOTQgMzlsNSAxbDM4IDE1MnE0MyA1IDc0IDV6TTYwMCA4MTUgcS04OSAwIC0xNTIgLTYzdC02MyAtMTUxLjV0NjMgLTE1MS41dDE1MiAtNjN0MTUyIDYzdDYzIDE1MS41dC02MyAxNTEuNXQtMTUyIDYzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjA7IiBkPSJNNTAwIDEzMDBoMzAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di0xMDBoMjc1cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNzVoLTExMDB2NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNzV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNNTAwIDEyMDB2LTEwMGgzMDB2MTAwaC0zMDB6TTExMDAgOTAwdi04MDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTcwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjUgdjgwMGg5MDB6TTMwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6TTUwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6TTcwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6TTkwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyMTsiIGQ9Ik0xOCA2MThsNjIwIDYwOHE4IDcgMTguNSA3dDE3LjUgLTdsNjA4IC02MDhxOCAtOCA1LjUgLTEzdC0xMi41IC01aC0xNzV2LTU3NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djM3NWgtMzAwdi0zNzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1NzVoLTE3NXEtMTAgMCAtMTIuNSA1dDUuNSAxM3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDIyOyIgZD0iTTYwMCAxMjAwdi00MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDMwMHYtNjUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djExMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQ1MHpNMTAwMCA4MDBoLTI1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjM7IiBkPSJNNjAwIDExNzdxMTE3IDAgMjI0IC00NS41dDE4NC41IC0xMjN0MTIzIC0xODQuNXQ0NS41IC0yMjR0LTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNXQtMTg0LjUgMTIzdC0xMjMgMTg0LjV0LTQ1LjUgMjI0dDQ1LjUgMjI0dDEyMyAxODQuNXQxODQuNSAxMjN0MjI0IDQ1LjV6TTYwMCAxMDI3cS0xMTYgMCAtMjE0LjUgLTU3dC0xNTUuNSAtMTU1LjV0LTU3IC0yMTQuNXQ1NyAtMjE0LjUgdDE1NS41IC0xNTUuNXQyMTQuNSAtNTd0MjE0LjUgNTd0MTU1LjUgMTU1LjV0NTcgMjE0LjV0LTU3IDIxNC41dC0xNTUuNSAxNTUuNXQtMjE0LjUgNTd6TTUyNSA5MDBoNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0yNzVoMTc1cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI0OyIgZD0iTTEzMDAgMGgtNTM4bC00MSA0MDBoLTI0MmwtNDEgLTQwMGgtNTM4bDQzMSAxMjAwaDIwOWwtMjEgLTMwMGgxNjJsLTIwIDMwMGgyMDh6TTUxNSA4MDBsLTI3IC0zMDBoMjI0bC0yNyAzMDBoLTE3MHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI1OyIgZD0iTTU1MCAxMjAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDUwaDE5MXEyMCAwIDI1LjUgLTExLjV0LTcuNSAtMjcuNWwtMzI3IC00MDBxLTEzIC0xNiAtMzIgLTE2dC0zMiAxNmwtMzI3IDQwMHEtMTMgMTYgLTcuNSAyNy41dDI1LjUgMTEuNWgxOTF2NDUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMTEyNSA0MDBoNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0zNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41IGgtMTA1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djM1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTc1aDkwMHYxNzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI2OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjV0NTcgLTIxNC41IHQxNTUuNSAtMTU1LjV0MjE0LjUgLTU3dDIxNC41IDU3dDE1NS41IDE1NS41dDU3IDIxNC41dC01NyAyMTQuNXQtMTU1LjUgMTU1LjV0LTIxNC41IDU3ek01MjUgOTAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTI3NWgxMzdxMjEgMCAyNiAtMTEuNXQtOCAtMjcuNWwtMjIzIC0yNzVxLTEzIC0xNiAtMzIgLTE2dC0zMiAxNmwtMjIzIDI3NXEtMTMgMTYgLTggMjcuNXQyNiAxMS41aDEzN3YyNzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyNzsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNNjAwIDEwMjdxLTExNiAwIC0yMTQuNSAtNTd0LTE1NS41IC0xNTUuNXQtNTcgLTIxNC41dDU3IC0yMTQuNSB0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXQtNTcgMjE0LjV0LTE1NS41IDE1NS41dC0yMTQuNSA1N3pNNjMyIDkxNGwyMjMgLTI3NXExMyAtMTYgOCAtMjcuNXQtMjYgLTExLjVoLTEzN3YtMjc1cTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2Mjc1aC0xMzdxLTIxIDAgLTI2IDExLjV0OCAyNy41bDIyMyAyNzVxMTMgMTYgMzIgMTYgdDMyIC0xNnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI4OyIgZD0iTTIyNSAxMjAwaDc1MHExMCAwIDE5LjUgLTd0MTIuNSAtMTdsMTg2IC02NTJxNyAtMjQgNyAtNDl2LTQyNXEwIC0xMiAtNCAtMjd0LTkgLTE3cS0xMiAtNiAtMzcgLTZoLTExMDBxLTEyIDAgLTI3IDR0LTE3IDhxLTYgMTMgLTYgMzhsMSA0MjVxMCAyNSA3IDQ5bDE4NSA2NTJxMyAxMCAxMi41IDE3dDE5LjUgN3pNODc4IDEwMDBoLTU1NnEtMTAgMCAtMTkgLTd0LTExIC0xOGwtODcgLTQ1MHEtMiAtMTEgNCAtMTh0MTYgLTdoMTUwIHExMCAwIDE5LjUgLTd0MTEuNSAtMTdsMzggLTE1MnEyIC0xMCAxMS41IC0xN3QxOS41IC03aDI1MHExMCAwIDE5LjUgN3QxMS41IDE3bDM4IDE1MnEyIDEwIDExLjUgMTd0MTkuNSA3aDE1MHExMCAwIDE2IDd0NCAxOGwtODcgNDUwcS0yIDExIC0xMSAxOHQtMTkgN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI5OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjV0NTcgLTIxNC41IHQxNTUuNSAtMTU1LjV0MjE0LjUgLTU3dDIxNC41IDU3dDE1NS41IDE1NS41dDU3IDIxNC41dC01NyAyMTQuNXQtMTU1LjUgMTU1LjV0LTIxNC41IDU3ek01NDAgODIwbDI1MyAtMTkwcTE3IC0xMiAxNyAtMzB0LTE3IC0zMGwtMjUzIC0xOTBxLTE2IC0xMiAtMjggLTYuNXQtMTIgMjYuNXY0MDBxMCAyMSAxMiAyNi41dDI4IC02LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzMDsiIGQ9Ik05NDcgMTA2MGwxMzUgMTM1cTcgNyAxMi41IDV0NS41IC0xM3YtMzYycTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMzYycS0xMSAwIC0xMyA1LjV0NSAxMi41bDEzMyAxMzNxLTEwOSA3NiAtMjM4IDc2cS0xMTYgMCAtMjE0LjUgLTU3dC0xNTUuNSAtMTU1LjV0LTU3IC0yMTQuNXQ1NyAtMjE0LjV0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNWgxNTBxMCAtMTE3IC00NS41IC0yMjQgdC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXExOTIgMCAzNDcgLTExN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDMxOyIgZD0iTTk0NyAxMDYwbDEzNSAxMzVxNyA3IDEyLjUgNXQ1LjUgLTEzdi0zNjFxMCAtMTEgLTcuNSAtMTguNXQtMTguNSAtNy41aC0zNjFxLTExIDAgLTEzIDUuNXQ1IDEyLjVsMTM0IDEzNHEtMTEwIDc1IC0yMzkgNzVxLTExNiAwIC0yMTQuNSAtNTd0LTE1NS41IC0xNTUuNXQtNTcgLTIxNC41aC0xNTBxMCAxMTcgNDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXExOTIgMCAzNDcgLTExN3pNMTAyNyA2MDBoMTUwIHEwIC0xMTcgLTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41cS0xOTIgMCAtMzQ4IDExOGwtMTM0IC0xMzRxLTcgLTggLTEyLjUgLTUuNXQtNS41IDEyLjV2MzYwcTAgMTEgNy41IDE4LjV0MTguNSA3LjVoMzYwcTEwIDAgMTIuNSAtNS41dC01LjUgLTEyLjVsLTEzMyAtMTMzcTExMCAtNzYgMjQwIC03NnExMTYgMCAyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDMyOyIgZD0iTTEyNSAxMjAwaDEwNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTA1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djExNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNMTA3NSAxMDAwaC04NTBxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di04NTBxMCAtMTAgNy41IC0xNy41dDE3LjUgLTcuNWg4NTBxMTAgMCAxNy41IDcuNXQ3LjUgMTcuNXY4NTAgcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXpNMzI1IDkwMGg1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek01MjUgOTAwaDQ1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNDUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NTAgcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTMyNSA3MDBoNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNTI1IDcwMGg0NTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTQ1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djUwIHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek0zMjUgNTAwaDUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC01MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTUyNSA1MDBoNDUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC00NTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MCBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNMzI1IDMwMGg1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek01MjUgMzAwaDQ1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNDUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NTAgcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzMzsiIGQ9Ik05MDAgODAwdjIwMHEwIDgzIC01OC41IDE0MS41dC0xNDEuNSA1OC41aC0zMDBxLTgyIDAgLTE0MSAtNTl0LTU5IC0xNDF2LTIwMGgtMTAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di02MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDkwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NjAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41aC0xMDB6TTQwMCA4MDB2MTUwcTAgMjEgMTUgMzUuNXQzNSAxNC41aDIwMCBxMjAgMCAzNSAtMTQuNXQxNSAtMzUuNXYtMTUwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzNDsiIGQ9Ik0xMjUgMTEwMGg1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTEwNzVoLTEwMHYxMDc1cTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTEwNzUgMTA1MnE0IDAgOSAtMnExNiAtNiAxNiAtMjN2LTQyMXEwIC02IC0zIC0xMnEtMzMgLTU5IC02Ni41IC05OXQtNjUuNSAtNTh0LTU2LjUgLTI0LjV0LTUyLjUgLTYuNXEtMjYgMCAtNTcuNSA2LjV0LTUyLjUgMTMuNXQtNjAgMjFxLTQxIDE1IC02MyAyMi41dC01Ny41IDE1dC02NS41IDcuNSBxLTg1IDAgLTE2MCAtNTdxLTcgLTUgLTE1IC01cS02IDAgLTExIDNxLTE0IDcgLTE0IDIydjQzOHEyMiA1NSA4MiA5OC41dDExOSA0Ni41cTIzIDIgNDMgMC41dDQzIC03dDMyLjUgLTguNXQzOCAtMTN0MzIuNSAtMTFxNDEgLTE0IDYzLjUgLTIxdDU3IC0xNHQ2My41IC03cTEwMyAwIDE4MyA4N3E3IDggMTggOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDM1OyIgZD0iTTYwMCAxMTc1cTExNiAwIDIyNyAtNDkuNXQxOTIuNSAtMTMxdDEzMSAtMTkyLjV0NDkuNSAtMjI3di0zMDBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC01MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djMwMHEwIDEyNyAtNzAuNSAyMzEuNXQtMTg0LjUgMTYxLjV0LTI0NSA1N3QtMjQ1IC01N3QtMTg0LjUgLTE2MS41dC03MC41IC0yMzEuNXYtMzAwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNTAgcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MzAwcTAgMTE2IDQ5LjUgMjI3dDEzMSAxOTIuNXQxOTIuNSAxMzF0MjI3IDQ5LjV6TTIyMCA1MDBoMTYwcTggMCAxNCAtNnQ2IC0xNHYtNDYwcTAgLTggLTYgLTE0dC0xNCAtNmgtMTYwcS04IDAgLTE0IDZ0LTYgMTR2NDYwcTAgOCA2IDE0dDE0IDZ6TTgyMCA1MDBoMTYwcTggMCAxNCAtNnQ2IC0xNHYtNDYwcTAgLTggLTYgLTE0dC0xNCAtNmgtMTYwcS04IDAgLTE0IDZ0LTYgMTR2NDYwIHEwIDggNiAxNHQxNCA2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzY7IiBkPSJNMzIxIDgxNGwyNTggMTcycTkgNiAxNSAyLjV0NiAtMTMuNXYtNzUwcTAgLTEwIC02IC0xMy41dC0xNSAyLjVsLTI1OCAxNzJxLTIxIDE0IC00NiAxNGgtMjUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MzUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMjUwcTI1IDAgNDYgMTR6TTkwMCA2NjhsMTIwIDEyMHE3IDcgMTcgN3QxNyAtN2wzNCAtMzRxNyAtNyA3IC0xN3QtNyAtMTdsLTEyMCAtMTIwbDEyMCAtMTIwcTcgLTcgNyAtMTcgdC03IC0xN2wtMzQgLTM0cS03IC03IC0xNyAtN3QtMTcgN2wtMTIwIDExOWwtMTIwIC0xMTlxLTcgLTcgLTE3IC03dC0xNyA3bC0zNCAzNHEtNyA3IC03IDE3dDcgMTdsMTE5IDEyMGwtMTE5IDEyMHEtNyA3IC03IDE3dDcgMTdsMzQgMzRxNyA4IDE3IDh0MTcgLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzNzsiIGQ9Ik0zMjEgODE0bDI1OCAxNzJxOSA2IDE1IDIuNXQ2IC0xMy41di03NTBxMCAtMTAgLTYgLTEzLjV0LTE1IDIuNWwtMjU4IDE3MnEtMjEgMTQgLTQ2IDE0aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNTBxMjUgMCA0NiAxNHpNNzY2IDkwMGg0cTEwIC0xIDE2IC0xMHE5NiAtMTI5IDk2IC0yOTBxMCAtMTU0IC05MCAtMjgxcS02IC05IC0xNyAtMTBsLTMgLTFxLTkgMCAtMTYgNiBsLTI5IDIzcS03IDcgLTguNSAxNi41dDQuNSAxNy41cTcyIDEwMyA3MiAyMjlxMCAxMzIgLTc4IDIzOHEtNiA4IC00LjUgMTh0OS41IDE3bDI5IDIycTcgNSAxNSA1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzg7IiBkPSJNOTY3IDEwMDRoM3ExMSAtMSAxNyAtMTBxMTM1IC0xNzkgMTM1IC0zOTZxMCAtMTA1IC0zNCAtMjA2LjV0LTk4IC0xODUuNXEtNyAtOSAtMTcgLTEwaC0zcS05IDAgLTE2IDZsLTQyIDM0cS04IDYgLTkgMTZ0NSAxOHExMTEgMTUwIDExMSAzMjhxMCA5MCAtMjkuNSAxNzZ0LTg0LjUgMTU3cS02IDkgLTUgMTl0MTAgMTZsNDIgMzNxNyA1IDE1IDV6TTMyMSA4MTRsMjU4IDE3MnE5IDYgMTUgMi41dDYgLTEzLjV2LTc1MHEwIC0xMCAtNiAtMTMuNSB0LTE1IDIuNWwtMjU4IDE3MnEtMjEgMTQgLTQ2IDE0aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNTBxMjUgMCA0NiAxNHpNNzY2IDkwMGg0cTEwIC0xIDE2IC0xMHE5NiAtMTI5IDk2IC0yOTBxMCAtMTU0IC05MCAtMjgxcS02IC05IC0xNyAtMTBsLTMgLTFxLTkgMCAtMTYgNmwtMjkgMjNxLTcgNyAtOC41IDE2LjV0NC41IDE3LjVxNzIgMTAzIDcyIDIyOXEwIDEzMiAtNzggMjM4IHEtNiA4IC00LjUgMTguNXQ5LjUgMTYuNWwyOSAyMnE3IDUgMTUgNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDM5OyIgZD0iTTUwMCA5MDBoMTAwdi0xMDBoLTEwMHYtMTAwaC00MDB2LTEwMGgtMTAwdjYwMGg1MDB2LTMwMHpNMTIwMCA3MDBoLTIwMHYtMTAwaDIwMHYtMjAwaC0zMDB2MzAwaC0yMDB2MzAwaC0xMDB2MjAwaDYwMHYtNTAwek0xMDAgMTEwMHYtMzAwaDMwMHYzMDBoLTMwMHpNODAwIDExMDB2LTMwMGgzMDB2MzAwaC0zMDB6TTMwMCA5MDBoLTEwMHYxMDBoMTAwdi0xMDB6TTEwMDAgOTAwaC0xMDB2MTAwaDEwMHYtMTAwek0zMDAgNTAwaDIwMHYtNTAwIGgtNTAwdjUwMGgyMDB2MTAwaDEwMHYtMTAwek04MDAgMzAwaDIwMHYtMTAwaC0xMDB2LTEwMGgtMjAwdjEwMGgtMTAwdjEwMGgxMDB2MjAwaC0yMDB2MTAwaDMwMHYtMzAwek0xMDAgNDAwdi0zMDBoMzAwdjMwMGgtMzAwek0zMDAgMjAwaC0xMDB2MTAwaDEwMHYtMTAwek0xMjAwIDIwMGgtMTAwdjEwMGgxMDB2LTEwMHpNNzAwIDBoLTEwMHYxMDBoMTAwdi0xMDB6TTEyMDAgMGgtMzAwdjEwMGgzMDB2LTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQwOyIgZD0iTTEwMCAyMDBoLTEwMHYxMDAwaDEwMHYtMTAwMHpNMzAwIDIwMGgtMTAwdjEwMDBoMTAwdi0xMDAwek03MDAgMjAwaC0yMDB2MTAwMGgyMDB2LTEwMDB6TTkwMCAyMDBoLTEwMHYxMDAwaDEwMHYtMTAwMHpNMTIwMCAyMDBoLTIwMHYxMDAwaDIwMHYtMTAwMHpNNDAwIDBoLTMwMHYxMDBoMzAwdi0xMDB6TTYwMCAwaC0xMDB2OTFoMTAwdi05MXpNODAwIDBoLTEwMHY5MWgxMDB2LTkxek0xMTAwIDBoLTIwMHY5MWgyMDB2LTkxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNDE7IiBkPSJNNTAwIDEyMDBsNjgyIC02ODJxOCAtOCA4IC0xOHQtOCAtMThsLTQ2NCAtNDY0cS04IC04IC0xOCAtOHQtMTggOGwtNjgyIDY4MmwxIDQ3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDQ3NHpNMzE5LjUgMTAyNC41cS0yOS41IDI5LjUgLTcxIDI5LjV0LTcxIC0yOS41dC0yOS41IC03MS41dDI5LjUgLTcxLjV0NzEgLTI5LjV0NzEgMjkuNXQyOS41IDcxLjV0LTI5LjUgNzEuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQyOyIgZD0iTTUwMCAxMjAwbDY4MiAtNjgycTggLTggOCAtMTh0LTggLTE4bC00NjQgLTQ2NHEtOCAtOCAtMTggLTh0LTE4IDhsLTY4MiA2ODJsMSA0NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWg0NzR6TTgwMCAxMjAwbDY4MiAtNjgycTggLTggOCAtMTh0LTggLTE4bC00NjQgLTQ2NHEtOCAtOCAtMTggLTh0LTE4IDhsLTU2IDU2bDQyNCA0MjZsLTcwMCA3MDBoMTUwek0zMTkuNSAxMDI0LjVxLTI5LjUgMjkuNSAtNzEgMjkuNXQtNzEgLTI5LjUgdC0yOS41IC03MS41dDI5LjUgLTcxLjV0NzEgLTI5LjV0NzEgMjkuNXQyOS41IDcxLjV0LTI5LjUgNzEuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQzOyIgZD0iTTMwMCAxMjAwaDgyNXE3NSAwIDc1IC03NXYtOTAwcTAgLTI1IC0xOCAtNDNsLTY0IC02NHEtOCAtOCAtMTMgLTUuNXQtNSAxMi41djk1MHEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjVoLTcwMHEtMjUgMCAtNDMgLTE4bC02NCAtNjRxLTggLTggLTUuNSAtMTN0MTIuNSAtNWg3MDBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di05NTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC04NTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY5NzUgcTAgMjUgMTggNDNsMTM5IDEzOXExOCAxOCA0MyAxOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQ0OyIgZD0iTTI1MCAxMjAwaDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTE1MGwtNDUwIDQ0NGwtNDUwIC00NDV2MTE1MXEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NTsiIGQ9Ik04MjIgMTIwMGgtNDQ0cS0xMSAwIC0xOSAtNy41dC05IC0xNy41bC03OCAtMzAxcS03IC0yNCA3IC00NWw1NyAtMTA4cTYgLTkgMTcuNSAtMTV0MjEuNSAtNmg0NTBxMTAgMCAyMS41IDZ0MTcuNSAxNWw2MiAxMDhxMTQgMjEgNyA0NWwtODMgMzAxcS0xIDEwIC05IDE3LjV0LTE5IDcuNXpNMTE3NSA4MDBoLTE1MHEtMTAgMCAtMjEgLTYuNXQtMTUgLTE1LjVsLTc4IC0xNTZxLTQgLTkgLTE1IC0xNS41dC0yMSAtNi41aC01NTAgcS0xMCAwIC0yMSA2LjV0LTE1IDE1LjVsLTc4IDE1NnEtNCA5IC0xNSAxNS41dC0yMSA2LjVoLTE1MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTY1MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDE1MHExMCAwIDE3LjUgNy41dDcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDc1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDE1MHExMCAwIDE3LjUgNy41IHQ3LjUgMTcuNXY2NTBxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41ek04NTAgMjAwaC01MDBxLTEwIDAgLTE5LjUgLTd0LTExLjUgLTE3bC0zOCAtMTUycS0yIC0xMCAzLjUgLTE3dDE1LjUgLTdoNjAwcTEwIDAgMTUuNSA3dDMuNSAxN2wtMzggMTUycS0yIDEwIC0xMS41IDE3dC0xOS41IDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NjsiIGQ9Ik01MDAgMTEwMGgyMDBxNTYgMCAxMDIuNSAtMjAuNXQ3Mi41IC01MHQ0NCAtNTl0MjUgLTUwLjVsNiAtMjBoMTUwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di02MDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTEwMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djYwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMTUwcTIgOCA2LjUgMjEuNXQyNCA0OHQ0NSA2MXQ3MiA0OHQxMDIuNSAyMS41ek05MDAgODAwdi0xMDAgaDEwMHYxMDBoLTEwMHpNNjAwIDczMHEtOTUgMCAtMTYyLjUgLTY3LjV0LTY3LjUgLTE2Mi41dDY3LjUgLTE2Mi41dDE2Mi41IC02Ny41dDE2Mi41IDY3LjV0NjcuNSAxNjIuNXQtNjcuNSAxNjIuNXQtMTYyLjUgNjcuNXpNNjAwIDYwM3E0MyAwIDczIC0zMHQzMCAtNzN0LTMwIC03M3QtNzMgLTMwdC03MyAzMHQtMzAgNzN0MzAgNzN0NzMgMzB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NzsiIGQ9Ik02ODEgMTE5OWwzODUgLTk5OHEyMCAtNTAgNjAgLTkycTE4IC0xOSAzNi41IC0yOS41dDI3LjUgLTExLjVsMTAgLTJ2LTY2aC00MTd2NjZxNTMgMCA3NSA0My41dDUgODguNWwtODIgMjIyaC0zOTFxLTU4IC0xNDUgLTkyIC0yMzRxLTExIC0zNCAtNi41IC01N3QyNS41IC0zN3Q0NiAtMjB0NTUgLTZ2LTY2aC0zNjV2NjZxNTYgMjQgODQgNTJxMTIgMTIgMjUgMzAuNXQyMCAzMS41bDcgMTNsMzk5IDEwMDZoOTN6TTQxNiA1MjFoMzQwIGwtMTYyIDQ1N3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQ4OyIgZD0iTTc1MyA2NDFxNSAtMSAxNC41IC00LjV0MzYgLTE1LjV0NTAuNSAtMjYuNXQ1My41IC00MHQ1MC41IC01NC41dDM1LjUgLTcwdDE0LjUgLTg3cTAgLTY3IC0yNy41IC0xMjUuNXQtNzEuNSAtOTcuNXQtOTguNSAtNjYuNXQtMTA4LjUgLTQwLjV0LTEwMiAtMTNoLTUwMHY4OXE0MSA3IDcwLjUgMzIuNXQyOS41IDY1LjV2ODI3cTAgMjQgLTAuNSAzNHQtMy41IDI0dC04LjUgMTkuNXQtMTcgMTMuNXQtMjggMTIuNXQtNDIuNSAxMS41djcxIGw0NzEgLTFxNTcgMCAxMTUuNSAtMjAuNXQxMDggLTU3dDgwLjUgLTk0dDMxIC0xMjQuNXEwIC01MSAtMTUuNSAtOTYuNXQtMzggLTc0LjV0LTQ1IC01MC41dC0zOC41IC0zMC41ek00MDAgNzAwaDEzOXE3OCAwIDEzMC41IDQ4LjV0NTIuNSAxMjIuNXEwIDQxIC04LjUgNzAuNXQtMjkuNSA1NS41dC02Mi41IDM5LjV0LTEwMy41IDEzLjVoLTExOHYtMzUwek00MDAgMjAwaDIxNnE4MCAwIDEyMSA1MC41dDQxIDEzMC41cTAgOTAgLTYyLjUgMTU0LjUgdC0xNTYuNSA2NC41aC0xNTl2LTQwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQ5OyIgZD0iTTg3NyAxMjAwbDIgLTU3cS04MyAtMTkgLTExNiAtNDUuNXQtNDAgLTY2LjVsLTEzMiAtODM5cS05IC00OSAxMyAtNjl0OTYgLTI2di05N2gtNTAwdjk3cTE4NiAxNiAyMDAgOThsMTczIDgzMnEzIDE3IDMgMzB0LTEuNSAyMi41dC05IDE3LjV0LTEzLjUgMTIuNXQtMjEuNSAxMHQtMjYgOC41dC0zMy41IDEwcS0xMyAzIC0xOSA1djU3aDQyNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDUwOyIgZD0iTTEzMDAgOTAwaC01MHEwIDIxIC00IDM3dC05LjUgMjYuNXQtMTggMTcuNXQtMjIgMTF0LTI4LjUgNS41dC0zMSAydC0zNyAwLjVoLTIwMHYtODUwcTAgLTIyIDI1IC0zNC41dDUwIC0xMy41bDI1IC0ydi0xMDBoLTQwMHYxMDBxNCAwIDExIDAuNXQyNCAzdDMwIDd0MjQgMTV0MTEgMjQuNXY4NTBoLTIwMHEtMjUgMCAtMzcgLTAuNXQtMzEgLTJ0LTI4LjUgLTUuNXQtMjIgLTExdC0xOCAtMTcuNXQtOS41IC0yNi41dC00IC0zN2gtNTB2MzAwIGgxMDAwdi0zMDB6TTE3NSAxMDAwaC03NXYtODAwaDc1bC0xMjUgLTE2N2wtMTI1IDE2N2g3NXY4MDBoLTc1bDEyNSAxNjd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MTsiIGQ9Ik0xMTAwIDkwMGgtNTBxMCAyMSAtNCAzN3QtOS41IDI2LjV0LTE4IDE3LjV0LTIyIDExdC0yOC41IDUuNXQtMzEgMnQtMzcgMC41aC0yMDB2LTY1MHEwIC0yMiAyNSAtMzQuNXQ1MCAtMTMuNWwyNSAtMnYtMTAwaC00MDB2MTAwcTQgMCAxMSAwLjV0MjQgM3QzMCA3dDI0IDE1dDExIDI0LjV2NjUwaC0yMDBxLTI1IDAgLTM3IC0wLjV0LTMxIC0ydC0yOC41IC01LjV0LTIyIC0xMXQtMTggLTE3LjV0LTkuNSAtMjYuNXQtNCAtMzdoLTUwdjMwMCBoMTAwMHYtMzAwek0xMTY3IDUwbC0xNjcgLTEyNXY3NWgtODAwdi03NWwtMTY3IDEyNWwxNjcgMTI1di03NWg4MDB2NzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MjsiIGQ9Ik01MCAxMTAwaDYwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC02MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDgwMGgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA1MDBoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTgwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMjAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MzsiIGQ9Ik0yNTAgMTEwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA4MDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAgcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMjUwIDUwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCAyMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDU0OyIgZD0iTTUwMCA5NTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg2MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNMTAwIDY1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek0zMDAgMzUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTgwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTAgNTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDU1OyIgZD0iTTUwIDExMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA4MDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAgcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgNTAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMjAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1NjsiIGQ9Ik01MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTM1MCAxMTAwaDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMzUwIDgwMGg4MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtODAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgNTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTM1MCA1MDBoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDIwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0zNTAgMjAwaDgwMCBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtODAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNTc7IiBkPSJNNDAwIDBoLTEwMHYxMTAwaDEwMHYtMTEwMHpNNTUwIDExMDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTUwIDgwMGg1MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMjY3IDU1MGwtMTY3IC0xMjV2NzVoLTIwMHYxMDBoMjAwdjc1ek01NTAgNTAwaDMwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0zMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTU1MCAyMDBoNjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC02MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1ODsiIGQ9Ik01MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTkwMCAwaC0xMDB2MTEwMGgxMDB2LTExMDB6TTUwIDgwMGg1MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMTEwMCA2MDBoMjAwdi0xMDBoLTIwMHYtNzVsLTE2NyAxMjVsMTY3IDEyNXYtNzV6TTUwIDUwMGgzMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCAyMDBoNjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC02MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1OTsiIGQ9Ik03NSAxMDAwaDc1MHEzMSAwIDUzIC0yMnQyMiAtNTN2LTY1MHEwIC0zMSAtMjIgLTUzdC01MyAtMjJoLTc1MHEtMzEgMCAtNTMgMjJ0LTIyIDUzdjY1MHEwIDMxIDIyIDUzdDUzIDIyek0xMjAwIDMwMGwtMzAwIDMwMGwzMDAgMzAwdi02MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2MDsiIGQ9Ik00NCAxMTAwaDExMTJxMTggMCAzMSAtMTN0MTMgLTMxdi0xMDEycTAgLTE4IC0xMyAtMzF0LTMxIC0xM2gtMTExMnEtMTggMCAtMzEgMTN0LTEzIDMxdjEwMTJxMCAxOCAxMyAzMXQzMSAxM3pNMTAwIDEwMDB2LTczN2wyNDcgMTgybDI5OCAtMTMxbC03NCAxNTZsMjkzIDMxOGwyMzYgLTI4OHY1MDBoLTEwMDB6TTM0MiA4ODRxNTYgMCA5NSAtMzl0MzkgLTk0LjV0LTM5IC05NXQtOTUgLTM5LjV0LTk1IDM5LjV0LTM5IDk1dDM5IDk0LjUgdDk1IDM5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjI7IiBkPSJNNjQ4IDExNjlxMTE3IDAgMjE2IC02MHQxNTYuNSAtMTYxdDU3LjUgLTIxOHEwIC0xMTUgLTcwIC0yNThxLTY5IC0xMDkgLTE1OCAtMjI1LjV0LTE0MyAtMTc5LjVsLTU0IC02MnEtOSA4IC0yNS41IDI0LjV0LTYzLjUgNjcuNXQtOTEgMTAzdC05OC41IDEyOHQtOTUuNSAxNDhxLTYwIDEzMiAtNjAgMjQ5cTAgODggMzQgMTY5LjV0OTEuNSAxNDJ0MTM3IDk2LjV0MTY2LjUgMzZ6TTY1Mi41IDk3NHEtOTEuNSAwIC0xNTYuNSAtNjUgdC02NSAtMTU3dDY1IC0xNTYuNXQxNTYuNSAtNjQuNXQxNTYuNSA2NC41dDY1IDE1Ni41dC02NSAxNTd0LTE1Ni41IDY1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjM7IiBkPSJNNjAwIDExNzdxMTE3IDAgMjI0IC00NS41dDE4NC41IC0xMjN0MTIzIC0xODQuNXQ0NS41IC0yMjR0LTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNXQtMTg0LjUgMTIzdC0xMjMgMTg0LjV0LTQ1LjUgMjI0dDQ1LjUgMjI0dDEyMyAxODQuNXQxODQuNSAxMjN0MjI0IDQ1LjV6TTYwMCAxNzN2ODU0cS0xMTYgMCAtMjE0LjUgLTU3dC0xNTUuNSAtMTU1LjV0LTU3IC0yMTQuNXQ1NyAtMjE0LjUgdDE1NS41IC0xNTUuNXQyMTQuNSAtNTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2NDsiIGQ9Ik01NTQgMTI5NXEyMSAtNzIgNTcuNSAtMTQzLjV0NzYgLTEzMHQ4MyAtMTE4dDgyLjUgLTExN3Q3MCAtMTE2dDQ5LjUgLTEyNnQxOC41IC0xMzYuNXEwIC03MSAtMjUuNSAtMTM1dC02OC41IC0xMTF0LTk5IC04MnQtMTE4LjUgLTU0dC0xMjUuNSAtMjNxLTg0IDUgLTE2MS41IDM0dC0xMzkuNSA3OC41dC05OSAxMjV0LTM3IDE2NC41cTAgNjkgMTggMTM2LjV0NDkuNSAxMjYuNXQ2OS41IDExNi41dDgxLjUgMTE3LjV0ODMuNSAxMTkgdDc2LjUgMTMxdDU4LjUgMTQzek0zNDQgNzEwcS0yMyAtMzMgLTQzLjUgLTcwLjV0LTQwLjUgLTEwMi41dC0xNyAtMTIzcTEgLTM3IDE0LjUgLTY5LjV0MzAgLTUydDQxIC0zN3QzOC41IC0yNC41dDMzIC0xNXEyMSAtNyAzMiAtMXQxMyAyMmw2IDM0cTIgMTAgLTIuNSAyMnQtMTMuNSAxOXEtNSA0IC0xNCAxMnQtMjkuNSA0MC41dC0zMi41IDczLjVxLTI2IDg5IDYgMjcxcTIgMTEgLTYgMTFxLTggMSAtMTUgLTEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjU7IiBkPSJNMTAwMCAxMDEzbDEwOCAxMTVxMiAxIDUgMnQxMyAydDIwLjUgLTF0MjUgLTkuNXQyOC41IC0yMS41cTIyIC0yMiAyNyAtNDN0MCAtMzJsLTYgLTEwbC0xMDggLTExNXpNMzUwIDExMDBoNDAwcTUwIDAgMTA1IC0xM2wtMTg3IC0xODdoLTM2OHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNTAwcTAgLTQxIDI5LjUgLTcwLjV0NzAuNSAtMjkuNWg1MDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41djE4MmwyMDAgMjAwdi0zMzIgcTAgLTE2NSAtOTMuNSAtMjU3LjV0LTI1Ni41IC05Mi41aC00MDBxLTE2NSAwIC0yNTcuNSA5Mi41dC05Mi41IDI1Ny41djQwMHEwIDE2NSA5Mi41IDI1Ny41dDI1Ny41IDkyLjV6TTEwMDkgODAzbC0zNjIgLTM2MmwtMTYxIC01MGw1NSAxNzBsMzU1IDM1NXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDY2OyIgZD0iTTM1MCAxMTAwaDM2MXEtMTY0IC0xNDYgLTIxNiAtMjAwaC0xOTVxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNWwyMDAgMTUzdi0xMDNxMCAtMTY1IC05Mi41IC0yNTcuNXQtMjU3LjUgLTkyLjVoLTQwMHEtMTY1IDAgLTI1Ny41IDkyLjV0LTkyLjUgMjU3LjV2NDAwcTAgMTY1IDkyLjUgMjU3LjV0MjU3LjUgOTIuNXogTTgyNCAxMDczbDMzOSAtMzAxcTggLTcgOCAtMTcuNXQtOCAtMTcuNWwtMzQwIC0zMDZxLTcgLTYgLTEyLjUgLTR0LTYuNSAxMXYyMDNxLTI2IDEgLTU0LjUgMHQtNzguNSAtNy41dC05MiAtMTcuNXQtODYgLTM1dC03MCAtNTdxMTAgNTkgMzMgMTA4dDUxLjUgODEuNXQ2NSA1OC41dDY4LjUgNDAuNXQ2NyAyNC41dDU2IDEzLjV0NDAgNC41djIxMHExIDEwIDYuNSAxMi41dDEzLjUgLTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDY3OyIgZD0iTTM1MCAxMTAwaDM1MHE2MCAwIDEyNyAtMjNsLTE3OCAtMTc3aC0zNDlxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXY2OWwyMDAgMjAwdi0yMTlxMCAtMTY1IC05Mi41IC0yNTcuNXQtMjU3LjUgLTkyLjVoLTQwMHEtMTY1IDAgLTI1Ny41IDkyLjV0LTkyLjUgMjU3LjV2NDAwcTAgMTY1IDkyLjUgMjU3LjV0MjU3LjUgOTIuNXogTTY0MyA2MzlsMzk1IDM5NXE3IDcgMTcuNSA3dDE3LjUgLTdsMTAxIC0xMDFxNyAtNyA3IC0xNy41dC03IC0xNy41bC01MzEgLTUzMnEtNyAtNyAtMTcuNSAtN3QtMTcuNSA3bC0yNDggMjQ4cS03IDcgLTcgMTcuNXQ3IDE3LjVsMTAxIDEwMXE3IDcgMTcuNSA3dDE3LjUgLTdsMTExIC0xMTFxOCAtNyAxOCAtN3QxOCA3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjg7IiBkPSJNMzE4IDkxOGwyNjQgMjY0cTggOCAxOCA4dDE4IC04bDI2MCAtMjY0cTcgLTggNC41IC0xM3QtMTIuNSAtNWgtMTcwdi0yMDBoMjAwdjE3M3EwIDEwIDUgMTJ0MTMgLTVsMjY0IC0yNjBxOCAtNyA4IC0xNy41dC04IC0xNy41bC0yNjQgLTI2NXEtOCAtNyAtMTMgLTV0LTUgMTJ2MTczaC0yMDB2LTIwMGgxNzBxMTAgMCAxMi41IC01dC00LjUgLTEzbC0yNjAgLTI2NHEtOCAtOCAtMTggLTh0LTE4IDhsLTI2NCAyNjRxLTggOCAtNS41IDEzIHQxMi41IDVoMTc1djIwMGgtMjAwdi0xNzNxMCAtMTAgLTUgLTEydC0xMyA1bC0yNjQgMjY1cS04IDcgLTggMTcuNXQ4IDE3LjVsMjY0IDI2MHE4IDcgMTMgNXQ1IC0xMnYtMTczaDIwMHYyMDBoLTE3NXEtMTAgMCAtMTIuNSA1dDUuNSAxM3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDY5OyIgZD0iTTI1MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDM4bDQ2NCA0NTNxMTUgMTQgMjUuNSAxMHQxMC41IC0yNXYtMTAwMHEwIC0yMSAtMTAuNSAtMjV0LTI1LjUgMTBsLTQ2NCA0NTN2LTQzOHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDcwOyIgZD0iTTUwIDExMDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MzhsNDY0IDQ1M3ExNSAxNCAyNS41IDEwdDEwLjUgLTI1di00MzhsNDY0IDQ1M3ExNSAxNCAyNS41IDEwdDEwLjUgLTI1di0xMDAwcTAgLTIxIC0xMC41IC0yNXQtMjUuNSAxMGwtNDY0IDQ1M3YtNDM4cTAgLTIxIC0xMC41IC0yNXQtMjUuNSAxMGwtNDY0IDQ1M3YtNDM4cTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNSB0LTE0LjUgMzUuNXYxMDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDcxOyIgZD0iTTEyMDAgMTA1MHYtMTAwMHEwIC0yMSAtMTAuNSAtMjV0LTI1LjUgMTBsLTQ2NCA0NTN2LTQzOHEwIC0yMSAtMTAuNSAtMjV0LTI1LjUgMTBsLTQ5MiA0ODBxLTE1IDE0IC0xNSAzNXQxNSAzNWw0OTIgNDgwcTE1IDE0IDI1LjUgMTB0MTAuNSAtMjV2LTQzOGw0NjQgNDUzcTE1IDE0IDI1LjUgMTB0MTAuNSAtMjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3MjsiIGQ9Ik0yNDMgMTA3NGw4MTQgLTQ5OHExOCAtMTEgMTggLTI2dC0xOCAtMjZsLTgxNCAtNDk4cS0xOCAtMTEgLTMwLjUgLTR0LTEyLjUgMjh2MTAwMHEwIDIxIDEyLjUgMjh0MzAuNSAtNHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDczOyIgZD0iTTI1MCAxMDAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtODAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djgwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTY1MCAxMDAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtODAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djgwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNzQ7IiBkPSJNMTEwMCA5NTB2LTgwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtODAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY4MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDc1OyIgZD0iTTUwMCA2MTJ2NDM4cTAgMjEgMTAuNSAyNXQyNS41IC0xMGw0OTIgLTQ4MHExNSAtMTQgMTUgLTM1dC0xNSAtMzVsLTQ5MiAtNDgwcS0xNSAtMTQgLTI1LjUgLTEwdC0xMC41IDI1djQzOGwtNDY0IC00NTNxLTE1IC0xNCAtMjUuNSAtMTB0LTEwLjUgMjV2MTAwMHEwIDIxIDEwLjUgMjV0MjUuNSAtMTB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NjsiIGQ9Ik0xMDQ4IDExMDJsMTAwIDFxMjAgMCAzNSAtMTQuNXQxNSAtMzUuNWw1IC0xMDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41bC0xMDAgLTFxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41bC0yIDQzN2wtNDYzIC00NTRxLTE0IC0xNSAtMjQuNSAtMTAuNXQtMTAuNSAyNS41bC0yIDQzN2wtNDYyIC00NTVxLTE1IC0xNCAtMjUuNSAtOS41dC0xMC41IDI0LjVsLTUgMTAwMHEwIDIxIDEwLjUgMjUuNXQyNS41IC0xMC41bDQ2NiAtNDUwIGwtMiA0MzhxMCAyMCAxMC41IDI0LjV0MjUuNSAtOS41bDQ2NiAtNDUxbC0yIDQzOHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NzsiIGQ9Ik04NTAgMTEwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDM4bC00NjQgLTQ1M3EtMTUgLTE0IC0yNS41IC0xMHQtMTAuNSAyNXYxMDAwcTAgMjEgMTAuNSAyNXQyNS41IC0xMGw0NjQgLTQ1M3Y0MzhxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNzg7IiBkPSJNNjg2IDEwODFsNTAxIC01NDBxMTUgLTE1IDEwLjUgLTI2dC0yNi41IC0xMWgtMTA0MnEtMjIgMCAtMjYuNSAxMXQxMC41IDI2bDUwMSA1NDBxMTUgMTUgMzYgMTV0MzYgLTE1ek0xNTAgNDAwaDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDc5OyIgZD0iTTg4NSA5MDBsLTM1MiAtMzUzbDM1MiAtMzUzbC0xOTcgLTE5OGwtNTUyIDU1Mmw1NTIgNTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODA7IiBkPSJNMTA2NCA1NDdsLTU1MSAtNTUxbC0xOTggMTk4bDM1MyAzNTNsLTM1MyAzNTNsMTk4IDE5OHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDgxOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02NTAgOTAwaC0xMDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTE1MGgtMTUwIHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwcTAgLTIxIDE0LjUgLTM1LjV0MzUuNSAtMTQuNWgxNTB2LTE1MHEwIC0yMSAxNC41IC0zNS41dDM1LjUgLTE0LjVoMTAwcTIxIDAgMzUuNSAxNC41dDE0LjUgMzUuNXYxNTBoMTUwcTIxIDAgMzUuNSAxNC41dDE0LjUgMzUuNXYxMDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTE1MHYxNTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4MjsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNODUwIDcwMGgtNTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDBxMCAtMjEgMTQuNSAtMzUuNSB0MzUuNSAtMTQuNWg1MDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDgzOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek03NDEuNSA5MTNxLTEyLjUgMCAtMjEuNSAtOWwtMTIwIC0xMjBsLTEyMCAxMjBxLTkgOSAtMjEuNSA5IHQtMjEuNSAtOWwtMTQxIC0xNDFxLTkgLTkgLTkgLTIxLjV0OSAtMjEuNWwxMjAgLTEyMGwtMTIwIC0xMjBxLTkgLTkgLTkgLTIxLjV0OSAtMjEuNWwxNDEgLTE0MXE5IC05IDIxLjUgLTl0MjEuNSA5bDEyMCAxMjBsMTIwIC0xMjBxOSAtOSAyMS41IC05dDIxLjUgOWwxNDEgMTQxcTkgOSA5IDIxLjV0LTkgMjEuNWwtMTIwIDEyMGwxMjAgMTIwcTkgOSA5IDIxLjV0LTkgMjEuNWwtMTQxIDE0MXEtOSA5IC0yMS41IDl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4NDsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNNTQ2IDYyM2wtODQgODVxLTcgNyAtMTcuNSA3dC0xOC41IC03bC0xMzkgLTEzOXEtNyAtOCAtNyAtMTh0NyAtMTggbDI0MiAtMjQxcTcgLTggMTcuNSAtOHQxNy41IDhsMzc1IDM3NXE3IDcgNyAxNy41dC03IDE4LjVsLTEzOSAxMzlxLTcgNyAtMTcuNSA3dC0xNy41IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODU7IiBkPSJNNjAwIDExNzdxMTE3IDAgMjI0IC00NS41dDE4NC41IC0xMjN0MTIzIC0xODQuNXQ0NS41IC0yMjR0LTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNXQtMTg0LjUgMTIzdC0xMjMgMTg0LjV0LTQ1LjUgMjI0dDQ1LjUgMjI0dDEyMyAxODQuNXQxODQuNSAxMjN0MjI0IDQ1LjV6TTU4OCA5NDFxLTI5IDAgLTU5IC01LjV0LTYzIC0yMC41dC01OCAtMzguNXQtNDEuNSAtNjN0LTE2LjUgLTg5LjUgcTAgLTI1IDIwIC0yNWgxMzFxMzAgLTUgMzUgMTFxNiAyMCAyMC41IDI4dDQ1LjUgOHEyMCAwIDMxLjUgLTEwLjV0MTEuNSAtMjguNXEwIC0yMyAtNyAtMzR0LTI2IC0xOHEtMSAwIC0xMy41IC00dC0xOS41IC03LjV0LTIwIC0xMC41dC0yMiAtMTd0LTE4LjUgLTI0dC0xNS41IC0zNXQtOCAtNDZxLTEgLTggNS41IC0xNi41dDIwLjUgLTguNWgxNzNxNyAwIDIyIDh0MzUgMjh0MzcuNSA0OHQyOS41IDc0dDEyIDEwMHEwIDQ3IC0xNyA4MyB0LTQyLjUgNTd0LTU5LjUgMzQuNXQtNjQgMTh0LTU5IDQuNXpNNjc1IDQwMGgtMTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2MTUwcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDg2OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02NzUgMTAwMGgtMTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMTUwcTAgLTEwIDcuNSAtMTcuNSB0MTcuNSAtNy41aDE1MHExMCAwIDE3LjUgNy41dDcuNSAxNy41djE1MHEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6TTY3NSA3MDBoLTI1MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoNzV2LTIwMGgtNzVxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di01MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDM1MHExMCAwIDE3LjUgNy41dDcuNSAxNy41djUwcTAgMTAgLTcuNSAxNy41IHQtMTcuNSA3LjVoLTc1djI3NXEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4NzsiIGQ9Ik01MjUgMTIwMGgxNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xOTRxMTAzIC0yNyAxNzguNSAtMTAyLjV0MTAyLjUgLTE3OC41aDE5NHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE5NHEtMjcgLTEwMyAtMTAyLjUgLTE3OC41dC0xNzguNSAtMTAyLjV2LTE5NHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE5NCBxLTEwMyAyNyAtMTc4LjUgMTAyLjV0LTEwMi41IDE3OC41aC0xOTRxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgxOTRxMjcgMTAzIDEwMi41IDE3OC41dDE3OC41IDEwMi41djE5NHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek03MDAgODkzdi0xNjhxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNjhxLTY4IC0yMyAtMTE5IC03NCB0LTc0IC0xMTloMTY4cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTY4cTIzIC02OCA3NCAtMTE5dDExOSAtNzR2MTY4cTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTY4cTY4IDIzIDExOSA3NHQ3NCAxMTloLTE2OHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDE2OCBxLTIzIDY4IC03NCAxMTl0LTExOSA3NHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDg4OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjV0NTcgLTIxNC41IHQxNTUuNSAtMTU1LjV0MjE0LjUgLTU3dDIxNC41IDU3dDE1NS41IDE1NS41dDU3IDIxNC41dC01NyAyMTQuNXQtMTU1LjUgMTU1LjV0LTIxNC41IDU3ek03NTkgODIzbDY0IC02NHE3IC03IDcgLTE3LjV0LTcgLTE3LjVsLTEyNCAtMTI0bDEyNCAtMTI0cTcgLTcgNyAtMTcuNXQtNyAtMTcuNWwtNjQgLTY0cS03IC03IC0xNy41IC03dC0xNy41IDdsLTEyNCAxMjRsLTEyNCAtMTI0cS03IC03IC0xNy41IC03dC0xNy41IDdsLTY0IDY0IHEtNyA3IC03IDE3LjV0NyAxNy41bDEyNCAxMjRsLTEyNCAxMjRxLTcgNyAtNyAxNy41dDcgMTcuNWw2NCA2NHE3IDcgMTcuNSA3dDE3LjUgLTdsMTI0IC0xMjRsMTI0IDEyNHE3IDcgMTcuNSA3dDE3LjUgLTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4OTsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNNjAwIDEwMjdxLTExNiAwIC0yMTQuNSAtNTd0LTE1NS41IC0xNTUuNXQtNTcgLTIxNC41dDU3IC0yMTQuNSB0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXQtNTcgMjE0LjV0LTE1NS41IDE1NS41dC0yMTQuNSA1N3pNNzgyIDc4OGwxMDYgLTEwNnE3IC03IDcgLTE3LjV0LTcgLTE3LjVsLTMyMCAtMzIxcS04IC03IC0xOCAtN3QtMTggN2wtMjAyIDIwM3EtOCA3IC04IDE3LjV0OCAxNy41bDEwNiAxMDZxNyA4IDE3LjUgOHQxNy41IC04bDc5IC03OWwxOTcgMTk3cTcgNyAxNy41IDd0MTcuNSAtN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDkwOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjVxMCAtMTIwIDY1IC0yMjUgbDU4NyA1ODdxLTEwNSA2NSAtMjI1IDY1ek05NjUgODE5bC01ODQgLTU4NHExMDQgLTYyIDIxOSAtNjJxMTE2IDAgMjE0LjUgNTd0MTU1LjUgMTU1LjV0NTcgMjE0LjVxMCAxMTUgLTYyIDIxOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDkxOyIgZD0iTTM5IDU4Mmw1MjIgNDI3cTE2IDEzIDI3LjUgOHQxMS41IC0yNnYtMjkxaDU1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC01NTB2LTI5MXEwIC0yMSAtMTEuNSAtMjZ0LTI3LjUgOGwtNTIyIDQyN3EtMTYgMTMgLTE2IDMydDE2IDMyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwOTI7IiBkPSJNNjM5IDEwMDlsNTIyIC00MjdxMTYgLTEzIDE2IC0zMnQtMTYgLTMybC01MjIgLTQyN3EtMTYgLTEzIC0yNy41IC04dC0xMS41IDI2djI5MWgtNTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDU1MHYyOTFxMCAyMSAxMS41IDI2dDI3LjUgLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5MzsiIGQ9Ik02ODIgMTE2MWw0MjcgLTUyMnExMyAtMTYgOCAtMjcuNXQtMjYgLTExLjVoLTI5MXYtNTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djU1MGgtMjkxcS0yMSAwIC0yNiAxMS41dDggMjcuNWw0MjcgNTIycTEzIDE2IDMyIDE2dDMyIC0xNnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDk0OyIgZD0iTTU1MCAxMjAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTUwaDI5MXEyMSAwIDI2IC0xMS41dC04IC0yNy41bC00MjcgLTUyMnEtMTMgLTE2IC0zMiAtMTZ0LTMyIDE2bC00MjcgNTIycS0xMyAxNiAtOCAyNy41dDI2IDExLjVoMjkxdjU1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5NTsiIGQ9Ik02MzkgMTEwOWw1MjIgLTQyN3ExNiAtMTMgMTYgLTMydC0xNiAtMzJsLTUyMiAtNDI3cS0xNiAtMTMgLTI3LjUgLTh0LTExLjUgMjZ2MjkxcS05NCAtMiAtMTgyIC0yMHQtMTcwLjUgLTUydC0xNDcgLTkyLjV0LTEwMC41IC0xMzUuNXE1IDEwNSAyNyAxOTMuNXQ2Ny41IDE2N3QxMTMgMTM1dDE2NyA5MS41dDIyNS41IDQydjI2MnEwIDIxIDExLjUgMjZ0MjcuNSAtOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDk2OyIgZD0iTTg1MCAxMjAwaDMwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMzAwcTAgLTIxIC0xMC41IC0yNXQtMjQuNSAxMGwtOTQgOTRsLTI0OSAtMjQ5cS04IC03IC0xOCAtN3QtMTggN2wtMTA2IDEwNnEtNyA4IC03IDE4dDcgMThsMjQ5IDI0OWwtOTQgOTRxLTE0IDE0IC0xMCAyNC41dDI1IDEwLjV6TTM1MCAwaC0zMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djMwMHEwIDIxIDEwLjUgMjV0MjQuNSAtMTBsOTQgLTk0bDI0OSAyNDkgcTggNyAxOCA3dDE4IC03bDEwNiAtMTA2cTcgLTggNyAtMTh0LTcgLTE4bC0yNDkgLTI0OWw5NCAtOTRxMTQgLTE0IDEwIC0yNC41dC0yNSAtMTAuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDk3OyIgZD0iTTEwMTQgMTEyMGwxMDYgLTEwNnE3IC04IDcgLTE4dC03IC0xOGwtMjQ5IC0yNDlsOTQgLTk0cTE0IC0xNCAxMCAtMjQuNXQtMjUgLTEwLjVoLTMwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MzAwcTAgMjEgMTAuNSAyNXQyNC41IC0xMGw5NCAtOTRsMjQ5IDI0OXE4IDcgMTggN3QxOCAtN3pNMjUwIDYwMGgzMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTMwMHEwIC0yMSAtMTAuNSAtMjV0LTI0LjUgMTBsLTk0IDk0IGwtMjQ5IC0yNDlxLTggLTcgLTE4IC03dC0xOCA3bC0xMDYgMTA2cS03IDggLTcgMTh0NyAxOGwyNDkgMjQ5bC05NCA5NHEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTAxOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek03MDQgOTAwaC0yMDhxLTIwIDAgLTMyIC0xNC41dC04IC0zNC41bDU4IC0zMDJxNCAtMjAgMjEuNSAtMzQuNSB0MzcuNSAtMTQuNWg1NHEyMCAwIDM3LjUgMTQuNXQyMS41IDM0LjVsNTggMzAycTQgMjAgLTggMzQuNXQtMzIgMTQuNXpNNjc1IDQwMGgtMTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2MTUwcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTAyOyIgZD0iTTI2MCAxMjAwcTkgMCAxOSAtMnQxNSAtNGw1IC0ycTIyIC0xMCA0NCAtMjNsMTk2IC0xMThxMjEgLTEzIDM2IC0yNHEyOSAtMjEgMzcgLTEycTExIDEzIDQ5IDM1bDE5NiAxMThxMjIgMTMgNDUgMjNxMTcgNyAzOCA3cTIzIDAgNDcgLTE2LjV0MzcgLTMzLjVsMTMgLTE2cTE0IC0yMSAxOCAtNDVsMjUgLTEyM2w4IC00NHExIC05IDguNSAtMTQuNXQxNy41IC01LjVoNjFxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MCBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC01MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTE3NWgtNDAwdjMwMGgtMjAwdi0zMDBoLTQwMHYxNzVxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41aC01MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoNjFxMTEgMCAxOCAzdDcgOHEwIDQgOSA1MmwyNSAxMjhxNSAyNSAxOSA0NXEyIDMgNSA3dDEzLjUgMTV0MjEuNSAxOS41dDI2LjUgMTUuNSB0MjkuNSA3ek05MTUgMTA3OWwtMTY2IC0xNjJxLTcgLTcgLTUgLTEydDEyIC01aDIxOXExMCAwIDE1IDd0MiAxN2wtNTEgMTQ5cS0zIDEwIC0xMSAxMnQtMTUgLTZ6TTQ2MyA5MTdsLTE3NyAxNTdxLTggNyAtMTYgNXQtMTEgLTEybC01MSAtMTQzcS0zIC0xMCAyIC0xN3QxNSAtN2gyMzFxMTEgMCAxMi41IDV0LTUuNSAxMnpNNTAwIDBoLTM3NXEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djM3NWg0MDB2LTQwMHpNMTEwMCA0MDB2LTM3NSBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0zNzV2NDAwaDQwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTAzOyIgZD0iTTExNjUgMTE5MHE4IDMgMjEgLTYuNXQxMyAtMTcuNXEtMiAtMTc4IC0yNC41IC0zMjMuNXQtNTUuNSAtMjQ1LjV0LTg3IC0xNzQuNXQtMTAyLjUgLTExOC41dC0xMTggLTY4LjV0LTExOC41IC0zM3QtMTIwIC00LjV0LTEwNSA5LjV0LTkwIDE2LjVxLTYxIDEyIC03OCAxMXEtNCAxIC0xMi41IDB0LTM0IC0xNC41dC01Mi41IC00MC41bC0xNTMgLTE1M3EtMjYgLTI0IC0zNyAtMTQuNXQtMTEgNDMuNXEwIDY0IDQyIDEwMnE4IDggNTAuNSA0NSB0NjYuNSA1OHExOSAxNyAzNSA0N3QxMyA2MXEtOSA1NSAtMTAgMTAyLjV0NyAxMTF0MzcgMTMwdDc4IDEyOS41cTM5IDUxIDgwIDg4dDg5LjUgNjMuNXQ5NC41IDQ1dDExMy41IDM2dDEyOSAzMXQxNTcuNSAzN3QxODIgNDcuNXpNMTExNiAxMDk4cS04IDkgLTIyLjUgLTN0LTQ1LjUgLTUwcS0zOCAtNDcgLTExOSAtMTAzLjV0LTE0MiAtODkuNWwtNjIgLTMzcS01NiAtMzAgLTEwMiAtNTd0LTEwNCAtNjh0LTEwMi41IC04MC41dC04NS41IC05MSB0LTY0IC0xMDQuNXEtMjQgLTU2IC0zMSAtODZ0MiAtMzJ0MzEuNSAxNy41dDU1LjUgNTkuNXEyNSAzMCA5NCA3NS41dDEyNS41IDc3LjV0MTQ3LjUgODFxNzAgMzcgMTE4LjUgNjl0MTAyIDc5LjV0OTkgMTExdDg2LjUgMTQ4LjVxMjIgNTAgMjQgNjB0LTYgMTl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNDsiIGQ9Ik02NTMgMTIzMXEtMzkgLTY3IC01NC41IC0xMzF0LTEwLjUgLTExNC41dDI0LjUgLTk2LjV0NDcuNSAtODB0NjMuNSAtNjIuNXQ2OC41IC00Ni41dDY1IC0zMHEtNCA3IC0xNy41IDM1dC0xOC41IDM5LjV0LTE3IDM5LjV0LTE3IDQzdC0xMyA0MnQtOS41IDQ0LjV0LTIgNDJ0NCA0M3QxMy41IDM5dDIzIDM4LjVxOTYgLTQyIDE2NSAtMTA3LjV0MTA1IC0xMzh0NTIgLTE1NnQxMyAtMTU5dC0xOSAtMTQ5LjVxLTEzIC01NSAtNDQgLTEwNi41IHQtNjggLTg3dC03OC41IC02NC41dC03Mi41IC00NXQtNTMgLTIycS03MiAtMjIgLTEyNyAtMTFxLTMxIDYgLTEzIDE5cTYgMyAxNyA3cTEzIDUgMzIuNSAyMXQ0MSA0NHQzOC41IDYzLjV0MjEuNSA4MS41dC02LjUgOTQuNXQtNTAgMTA3dC0xMDQgMTE1LjVxMTAgLTEwNCAtMC41IC0xODl0LTM3IC0xNDAuNXQtNjUgLTkzdC04NCAtNTJ0LTkzLjUgLTExdC05NSAyNC41cS04MCAzNiAtMTMxLjUgMTE0dC01My41IDE3MXEtMiAyMyAwIDQ5LjUgdDQuNSA1Mi41dDEzLjUgNTZ0MjcuNSA2MHQ0NiA2NC41dDY5LjUgNjguNXEtOCAtNTMgLTUgLTEwMi41dDE3LjUgLTkwdDM0IC02OC41dDQ0LjUgLTM5dDQ5IC0ycTMxIDEzIDM4LjUgMzZ0LTQuNSA1NXQtMjkgNjQuNXQtMzYgNzV0LTI2IDc1LjVxLTE1IDg1IDIgMTYxLjV0NTMuNSAxMjguNXQ4NS41IDkyLjV0OTMuNSA2MXQ4MS41IDI1LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNTsiIGQ9Ik02MDAgMTA5NHE4MiAwIDE2MC41IC0yMi41dDE0MCAtNTl0MTE2LjUgLTgyLjV0OTQuNSAtOTV0NjggLTk1dDQyLjUgLTgyLjV0MTQgLTU3LjV0LTE0IC01Ny41dC00MyAtODIuNXQtNjguNSAtOTV0LTk0LjUgLTk1dC0xMTYuNSAtODIuNXQtMTQwIC01OXQtMTU5LjUgLTIyLjV0LTE1OS41IDIyLjV0LTE0MCA1OXQtMTE2LjUgODIuNXQtOTQuNSA5NXQtNjguNSA5NXQtNDMgODIuNXQtMTQgNTcuNXQxNCA1Ny41dDQyLjUgODIuNXQ2OCA5NSB0OTQuNSA5NXQxMTYuNSA4Mi41dDE0MCA1OXQxNjAuNSAyMi41ek04ODggODI5cS0xNSAxNSAtMTggMTJ0NSAtMjJxMjUgLTU3IDI1IC0xMTlxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4dC0yMTIgODh0LTg4IDIxMnEwIDU5IDIzIDExNHE4IDE5IDQuNSAyMnQtMTcuNSAtMTJxLTcwIC02OSAtMTYwIC0xODRxLTEzIC0xNiAtMTUgLTQwLjV0OSAtNDIuNXEyMiAtMzYgNDcgLTcxdDcwIC04MnQ5Mi41IC04MXQxMTMgLTU4LjV0MTMzLjUgLTI0LjUgdDEzMy41IDI0dDExMyA1OC41dDkyLjUgODEuNXQ3MCA4MS41dDQ3IDcwLjVxMTEgMTggOSA0Mi41dC0xNCA0MS41cS05MCAxMTcgLTE2MyAxODl6TTQ0OCA3MjdsLTM1IC0zNnEtMTUgLTE1IC0xOS41IC0zOC41dDQuNSAtNDEuNXEzNyAtNjggOTMgLTExNnExNiAtMTMgMzguNSAtMTF0MzYuNSAxN2wzNSAzNHExNCAxNSAxMi41IDMzLjV0LTE2LjUgMzMuNXEtNDQgNDQgLTg5IDExN3EtMTEgMTggLTI4IDIwdC0zMiAtMTJ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNjsiIGQ9Ik01OTIgMGgtMTQ4bDMxIDEyMHEtOTEgMjAgLTE3NS41IDY4LjV0LTE0My41IDEwNi41dC0xMDMuNSAxMTl0LTY2LjUgMTEwdC0yMiA3NnEwIDIxIDE0IDU3LjV0NDIuNSA4Mi41dDY4IDk1dDk0LjUgOTV0MTE2LjUgODIuNXQxNDAgNTl0MTYwLjUgMjIuNXE2MSAwIDEyNiAtMTVsMzIgMTIxaDE0OHpNOTQ0IDc3MGw0NyAxODFxMTA4IC04NSAxNzYuNSAtMTkydDY4LjUgLTE1OXEwIC0yNiAtMTkuNSAtNzF0LTU5LjUgLTEwMnQtOTMgLTExMiB0LTEyOSAtMTA0LjV0LTE1OCAtNzUuNWw0NiAxNzNxNzcgNDkgMTM2IDExN3Q5NyAxMzFxMTEgMTggOSA0Mi41dC0xNCA0MS41cS01NCA3MCAtMTA3IDEzMHpNMzEwIDgyNHEtNzAgLTY5IC0xNjAgLTE4NHEtMTMgLTE2IC0xNSAtNDAuNXQ5IC00Mi41cTE4IC0zMCAzOSAtNjB0NTcgLTcwLjV0NzQgLTczdDkwIC02MXQxMDUgLTQxLjVsNDEgMTU0cS0xMDcgMTggLTE3OC41IDEwMS41dC03MS41IDE5My41cTAgNTkgMjMgMTE0cTggMTkgNC41IDIyIHQtMTcuNSAtMTJ6TTQ0OCA3MjdsLTM1IC0zNnEtMTUgLTE1IC0xOS41IC0zOC41dDQuNSAtNDEuNXEzNyAtNjggOTMgLTExNnExNiAtMTMgMzguNSAtMTF0MzYuNSAxN2wxMiAxMWwyMiA4NmwtMyA0cS00NCA0NCAtODkgMTE3cS0xMSAxOCAtMjggMjB0LTMyIC0xMnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTA3OyIgZD0iTS05MCAxMDBsNjQyIDEwNjZxMjAgMzEgNDggMjguNXQ0OCAtMzUuNWw2NDIgLTEwNTZxMjEgLTMyIDcuNSAtNjcuNXQtNTAuNSAtMzUuNWgtMTI5NHEtMzcgMCAtNTAuNSAzNHQ3LjUgNjZ6TTE1NSAyMDBoMzQ1djc1cTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNzVoMzQ1bC00NDUgNzIzek00OTYgNzAwaDIwOHEyMCAwIDMyIC0xNC41dDggLTM0LjVsLTU4IC0yNTIgcS00IC0yMCAtMjEuNSAtMzQuNXQtMzcuNSAtMTQuNWgtNTRxLTIwIDAgLTM3LjUgMTQuNXQtMjEuNSAzNC41bC01OCAyNTJxLTQgMjAgOCAzNC41dDMyIDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwODsiIGQ9Ik02NTAgMTIwMHE2MiAwIDEwNiAtNDR0NDQgLTEwNnYtMzM5bDM2MyAtMzI1cTE1IC0xNCAyNiAtMzguNXQxMSAtNDQuNXYtNDFxMCAtMjAgLTEyIC0yNi41dC0yOSA1LjVsLTM1OSAyNDl2LTI2M3ExMDAgLTkzIDEwMCAtMTEzdi02NHEwIC0yMSAtMTMgLTI5dC0zMiAxbC0yMDUgMTI4bC0yMDUgLTEyOHEtMTkgLTkgLTMyIC0xdC0xMyAyOXY2NHEwIDIwIDEwMCAxMTN2MjYzbC0zNTkgLTI0OXEtMTcgLTEyIC0yOSAtNS41dC0xMiAyNi41djQxIHEwIDIwIDExIDQ0LjV0MjYgMzguNWwzNjMgMzI1djMzOXEwIDYyIDQ0IDEwNnQxMDYgNDR6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwOTsiIGQ9Ik04NTAgMTIwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUwaDUwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xNTBoLTExMDB2MTUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg1MHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGg1MDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMTAwIDgwMHYtNzUwcTAgLTIxIC0xNC41IC0zNS41IHQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NzUwaDExMDB6TTEwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTMwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTUwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTcwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTkwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMCA0MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTMwMCA0MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTUwMCA0MDAgdi0xMDBoMTAwdjEwMGgtMTAwek03MDAgNDAwdi0xMDBoMTAwdjEwMGgtMTAwek05MDAgNDAwdi0xMDBoMTAwdjEwMGgtMTAwek0xMDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek0zMDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek01MDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek03MDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek05MDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTA7IiBkPSJNMTEzNSAxMTY1bDI0OSAtMjMwcTE1IC0xNCAxNSAtMzV0LTE1IC0zNWwtMjQ5IC0yMzBxLTE0IC0xNCAtMjQuNSAtMTB0LTEwLjUgMjV2MTUwaC0xNTlsLTYwMCAtNjAwaC0yOTFxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjA5bDYwMCA2MDBoMjQxdjE1MHEwIDIxIDEwLjUgMjV0MjQuNSAtMTB6TTUyMiA4MTlsLTE0MSAtMTQxbC0xMjIgMTIyaC0yMDlxLTIxIDAgLTM1LjUgMTQuNSB0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDI5MXpNMTEzNSA1NjVsMjQ5IC0yMzBxMTUgLTE0IDE1IC0zNXQtMTUgLTM1bC0yNDkgLTIzMHEtMTQgLTE0IC0yNC41IC0xMHQtMTAuNSAyNXYxNTBoLTI0MWwtMTgxIDE4MWwxNDEgMTQxbDEyMiAtMTIyaDE1OXYxNTBxMCAyMSAxMC41IDI1dDI0LjUgLTEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTE7IiBkPSJNMTAwIDExMDBoMTAwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNjAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC01OTZsLTMwNCAtMzAwdjMwMGgtMTAwcS00MSAwIC03MC41IDI5LjV0LTI5LjUgNzAuNXY2MDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTI7IiBkPSJNMTUwIDEyMDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yNTBoLTMwMHYyNTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04NTAgMTIwMGgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTI1MGgtMzAwdjI1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTExMDAgODAwdi0zMDBxMCAtNDEgLTMgLTc3LjV0LTE1IC04OS41dC0zMiAtOTZ0LTU4IC04OXQtODkgLTc3dC0xMjkgLTUxdC0xNzQgLTIwdC0xNzQgMjAgdC0xMjkgNTF0LTg5IDc3dC01OCA4OXQtMzIgOTZ0LTE1IDg5LjV0LTMgNzcuNXYzMDBoMzAwdi0yNTB2LTI3di00Mi41dDEuNSAtNDF0NSAtMzh0MTAgLTM1dDE2LjUgLTMwdDI1LjUgLTI0LjV0MzUgLTE5dDQ2LjUgLTEydDYwIC00dDYwIDQuNXQ0Ni41IDEyLjV0MzUgMTkuNXQyNSAyNS41dDE3IDMwLjV0MTAgMzV0NSAzOHQyIDQwLjV0LTAuNSA0MnYyNXYyNTBoMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTM7IiBkPSJNMTEwMCA0MTFsLTE5OCAtMTk5bC0zNTMgMzUzbC0zNTMgLTM1M2wtMTk3IDE5OWw1NTEgNTUxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTQ7IiBkPSJNMTEwMSA3ODlsLTU1MCAtNTUxbC01NTEgNTUxbDE5OCAxOTlsMzUzIC0zNTNsMzUzIDM1M3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTE1OyIgZD0iTTQwNCAxMDAwaDc0NnEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTUxaDE1MHEyMSAwIDI1IC0xMC41dC0xMCAtMjQuNWwtMjMwIC0yNDlxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI0OXEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNWgxNTB2NDAxaC0zODF6TTEzNSA5ODRsMjMwIC0yNDlxMTQgLTE0IDEwIC0yNC41dC0yNSAtMTAuNWgtMTUwdi00MDBoMzg1bDIxNSAtMjAwaC03NTBxLTIxIDAgLTM1LjUgMTQuNSB0LTE0LjUgMzUuNXY1NTBoLTE1MHEtMjEgMCAtMjUgMTAuNXQxMCAyNC41bDIzMCAyNDlxMTQgMTUgMzUgMTV0MzUgLTE1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTY7IiBkPSJNNTYgMTIwMGg5NHExNyAwIDMxIC0xMXQxOCAtMjdsMzggLTE2Mmg4OTZxMjQgMCAzOSAtMTguNXQxMCAtNDIuNWwtMTAwIC00NzVxLTUgLTIxIC0yNyAtNDIuNXQtNTUgLTIxLjVoLTYzM2w0OCAtMjAwaDUzNXEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41dC0zNS41IDE0LjV0LTE0LjUgMzUuNXY1MGgtMzAwdi01MCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjV0LTM1LjUgMTQuNXQtMTQuNSAzNS41djUwaC0zMXEtMTggMCAtMzIuNSAxMHQtMjAuNSAxOWwtNSAxMGwtMjAxIDk2MWgtNTRxLTIwIDAgLTM1IDE0LjV0LTE1IDM1LjV0MTUgMzUuNXQzNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTc7IiBkPSJNMTIwMCAxMDAwdi0xMDBoLTEyMDB2MTAwaDIwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMzAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41aDUwMHpNMCA4MDBoMTIwMHYtODAwaC0xMjAwdjgwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTE4OyIgZD0iTTIwMCA4MDBsLTIwMCAtNDAwdjYwMGgyMDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDMwMHE0MiAwIDcxIC0yOS41dDI5IC03MC41aDUwMHYtMjAwaC0xMDAwek0xNTAwIDcwMGwtMzAwIC03MDBoLTEyMDBsMzAwIDcwMGgxMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTk7IiBkPSJNNjM1IDExODRsMjMwIC0yNDlxMTQgLTE0IDEwIC0yNC41dC0yNSAtMTAuNWgtMTUwdi02MDFoMTUwcTIxIDAgMjUgLTEwLjV0LTEwIC0yNC41bC0yMzAgLTI0OXEtMTQgLTE1IC0zNSAtMTV0LTM1IDE1bC0yMzAgMjQ5cS0xNCAxNCAtMTAgMjQuNXQyNSAxMC41aDE1MHY2MDFoLTE1MHEtMjEgMCAtMjUgMTAuNXQxMCAyNC41bDIzMCAyNDlxMTQgMTUgMzUgMTV0MzUgLTE1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjA7IiBkPSJNOTM2IDg2NGwyNDkgLTIyOXExNCAtMTUgMTQgLTM1LjV0LTE0IC0zNS41bC0yNDkgLTIyOXEtMTUgLTE1IC0yNS41IC0xMC41dC0xMC41IDI0LjV2MTUxaC02MDB2LTE1MXEwIC0yMCAtMTAuNSAtMjQuNXQtMjUuNSAxMC41bC0yNDkgMjI5cS0xNCAxNSAtMTQgMzUuNXQxNCAzNS41bDI0OSAyMjlxMTUgMTUgMjUuNSAxMC41dDEwLjUgLTI1LjV2LTE0OWg2MDB2MTQ5cTAgMjEgMTAuNSAyNS41dDI1LjUgLTEwLjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyMTsiIGQ9Ik0xMTY5IDQwMGwtMTcyIDczMnEtNSAyMyAtMjMgNDUuNXQtMzggMjIuNWgtNjcycS0yMCAwIC0zOCAtMjB0LTIzIC00MWwtMTcyIC03MzloMTEzOHpNMTEwMCAzMDBoLTEwMDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTEwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoMTAwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2MTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41ek04MDAgMTAwdjEwMGgxMDB2LTEwMGgtMTAwIHpNMTAwMCAxMDB2MTAwaDEwMHYtMTAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyMjsiIGQ9Ik0xMTUwIDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTg1MHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNXQtMzUuNSAxNC41dC0xNC41IDM1LjV2ODUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMTAwMCAyMDBsLTY3NSAyMDBoLTM4bDQ3IC0yNzZxMyAtMTYgLTUuNSAtMjB0LTI5LjUgLTRoLTdoLTg0cS0yMCAwIC0zNC41IDE0dC0xOC41IDM1cS01NSAzMzcgLTU1IDM1MXYyNTB2NnEwIDE2IDEgMjMuNXQ2LjUgMTQgdDE3LjUgNi41aDIwMGw2NzUgMjUwdi04NTB6TTAgNzUwdi0yNTBxLTQgMCAtMTEgMC41dC0yNCA2dC0zMCAxNXQtMjQgMzB0LTExIDQ4LjV2NTBxMCAyNiAxMC41IDQ2dDI1IDMwdDI5IDE2dDI1LjUgN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTIzOyIgZD0iTTU1MyAxMjAwaDk0cTIwIDAgMjkgLTEwLjV0MyAtMjkuNWwtMTggLTM3cTgzIC0xOSAxNDQgLTgyLjV0NzYgLTE0MC41bDYzIC0zMjdsMTE4IC0xNzNoMTdxMTkgMCAzMyAtMTQuNXQxNCAtMzV0LTEzIC00MC41dC0zMSAtMjdxLTggLTQgLTIzIC05LjV0LTY1IC0xOS41dC0xMDMgLTI1dC0xMzIuNSAtMjB0LTE1OC41IC05cS01NyAwIC0xMTUgNXQtMTA0IDEydC04OC41IDE1LjV0LTczLjUgMTcuNXQtNTQuNSAxNnQtMzUuNSAxMmwtMTEgNCBxLTE4IDggLTMxIDI4dC0xMyA0MC41dDE0IDM1dDMzIDE0LjVoMTdsMTE4IDE3M2w2MyAzMjdxMTUgNzcgNzYgMTQwdDE0NCA4M2wtMTggMzJxLTYgMTkgMy41IDMydDI4LjUgMTN6TTQ5OCAxMTBxNTAgLTYgMTAyIC02cTUzIDAgMTAyIDZxLTEyIC00OSAtMzkuNSAtNzkuNXQtNjIuNSAtMzAuNXQtNjMgMzAuNXQtMzkgNzkuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTI0OyIgZD0iTTgwMCA5NDZsMjI0IDc4bC03OCAtMjI0bDIzNCAtNDVsLTE4MCAtMTU1bDE4MCAtMTU1bC0yMzQgLTQ1bDc4IC0yMjRsLTIyNCA3OGwtNDUgLTIzNGwtMTU1IDE4MGwtMTU1IC0xODBsLTQ1IDIzNGwtMjI0IC03OGw3OCAyMjRsLTIzNCA0NWwxODAgMTU1bC0xODAgMTU1bDIzNCA0NWwtNzggMjI0bDIyNCAtNzhsNDUgMjM0bDE1NSAtMTgwbDE1NSAxODB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyNTsiIGQ9Ik02NTAgMTIwMGg1MHE0MCAwIDcwIC00MC41dDMwIC04NC41di0xNTBsLTI4IC0xMjVoMzI4cTQwIDAgNzAgLTQwLjV0MzAgLTg0LjV2LTEwMHEwIC00NSAtMjkgLTc0bC0yMzggLTM0NHEtMTYgLTI0IC0zOCAtNDAuNXQtNDUgLTE2LjVoLTI1MHEtNyAwIC00MiAyNXQtNjYgNTBsLTMxIDI1aC02MXEtNDUgMCAtNzIuNSAxOHQtMjcuNSA1N3Y0MDBxMCAzNiAyMCA2M2wxNDUgMTk2bDk2IDE5OHExMyAyOCAzNy41IDQ4dDUxLjUgMjB6IE02NTAgMTEwMGwtMTAwIC0yMTJsLTE1MCAtMjEzdi0zNzVoMTAwbDEzNiAtMTAwaDIxNGwyNTAgMzc1djEyNWgtNDUwbDUwIDIyNXYxNzVoLTUwek01MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTI2OyIgZD0iTTYwMCAxMTAwaDI1MHEyMyAwIDQ1IC0xNi41dDM4IC00MC41bDIzOCAtMzQ0cTI5IC0yOSAyOSAtNzR2LTEwMHEwIC00NCAtMzAgLTg0LjV0LTcwIC00MC41aC0zMjhxMjggLTExOCAyOCAtMTI1di0xNTBxMCAtNDQgLTMwIC04NC41dC03MCAtNDAuNWgtNTBxLTI3IDAgLTUxLjUgMjB0LTM3LjUgNDhsLTk2IDE5OGwtMTQ1IDE5NnEtMjAgMjcgLTIwIDYzdjQwMHEwIDM5IDI3LjUgNTd0NzIuNSAxOGg2MXExMjQgMTAwIDEzOSAxMDB6IE01MCAxMDAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djUwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTYzNiAxMDAwbC0xMzYgLTEwMGgtMTAwdi0zNzVsMTUwIC0yMTNsMTAwIC0yMTJoNTB2MTc1bC01MCAyMjVoNDUwdjEyNWwtMjUwIDM3NWgtMjE0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjc7IiBkPSJNMzU2IDg3M2wzNjMgMjMwcTMxIDE2IDUzIC02bDExMCAtMTEycTEzIC0xMyAxMy41IC0zMnQtMTEuNSAtMzRsLTg0IC0xMjFoMzAycTg0IDAgMTM4IC0zOHQ1NCAtMTEwdC01NSAtMTExdC0xMzkgLTM5aC0xMDZsLTEzMSAtMzM5cS02IC0yMSAtMTkuNSAtNDF0LTI4LjUgLTIwaC0zNDJxLTcgMCAtOTAgODF0LTgzIDk0djUyNXEwIDE3IDE0IDM1LjV0MjggMjguNXpNNDAwIDc5MnYtNTAzbDEwMCAtODloMjkzbDEzMSAzMzkgcTYgMjEgMTkuNSA0MXQyOC41IDIwaDIwM3EyMSAwIDMwLjUgMjV0MC41IDUwdC0zMSAyNWgtNDU2aC03aC02aC01LjV0LTYgMC41dC01IDEuNXQtNSAydC00IDIuNXQtNCA0dC0yLjUgNC41cS0xMiAyNSA1IDQ3bDE0NiAxODNsLTg2IDgzek01MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NTAwIHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyODsiIGQ9Ik00NzUgMTEwM2wzNjYgLTIzMHEyIC0xIDYgLTMuNXQxNCAtMTAuNXQxOCAtMTYuNXQxNC41IC0yMHQ2LjUgLTIyLjV2LTUyNXEwIC0xMyAtODYgLTk0dC05MyAtODFoLTM0MnEtMTUgMCAtMjguNSAyMHQtMTkuNSA0MWwtMTMxIDMzOWgtMTA2cS04NSAwIC0xMzkuNSAzOXQtNTQuNSAxMTF0NTQgMTEwdDEzOCAzOGgzMDJsLTg1IDEyMXEtMTEgMTUgLTEwLjUgMzR0MTMuNSAzMmwxMTAgMTEycTIyIDIyIDUzIDZ6TTM3MCA5NDVsMTQ2IC0xODMgcTE3IC0yMiA1IC00N3EtMiAtMiAtMy41IC00LjV0LTQgLTR0LTQgLTIuNXQtNSAtMnQtNSAtMS41dC02IC0wLjVoLTZoLTYuNWgtNmgtNDc1di0xMDBoMjIxcTE1IDAgMjkgLTIwdDIwIC00MWwxMzAgLTMzOWgyOTRsMTA2IDg5djUwM2wtMzQyIDIzNnpNMTA1MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjUgdjUwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyOTsiIGQ9Ik01NTAgMTI5NHE3MiAwIDExMSAtNTV0MzkgLTEzOXYtMTA2bDMzOSAtMTMxcTIxIC02IDQxIC0xOS41dDIwIC0yOC41di0zNDJxMCAtNyAtODEgLTkwdC05NCAtODNoLTUyNXEtMTcgMCAtMzUuNSAxNHQtMjguNSAyOGwtOSAxNGwtMjMwIDM2M3EtMTYgMzEgNiA1M2wxMTIgMTEwcTEzIDEzIDMyIDEzLjV0MzQgLTExLjVsMTIxIC04NHYzMDJxMCA4NCAzOCAxMzh0MTEwIDU0ek02MDAgOTcydjIwM3EwIDIxIC0yNSAzMC41dC01MCAwLjUgdC0yNSAtMzF2LTQ1NnYtN3YtNnYtNS41dC0wLjUgLTZ0LTEuNSAtNXQtMiAtNXQtMi41IC00dC00IC00dC00LjUgLTIuNXEtMjUgLTEyIC00NyA1bC0xODMgMTQ2bC04MyAtODZsMjM2IC0zMzloNTAzbDg5IDEwMHYyOTNsLTMzOSAxMzFxLTIxIDYgLTQxIDE5LjV0LTIwIDI4LjV6TTQ1MCAyMDBoNTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTUwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMDsiIGQ9Ik0zNTAgMTEwMGg1MDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtNTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDBxMCAtMjEgMTQuNSAtMzUuNXQzNS41IC0xNC41ek02MDAgMzA2di0xMDZxMCAtODQgLTM5IC0xMzl0LTExMSAtNTV0LTExMCA1NHQtMzggMTM4djMwMmwtMTIxIC04NHEtMTUgLTEyIC0zNCAtMTEuNXQtMzIgMTMuNWwtMTEyIDExMCBxLTIyIDIyIC02IDUzbDIzMCAzNjNxMSAyIDMuNSA2dDEwLjUgMTMuNXQxNi41IDE3dDIwIDEzLjV0MjIuNSA2aDUyNXExMyAwIDk0IC04M3Q4MSAtOTB2LTM0MnEwIC0xNSAtMjAgLTI4LjV0LTQxIC0xOS41ek0zMDggOTAwbC0yMzYgLTMzOWw4MyAtODZsMTgzIDE0NnEyMiAxNyA0NyA1cTIgLTEgNC41IC0yLjV0NCAtNHQyLjUgLTR0MiAtNXQxLjUgLTV0MC41IC02di01LjV2LTZ2LTd2LTQ1NnEwIC0yMiAyNSAtMzF0NTAgMC41dDI1IDMwLjUgdjIwM3EwIDE1IDIwIDI4LjV0NDEgMTkuNWwzMzkgMTMxdjI5M2wtODkgMTAwaC01MDN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMTsiIGQ9Ik02MDAgMTE3OHExMTggMCAyMjUgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNXQtNDUuNSAtMjI1dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjUgLTQ1LjV0LTIyNSA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjV0NDUuNSAyMjV0MTIzIDE4NC41dDE4NC41IDEyM3QyMjUgNDUuNXpNOTE0IDYzMmwtMjc1IDIyM3EtMTYgMTMgLTI3LjUgOHQtMTEuNSAtMjZ2LTEzN2gtMjc1IHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTE1MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDI3NXYtMTM3cTAgLTIxIDExLjUgLTI2dDI3LjUgOGwyNzUgMjIzcTE2IDEzIDE2IDMydC0xNiAzMnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTMyOyIgZD0iTTYwMCAxMTc4cTExOCAwIDIyNSAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI1dC00NS41IC0yMjV0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNSAtNDUuNXQtMjI1IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNXQ0NS41IDIyNXQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNSA0NS41ek01NjEgODU1bC0yNzUgLTIyM3EtMTYgLTEzIC0xNiAtMzJ0MTYgLTMybDI3NSAtMjIzcTE2IC0xMyAyNy41IC04IHQxMS41IDI2djEzN2gyNzVxMTAgMCAxNy41IDcuNXQ3LjUgMTcuNXYxNTBxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41aC0yNzV2MTM3cTAgMjEgLTExLjUgMjZ0LTI3LjUgLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMzsiIGQ9Ik02MDAgMTE3OHExMTggMCAyMjUgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNXQtNDUuNSAtMjI1dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjUgLTQ1LjV0LTIyNSA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjV0NDUuNSAyMjV0MTIzIDE4NC41dDE4NC41IDEyM3QyMjUgNDUuNXpNODU1IDYzOWwtMjIzIDI3NXEtMTMgMTYgLTMyIDE2dC0zMiAtMTZsLTIyMyAtMjc1cS0xMyAtMTYgLTggLTI3LjUgdDI2IC0xMS41aDEzN3YtMjc1cTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2Mjc1aDEzN3EyMSAwIDI2IDExLjV0LTggMjcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTM0OyIgZD0iTTYwMCAxMTc4cTExOCAwIDIyNSAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI1dC00NS41IC0yMjV0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNSAtNDUuNXQtMjI1IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNXQ0NS41IDIyNXQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNSA0NS41ek02NzUgOTAwaC0xNTBxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di0yNzVoLTEzN3EtMjEgMCAtMjYgLTExLjUgdDggLTI3LjVsMjIzIC0yNzVxMTMgLTE2IDMyIC0xNnQzMiAxNmwyMjMgMjc1cTEzIDE2IDggMjcuNXQtMjYgMTEuNWgtMTM3djI3NXEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzNTsiIGQ9Ik02MDAgMTE3NnExMTYgMCAyMjIuNSAtNDZ0MTg0IC0xMjMuNXQxMjMuNSAtMTg0dDQ2IC0yMjIuNXQtNDYgLTIyMi41dC0xMjMuNSAtMTg0dC0xODQgLTEyMy41dC0yMjIuNSAtNDZ0LTIyMi41IDQ2dC0xODQgMTIzLjV0LTEyMy41IDE4NHQtNDYgMjIyLjV0NDYgMjIyLjV0MTIzLjUgMTg0dDE4NCAxMjMuNXQyMjIuNSA0NnpNNjI3IDExMDFxLTE1IC0xMiAtMzYuNSAtMjAuNXQtMzUuNSAtMTJ0LTQzIC04dC0zOSAtNi41IHEtMTUgLTMgLTQ1LjUgMHQtNDUuNSAtMnEtMjAgLTcgLTUxLjUgLTI2LjV0LTM0LjUgLTM0LjVxLTMgLTExIDYuNSAtMjIuNXQ4LjUgLTE4LjVxLTMgLTM0IC0yNy41IC05MXQtMjkuNSAtNzlxLTkgLTM0IDUgLTkzdDggLTg3cTAgLTkgMTcgLTQ0LjV0MTYgLTU5LjVxMTIgMCAyMyAtNXQyMy41IC0xNXQxOS41IC0xNHExNiAtOCAzMyAtMTV0NDAuNSAtMTV0MzQuNSAtMTJxMjEgLTkgNTIuNSAtMzJ0NjAgLTM4dDU3LjUgLTExIHE3IC0xNSAtMyAtMzR0LTIyLjUgLTQwdC05LjUgLTM4cTEzIC0yMSAyMyAtMzQuNXQyNy41IC0yNy41dDM2LjUgLTE4cTAgLTcgLTMuNSAtMTZ0LTMuNSAtMTR0NSAtMTdxMTA0IC0yIDIyMSAxMTJxMzAgMjkgNDYuNSA0N3QzNC41IDQ5dDIxIDYzcS0xMyA4IC0zNyA4LjV0LTM2IDcuNXEtMTUgNyAtNDkuNSAxNXQtNTEuNSAxOXEtMTggMCAtNDEgLTAuNXQtNDMgLTEuNXQtNDIgLTYuNXQtMzggLTE2LjVxLTUxIC0zNSAtNjYgLTEyIHEtNCAxIC0zLjUgMjUuNXQwLjUgMjUuNXEtNiAxMyAtMjYuNSAxNy41dC0yNC41IDYuNXExIDE1IC0wLjUgMzAuNXQtNyAyOHQtMTguNSAxMS41dC0zMSAtMjFxLTIzIC0yNSAtNDIgNHEtMTkgMjggLTggNThxNiAxNiAyMiAyMnE2IC0xIDI2IC0xLjV0MzMuNSAtNHQxOS41IC0xMy41cTcgLTEyIDE4IC0yNHQyMS41IC0yMC41dDIwIC0xNXQxNS41IC0xMC41bDUgLTNxMiAxMiA3LjUgMzAuNXQ4IDM0LjV0LTAuNSAzMnEtMyAxOCAzLjUgMjkgdDE4IDIyLjV0MTUuNSAyNC41cTYgMTQgMTAuNSAzNXQ4IDMxdDE1LjUgMjIuNXQzNCAyMi41cS02IDE4IDEwIDM2cTggMCAyNCAtMS41dDI0LjUgLTEuNXQyMCA0LjV0MjAuNSAxNS41cS0xMCAyMyAtMzEgNDIuNXQtMzcuNSAyOS41dC00OSAyN3QtNDMuNSAyM3EwIDEgMiA4dDMgMTEuNXQxLjUgMTAuNXQtMSA5LjV0LTQuNSA0LjVxMzEgLTEzIDU4LjUgLTE0LjV0MzguNSAyLjVsMTIgNXE1IDI4IC05LjUgNDZ0LTM2LjUgMjR0LTUwIDE1IHQtNDEgMjBxLTE4IC00IC0zNyAwek02MTMgOTk0cTAgLTE3IDggLTQydDE3IC00NXQ5IC0yM3EtOCAxIC0zOS41IDUuNXQtNTIuNSAxMHQtMzcgMTYuNXEzIDExIDE2IDI5LjV0MTYgMjUuNXExMCAtMTAgMTkgLTEwdDE0IDZ0MTMuNSAxNC41dDE2LjUgMTIuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTM2OyIgZD0iTTc1NiAxMTU3cTE2NCA5MiAzMDYgLTlsLTI1OSAtMTM4bDE0NSAtMjMybDI1MSAxMjZxNiAtODkgLTM0IC0xNTYuNXQtMTE3IC0xMTAuNXEtNjAgLTM0IC0xMjcgLTM5LjV0LTEyNiAxNi41bC01OTYgLTU5NnEtMTUgLTE2IC0zNi41IC0xNnQtMzYuNSAxNmwtMTExIDExMHEtMTUgMTUgLTE1IDM2LjV0MTUgMzcuNWw2MDAgNTk5cS0zNCAxMDEgNS41IDIwMS41dDEzNS41IDE1NC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzc7IiBob3Jpei1hZHYteD0iMTIyMCIgZD0iTTEwMCAxMTk2aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNMTEwMCAxMDk2aC0yMDB2LTEwMGgyMDB2MTAwek0xMDAgNzk2aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMCBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djEwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTExMDAgNjk2aC01MDB2LTEwMGg1MDB2MTAwek0xMDAgMzk2aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNMTEwMCAyOTZoLTMwMHYtMTAwaDMwMHYxMDB6ICIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzg7IiBkPSJNMTUwIDEyMDBoOTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41dC0xNC41IC0zNS41dC0zNS41IC0xNC41aC05MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTcwMCA1MDB2LTMwMGwtMjAwIC0yMDB2NTAwbC0zNTAgNTAwaDkwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTM5OyIgZD0iTTUwMCAxMjAwaDIwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtMTAwaDMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNDAwaC01MDB2MTAwaC0yMDB2LTEwMGgtNTAwdjQwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMzAwdjEwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTUwMCAxMTAwdi0xMDBoMjAwdjEwMGgtMjAwek0xMjAwIDQwMHYtMjAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC0xMDAwIHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2MjAwaDEyMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MDsiIGQ9Ik01MCAxMjAwaDMwMHEyMSAwIDI1IC0xMC41dC0xMCAtMjQuNWwtOTQgLTk0bDE5OSAtMTk5cTcgLTggNyAtMTh0LTcgLTE4bC0xMDYgLTEwNnEtOCAtNyAtMTggLTd0LTE4IDdsLTE5OSAxOTlsLTk0IC05NHEtMTQgLTE0IC0yNC41IC0xMHQtMTAuNSAyNXYzMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04NTAgMTIwMGgzMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTMwMHEwIC0yMSAtMTAuNSAtMjV0LTI0LjUgMTBsLTk0IDk0IGwtMTk5IC0xOTlxLTggLTcgLTE4IC03dC0xOCA3bC0xMDYgMTA2cS03IDggLTcgMTh0NyAxOGwxOTkgMTk5bC05NCA5NHEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNXpNMzY0IDQ3MGwxMDYgLTEwNnE3IC04IDcgLTE4dC03IC0xOGwtMTk5IC0xOTlsOTQgLTk0cTE0IC0xNCAxMCAtMjQuNXQtMjUgLTEwLjVoLTMwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MzAwcTAgMjEgMTAuNSAyNXQyNC41IC0xMGw5NCAtOTRsMTk5IDE5OSBxOCA3IDE4IDd0MTggLTd6TTEwNzEgMjcxbDk0IDk0cTE0IDE0IDI0LjUgMTB0MTAuNSAtMjV2LTMwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzAwcS0yMSAwIC0yNSAxMC41dDEwIDI0LjVsOTQgOTRsLTE5OSAxOTlxLTcgOCAtNyAxOHQ3IDE4bDEwNiAxMDZxOCA3IDE4IDd0MTggLTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MTsiIGQ9Ik01OTYgMTE5MnExMjEgMCAyMzEuNSAtNDcuNXQxOTAgLTEyN3QxMjcgLTE5MHQ0Ny41IC0yMzEuNXQtNDcuNSAtMjMxLjV0LTEyNyAtMTkwLjV0LTE5MCAtMTI3dC0yMzEuNSAtNDd0LTIzMS41IDQ3dC0xOTAuNSAxMjd0LTEyNyAxOTAuNXQtNDcgMjMxLjV0NDcgMjMxLjV0MTI3IDE5MHQxOTAuNSAxMjd0MjMxLjUgNDcuNXpNNTk2IDEwMTBxLTExMiAwIC0yMDcuNSAtNTUuNXQtMTUxIC0xNTF0LTU1LjUgLTIwNy41dDU1LjUgLTIwNy41IHQxNTEgLTE1MXQyMDcuNSAtNTUuNXQyMDcuNSA1NS41dDE1MSAxNTF0NTUuNSAyMDcuNXQtNTUuNSAyMDcuNXQtMTUxIDE1MXQtMjA3LjUgNTUuNXpNNDU0LjUgOTA1cTIyLjUgMCAzOC41IC0xNnQxNiAtMzguNXQtMTYgLTM5dC0zOC41IC0xNi41dC0zOC41IDE2LjV0LTE2IDM5dDE2IDM4LjV0MzguNSAxNnpNNzU0LjUgOTA1cTIyLjUgMCAzOC41IC0xNnQxNiAtMzguNXQtMTYgLTM5dC0zOCAtMTYuNXEtMTQgMCAtMjkgMTBsLTU1IC0xNDUgcTE3IC0yMyAxNyAtNTFxMCAtMzYgLTI1LjUgLTYxLjV0LTYxLjUgLTI1LjV0LTYxLjUgMjUuNXQtMjUuNSA2MS41cTAgMzIgMjAuNSA1Ni41dDUxLjUgMjkuNWwxMjIgMTI2bDEgMXEtOSAxNCAtOSAyOHEwIDIzIDE2IDM5dDM4LjUgMTZ6TTM0NS41IDcwOXEyMi41IDAgMzguNSAtMTZ0MTYgLTM4LjV0LTE2IC0zOC41dC0zOC41IC0xNnQtMzguNSAxNnQtMTYgMzguNXQxNiAzOC41dDM4LjUgMTZ6TTg1NC41IDcwOXEyMi41IDAgMzguNSAtMTYgdDE2IC0zOC41dC0xNiAtMzguNXQtMzguNSAtMTZ0LTM4LjUgMTZ0LTE2IDM4LjV0MTYgMzguNXQzOC41IDE2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDI7IiBkPSJNNTQ2IDE3M2w0NjkgNDcwcTkxIDkxIDk5IDE5MnE3IDk4IC01MiAxNzUuNXQtMTU0IDk0LjVxLTIyIDQgLTQ3IDRxLTM0IDAgLTY2LjUgLTEwdC01Ni41IC0yM3QtNTUuNSAtMzh0LTQ4IC00MS41dC00OC41IC00Ny41cS0zNzYgLTM3NSAtMzkxIC0zOTBxLTMwIC0yNyAtNDUgLTQxLjV0LTM3LjUgLTQxdC0zMiAtNDYuNXQtMTYgLTQ3LjV0LTEuNSAtNTYuNXE5IC02MiA1My41IC05NXQ5OS41IC0zM3E3NCAwIDEyNSA1MWw1NDggNTQ4IHEzNiAzNiAyMCA3NXEtNyAxNiAtMjEuNSAyNnQtMzIuNSAxMHEtMjYgMCAtNTAgLTIzcS0xMyAtMTIgLTM5IC0zOGwtMzQxIC0zMzhxLTE1IC0xNSAtMzUuNSAtMTUuNXQtMzQuNSAxMy41dC0xNCAzNC41dDE0IDM0LjVxMzI3IDMzMyAzNjEgMzY3cTM1IDM1IDY3LjUgNTEuNXQ3OC41IDE2LjVxMTQgMCAyOSAtMXE0NCAtOCA3NC41IC0zNS41dDQzLjUgLTY4LjVxMTQgLTQ3IDIgLTk2LjV0LTQ3IC04NC41cS0xMiAtMTEgLTMyIC0zMiB0LTc5LjUgLTgxdC0xMTQuNSAtMTE1dC0xMjQuNSAtMTIzLjV0LTEyMyAtMTE5LjV0LTk2LjUgLTg5dC01NyAtNDVxLTU2IC0yNyAtMTIwIC0yN3EtNzAgMCAtMTI5IDMydC05MyA4OXEtNDggNzggLTM1IDE3M3Q4MSAxNjNsNTExIDUxMXE3MSA3MiAxMTEgOTZxOTEgNTUgMTk4IDU1cTgwIDAgMTUyIC0zM3E3OCAtMzYgMTI5LjUgLTEwM3Q2Ni41IC0xNTRxMTcgLTkzIC0xMSAtMTgzLjV0LTk0IC0xNTYuNWwtNDgyIC00NzYgcS0xNSAtMTUgLTM2IC0xNnQtMzcgMTR0LTE3LjUgMzR0MTQuNSAzNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTQzOyIgZD0iTTY0OSA5NDlxNDggNjggMTA5LjUgMTA0dDEyMS41IDM4LjV0MTE4LjUgLTIwdDEwMi41IC02NHQ3MSAtMTAwLjV0MjcgLTEyM3EwIC01NyAtMzMuNSAtMTE3LjV0LTk0IC0xMjQuNXQtMTI2LjUgLTEyNy41dC0xNTAgLTE1Mi41dC0xNDYgLTE3NHEtNjIgODUgLTE0NS41IDE3NHQtMTUwIDE1Mi41dC0xMjYuNSAxMjcuNXQtOTMuNSAxMjQuNXQtMzMuNSAxMTcuNXEwIDY0IDI4IDEyM3Q3MyAxMDAuNXQxMDQgNjR0MTE5IDIwIHQxMjAuNSAtMzguNXQxMDQuNSAtMTA0ek04OTYgOTcycS0zMyAwIC02NC41IC0xOXQtNTYuNSAtNDZ0LTQ3LjUgLTUzLjV0LTQzLjUgLTQ1LjV0LTM3LjUgLTE5dC0zNiAxOXQtNDAgNDUuNXQtNDMgNTMuNXQtNTQgNDZ0LTY1LjUgMTlxLTY3IDAgLTEyMi41IC01NS41dC01NS41IC0xMzIuNXEwIC0yMyAxMy41IC01MXQ0NiAtNjV0NTcuNSAtNjN0NzYgLTc1bDIyIC0yMnExNSAtMTQgNDQgLTQ0dDUwLjUgLTUxdDQ2IC00NHQ0MSAtMzV0MjMgLTEyIHQyMy41IDEydDQyLjUgMzZ0NDYgNDR0NTIuNSA1MnQ0NCA0M3E0IDQgMTIgMTNxNDMgNDEgNjMuNSA2MnQ1MiA1NXQ0NiA1NXQyNiA0NnQxMS41IDQ0cTAgNzkgLTUzIDEzMy41dC0xMjAgNTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTQ0OyIgZD0iTTc3Ni41IDEyMTRxOTMuNSAwIDE1OS41IC02NmwxNDEgLTE0MXE2NiAtNjYgNjYgLTE2MHEwIC00MiAtMjggLTk1LjV0LTYyIC04Ny41bC0yOSAtMjlxLTMxIDUzIC03NyA5OWwtMTggMThsOTUgOTVsLTI0NyAyNDhsLTM4OSAtMzg5bDIxMiAtMjEybC0xMDUgLTEwNmwtMTkgMThsLTE0MSAxNDFxLTY2IDY2IC02NiAxNTl0NjYgMTU5bDI4MyAyODNxNjUgNjYgMTU4LjUgNjZ6TTYwMCA3MDZsMTA1IDEwNXExMCAtOCAxOSAtMTdsMTQxIC0xNDEgcTY2IC02NiA2NiAtMTU5dC02NiAtMTU5bC0yODMgLTI4M3EtNjYgLTY2IC0xNTkgLTY2dC0xNTkgNjZsLTE0MSAxNDFxLTY2IDY2IC02NiAxNTkuNXQ2NiAxNTkuNWw1NSA1NXEyOSAtNTUgNzUgLTEwMmwxOCAtMTdsLTk1IC05NWwyNDcgLTI0OGwzODkgMzg5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDU7IiBkPSJNNjAzIDEyMDBxODUgMCAxNjIgLTE1dDEyNyAtMzh0NzkgLTQ4dDI5IC00NnYtOTUzcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC02MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djk1M3EwIDIxIDMwIDQ2LjV0ODEgNDh0MTI5IDM3LjV0MTYzIDE1ek0zMDAgMTAwMHYtNzAwaDYwMHY3MDBoLTYwMHpNNjAwIDI1NHEtNDMgMCAtNzMuNSAtMzAuNXQtMzAuNSAtNzMuNXQzMC41IC03My41dDczLjUgLTMwLjV0NzMuNSAzMC41IHQzMC41IDczLjV0LTMwLjUgNzMuNXQtNzMuNSAzMC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDY7IiBkPSJNOTAyIDExODVsMjgzIC0yODJxMTUgLTE1IDE1IC0zNnQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNXQtMzUgMTVsLTM2IDM1bC0yNzkgLTI2N3YtMzAwbC0yMTIgMjEwbC0zMDggLTMwN2wtMjgwIC0yMDNsMjAzIDI4MGwzMDcgMzA4bC0yMTAgMjEyaDMwMGwyNjcgMjc5bC0zNSAzNnEtMTUgMTQgLTE1IDM1dDE0LjUgMzUuNXQzNS41IDE0LjV0MzUgLTE1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDg7IiBkPSJNNzAwIDEyNDh2LTc4cTM4IC01IDcyLjUgLTE0LjV0NzUuNSAtMzEuNXQ3MSAtNTMuNXQ1MiAtODR0MjQgLTExOC41aC0xNTlxLTQgMzYgLTEwLjUgNTl0LTIxIDQ1dC00MCAzNS41dC02NC41IDIwLjV2LTMwN2w2NCAtMTNxMzQgLTcgNjQgLTE2LjV0NzAgLTMydDY3LjUgLTUyLjV0NDcuNSAtODB0MjAgLTExMnEwIC0xMzkgLTg5IC0yMjR0LTI0NCAtOTd2LTc3aC0xMDB2NzlxLTE1MCAxNiAtMjM3IDEwM3EtNDAgNDAgLTUyLjUgOTMuNSB0LTE1LjUgMTM5LjVoMTM5cTUgLTc3IDQ4LjUgLTEyNnQxMTcuNSAtNjV2MzM1bC0yNyA4cS00NiAxNCAtNzkgMjYuNXQtNzIgMzZ0LTYzIDUydC00MCA3Mi41dC0xNiA5OHEwIDcwIDI1IDEyNnQ2Ny41IDkydDk0LjUgNTd0MTEwIDI3djc3aDEwMHpNNjAwIDc1NHYyNzRxLTI5IC00IC01MCAtMTF0LTQyIC0yMS41dC0zMS41IC00MS41dC0xMC41IC02NXEwIC0yOSA3IC01MC41dDE2LjUgLTM0dDI4LjUgLTIyLjV0MzEuNSAtMTR0MzcuNSAtMTAgcTkgLTMgMTMgLTR6TTcwMCA1NDd2LTMxMHEyMiAyIDQyLjUgNi41dDQ1IDE1LjV0NDEuNSAyN3QyOSA0MnQxMiA1OS41dC0xMi41IDU5LjV0LTM4IDQ0LjV0LTUzIDMxdC02Ni41IDI0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0OTsiIGQ9Ik01NjEgMTE5N3E4NCAwIDE2MC41IC00MHQxMjMuNSAtMTA5LjV0NDcgLTE0Ny41aC0xNTNxMCA0MCAtMTkuNSA3MS41dC00OS41IDQ4LjV0LTU5LjUgMjZ0LTU1LjUgOXEtMzcgMCAtNzkgLTE0LjV0LTYyIC0zNS41cS00MSAtNDQgLTQxIC0xMDFxMCAtMjYgMTMuNSAtNjN0MjYuNSAtNjF0MzcgLTY2cTYgLTkgOSAtMTRoMjQxdi0xMDBoLTE5N3E4IC01MCAtMi41IC0xMTV0LTMxLjUgLTk1cS00NSAtNjIgLTk5IC0xMTIgcTM0IDEwIDgzIDE3LjV0NzEgNy41cTMyIDEgMTAyIC0xNnQxMDQgLTE3cTgzIDAgMTM2IDMwbDUwIC0xNDdxLTMxIC0xOSAtNTggLTMwLjV0LTU1IC0xNS41dC00MiAtNC41dC00NiAtMC41cS0yMyAwIC03NiAxN3QtMTExIDMyLjV0LTk2IDExLjVxLTM5IC0zIC04MiAtMTZ0LTY3IC0yNWwtMjMgLTExbC01NSAxNDVxNCAzIDE2IDExdDE1LjUgMTAuNXQxMyA5dDE1LjUgMTJ0MTQuNSAxNHQxNy41IDE4LjVxNDggNTUgNTQgMTI2LjUgdC0zMCAxNDIuNWgtMjIxdjEwMGgxNjZxLTIzIDQ3IC00NCAxMDRxLTcgMjAgLTEyIDQxLjV0LTYgNTUuNXQ2IDY2LjV0MjkuNSA3MC41dDU4LjUgNzFxOTcgODggMjYzIDg4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTA7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTkzNSAxMTg0bDIzMCAtMjQ5cTE0IC0xNCAxMCAtMjQuNXQtMjUgLTEwLjVoLTE1MHYtOTAwaC0yMDB2OTAwaC0xNTBxLTIxIDAgLTI1IDEwLjV0MTAgMjQuNWwyMzAgMjQ5cTE0IDE1IDM1IDE1dDM1IC0xNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTUxOyIgZD0iTTEwMDAgNzAwaC0xMDB2MTAwaC0xMDB2LTEwMGgtMTAwdjUwMGgzMDB2LTUwMHpNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTgwMSAxMTAwdi0yMDBoMTAwdjIwMGgtMTAwek0xMDAwIDM1MGwtMjAwIC0yNTBoMjAwdi0xMDBoLTMwMHYxNTBsMjAwIDI1MGgtMjAwdjEwMGgzMDB2LTE1MHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1MjsiIGQ9Ik00MDAgMzAwaDE1MHEyMSAwIDI1IC0xMXQtMTAgLTI1bC0yMzAgLTI1MHEtMTQgLTE1IC0zNSAtMTV0LTM1IDE1bC0yMzAgMjUwcS0xNCAxNCAtMTAgMjV0MjUgMTFoMTUwdjkwMGgyMDB2LTkwMHpNMTAwMCAxMDUwbC0yMDAgLTI1MGgyMDB2LTEwMGgtMzAwdjE1MGwyMDAgMjUwaC0yMDB2MTAwaDMwMHYtMTUwek0xMDAwIDBoLTEwMHYxMDBoLTEwMHYtMTAwaC0xMDB2NTAwaDMwMHYtNTAwek04MDEgNDAwdi0yMDBoMTAwdjIwMGgtMTAweiAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTUzOyIgZD0iTTQwMCAzMDBoMTUwcTIxIDAgMjUgLTExdC0xMCAtMjVsLTIzMCAtMjUwcS0xNCAtMTUgLTM1IC0xNXQtMzUgMTVsLTIzMCAyNTBxLTE0IDE0IC0xMCAyNXQyNSAxMWgxNTB2OTAwaDIwMHYtOTAwek0xMDAwIDcwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHpNMTEwMCAwaC0xMDB2MTAwaC0yMDB2NDAwaDMwMHYtNTAwek05MDEgNDAwdi0yMDBoMTAwdjIwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTQ7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTExMDAgNzAwaC0xMDB2MTAwaC0yMDB2NDAwaDMwMHYtNTAwek05MDEgMTEwMHYtMjAwaDEwMHYyMDBoLTEwMHpNMTAwMCAwaC0xMDB2NDAwaC0xMDB2MTAwaDIwMHYtNTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTU7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTkwMCAxMDAwaC0yMDB2MjAwaDIwMHYtMjAwek0xMDAwIDcwMGgtMzAwdjIwMGgzMDB2LTIwMHpNMTEwMCA0MDBoLTQwMHYyMDBoNDAwdi0yMDB6TTEyMDAgMTAwaC01MDB2MjAwaDUwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTY7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTEyMDAgMTAwMGgtNTAwdjIwMGg1MDB2LTIwMHpNMTEwMCA3MDBoLTQwMHYyMDBoNDAwdi0yMDB6TTEwMDAgNDAwaC0zMDB2MjAwaDMwMHYtMjAwek05MDAgMTAwaC0yMDB2MjAwaDIwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTc7IiBkPSJNMzUwIDExMDBoNDAwcTE2MiAwIDI1NiAtOTMuNXQ5NCAtMjU2LjV2LTQwMHEwIC0xNjUgLTkzLjUgLTI1Ny41dC0yNTYuNSAtOTIuNWgtNDAwcS0xNjUgMCAtMjU3LjUgOTIuNXQtOTIuNSAyNTcuNXY0MDBxMCAxNjUgOTIuNSAyNTcuNXQyNTcuNSA5Mi41ek04MDAgOTAwaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNSB2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTg7IiBkPSJNMzUwIDExMDBoNDAwcTE2NSAwIDI1Ny41IC05Mi41dDkyLjUgLTI1Ny41di00MDBxMCAtMTY1IC05Mi41IC0yNTcuNXQtMjU3LjUgLTkyLjVoLTQwMHEtMTYzIDAgLTI1Ni41IDkyLjV0LTkzLjUgMjU3LjV2NDAwcTAgMTYzIDk0IDI1Ni41dDI1NiA5My41ek04MDAgOTAwaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNSB2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41ek00NDAgNzcwbDI1MyAtMTkwcTE3IC0xMiAxNyAtMzB0LTE3IC0zMGwtMjUzIC0xOTBxLTE2IC0xMiAtMjggLTYuNXQtMTIgMjYuNXY0MDBxMCAyMSAxMiAyNi41dDI4IC02LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1OTsiIGQ9Ik0zNTAgMTEwMGg0MDBxMTYzIDAgMjU2LjUgLTk0dDkzLjUgLTI1NnYtNDAwcTAgLTE2NSAtOTIuNSAtMjU3LjV0LTI1Ny41IC05Mi41aC00MDBxLTE2NSAwIC0yNTcuNSA5Mi41dC05Mi41IDI1Ny41djQwMHEwIDE2MyA5Mi41IDI1Ni41dDI1Ny41IDkzLjV6TTgwMCA5MDBoLTUwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNTAwcTAgLTQxIDI5LjUgLTcwLjV0NzAuNSAtMjkuNWg1MDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41IHY1MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjV6TTM1MCA3MDBoNDAwcTIxIDAgMjYuNSAtMTJ0LTYuNSAtMjhsLTE5MCAtMjUzcS0xMiAtMTcgLTMwIC0xN3QtMzAgMTdsLTE5MCAyNTNxLTEyIDE2IC02LjUgMjh0MjYuNSAxMnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTYwOyIgZD0iTTM1MCAxMTAwaDQwMHExNjUgMCAyNTcuNSAtOTIuNXQ5Mi41IC0yNTcuNXYtNDAwcTAgLTE2MyAtOTIuNSAtMjU2LjV0LTI1Ny41IC05My41aC00MDBxLTE2MyAwIC0yNTYuNSA5NHQtOTMuNSAyNTZ2NDAwcTAgMTY1IDkyLjUgMjU3LjV0MjU3LjUgOTIuNXpNODAwIDkwMGgtNTAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di01MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjUgdjUwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNXpNNTgwIDY5M2wxOTAgLTI1M3ExMiAtMTYgNi41IC0yOHQtMjYuNSAtMTJoLTQwMHEtMjEgMCAtMjYuNSAxMnQ2LjUgMjhsMTkwIDI1M3ExMiAxNyAzMCAxN3QzMCAtMTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2MTsiIGQ9Ik01NTAgMTEwMGg0MDBxMTY1IDAgMjU3LjUgLTkyLjV0OTIuNSAtMjU3LjV2LTQwMHEwIC0xNjUgLTkyLjUgLTI1Ny41dC0yNTcuNSAtOTIuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQ1MHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41aC00NTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0zMzggODY3bDMyNCAtMjg0cTE2IC0xNCAxNiAtMzN0LTE2IC0zM2wtMzI0IC0yODRxLTE2IC0xNCAtMjcgLTl0LTExIDI2djE1MGgtMjUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDI1MHYxNTBxMCAyMSAxMSAyNnQyNyAtOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTYyOyIgZD0iTTc5MyAxMTgybDkgLTlxOCAtMTAgNSAtMjdxLTMgLTExIC03OSAtMjI1LjV0LTc4IC0yMjEuNWwzMDAgMXEyNCAwIDMyLjUgLTE3LjV0LTUuNSAtMzUuNXEtMSAwIC0xMzMuNSAtMTU1dC0yNjcgLTMxMi41dC0xMzguNSAtMTYyLjVxLTEyIC0xNSAtMjYgLTE1aC05bC05IDhxLTkgMTEgLTQgMzJxMiA5IDQyIDEyMy41dDc5IDIyNC41bDM5IDExMGgtMzAycS0yMyAwIC0zMSAxOXEtMTAgMjEgNiA0MXE3NSA4NiAyMDkuNSAyMzcuNSB0MjI4IDI1N3Q5OC41IDExMS41cTkgMTYgMjUgMTZoOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTYzOyIgZD0iTTM1MCAxMTAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00NTBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNDUwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMHEtMTY1IDAgLTI1Ny41IDkyLjV0LTkyLjUgMjU3LjV2NDAwIHEwIDE2NSA5Mi41IDI1Ny41dDI1Ny41IDkyLjV6TTkzOCA4NjdsMzI0IC0yODRxMTYgLTE0IDE2IC0zM3QtMTYgLTMzbC0zMjQgLTI4NHEtMTYgLTE0IC0yNyAtOXQtMTEgMjZ2MTUwaC0yNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjUwdjE1MHEwIDIxIDExIDI2dDI3IC05eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjQ7IiBkPSJNNzUwIDEyMDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTEwLjUgLTI1dC0yNC41IDEwbC0xMDkgMTA5bC0zMTIgLTMxMnEtMTUgLTE1IC0zNS41IC0xNXQtMzUuNSAxNWwtMTQxIDE0MXEtMTUgMTUgLTE1IDM1LjV0MTUgMzUuNWwzMTIgMzEybC0xMDkgMTA5cS0xNCAxNCAtMTAgMjQuNXQyNSAxMC41ek00NTYgOTAwaC0xNTZxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMCBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2MTQ4bDIwMCAyMDB2LTI5OHEwIC0xNjUgLTkzLjUgLTI1Ny41dC0yNTYuNSAtOTIuNWgtNDAwcS0xNjUgMCAtMjU3LjUgOTIuNXQtOTIuNSAyNTcuNXY0MDBxMCAxNjUgOTIuNSAyNTcuNXQyNTcuNSA5Mi41aDMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTY1OyIgZD0iTTYwMCAxMTg2cTExOSAwIDIyNy41IC00Ni41dDE4NyAtMTI1dDEyNSAtMTg3dDQ2LjUgLTIyNy41dC00Ni41IC0yMjcuNXQtMTI1IC0xODd0LTE4NyAtMTI1dC0yMjcuNSAtNDYuNXQtMjI3LjUgNDYuNXQtMTg3IDEyNXQtMTI1IDE4N3QtNDYuNSAyMjcuNXQ0Ni41IDIyNy41dDEyNSAxODd0MTg3IDEyNXQyMjcuNSA0Ni41ek02MDAgMTAyMnEtMTE1IDAgLTIxMiAtNTYuNXQtMTUzLjUgLTE1My41dC01Ni41IC0yMTJ0NTYuNSAtMjEyIHQxNTMuNSAtMTUzLjV0MjEyIC01Ni41dDIxMiA1Ni41dDE1My41IDE1My41dDU2LjUgMjEydC01Ni41IDIxMnQtMTUzLjUgMTUzLjV0LTIxMiA1Ni41ek02MDAgNzk0cTgwIDAgMTM3IC01N3Q1NyAtMTM3dC01NyAtMTM3dC0xMzcgLTU3dC0xMzcgNTd0LTU3IDEzN3Q1NyAxMzd0MTM3IDU3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjY7IiBkPSJNNDUwIDEyMDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0zNTBoMjQ1cTIwIDAgMjUgLTExdC05IC0yNmwtMzgzIC00MjZxLTE0IC0xNSAtMzMuNSAtMTV0LTMyLjUgMTVsLTM3OSA0MjZxLTEzIDE1IC04LjUgMjZ0MjUuNSAxMWgyNTB2MzUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMzAwaDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTI1MGgtMTEwMHYyNTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiBNOTAwIDIwMHYtNTBoMTAwdjUwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2NzsiIGQ9Ik01ODMgMTE4MmwzNzggLTQzNXExNCAtMTUgOSAtMzF0LTI2IC0xNmgtMjQ0di0yNTBxMCAtMjAgLTE3IC0zNXQtMzkgLTE1aC0yMDBxLTIwIDAgLTMyIDE0LjV0LTEyIDM1LjV2MjUwaC0yNTBxLTIwIDAgLTI1LjUgMTYuNXQ4LjUgMzEuNWwzODMgNDMxcTE0IDE2IDMzLjUgMTd0MzMuNSAtMTR6TTUwIDMwMGgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yNTBoLTExMDB2MjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXogTTkwMCAyMDB2LTUwaDEwMHY1MGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjg7IiBkPSJNMzk2IDcyM2wzNjkgMzY5cTcgNyAxNy41IDd0MTcuNSAtN2wxMzkgLTEzOXE3IC04IDcgLTE4LjV0LTcgLTE3LjVsLTUyNSAtNTI1cS03IC04IC0xNy41IC04dC0xNy41IDhsLTI5MiAyOTFxLTcgOCAtNyAxOHQ3IDE4bDEzOSAxMzlxOCA3IDE4LjUgN3QxNy41IC03ek01MCAzMDBoMTAwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjUwaC0xMTAwdjI1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTkwMCAyMDB2LTUwaDEwMHY1MCBoLTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTY5OyIgZD0iTTEzNSAxMDIzbDE0MiAxNDJxMTQgMTQgMzUgMTR0MzUgLTE0bDc3IC03N2wtMjEyIC0yMTJsLTc3IDc2cS0xNCAxNSAtMTQgMzZ0MTQgMzV6TTY1NSA4NTVsMjEwIDIxMHExNCAxNCAyNC41IDEwdDEwLjUgLTI1bC0yIC01OTlxLTEgLTIwIC0xNS41IC0zNXQtMzUuNSAtMTVsLTU5NyAtMXEtMjEgMCAtMjUgMTAuNXQxMCAyNC41bDIwOCAyMDhsLTE1NCAxNTVsMjEyIDIxMnpNNTAgMzAwaDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjUgdi0yNTBoLTExMDB2MjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNOTAwIDIwMHYtNTBoMTAwdjUwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3MDsiIGQ9Ik0zNTAgMTIwMGw1OTkgLTJxMjAgLTEgMzUgLTE1LjV0MTUgLTM1LjVsMSAtNTk3cTAgLTIxIC0xMC41IC0yNXQtMjQuNSAxMGwtMjA4IDIwOGwtMTU1IC0xNTRsLTIxMiAyMTJsMTU1IDE1NGwtMjEwIDIxMHEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNXpNNTI0IDUxMmwtNzYgLTc3cS0xNSAtMTQgLTM2IC0xNHQtMzUgMTRsLTE0MiAxNDJxLTE0IDE0IC0xNCAzNXQxNCAzNWw3NyA3N3pNNTAgMzAwaDEwMDBxMjEgMCAzNS41IC0xNC41IHQxNC41IC0zNS41di0yNTBoLTExMDB2MjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNOTAwIDIwMHYtNTBoMTAwdjUwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3MTsiIGQ9Ik0xMjAwIDEwM2wtNDgzIDI3NmwtMzE0IC0zOTl2NDIzaC0zOTlsMTE5NiA3OTZ2LTEwOTZ6TTQ4MyA0MjR2LTIzMGw2ODMgOTUzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzI7IiBkPSJNMTEwMCAxMDAwdi04NTBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTE1MHY0MDBoLTcwMHYtNDAwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDB6TTcwMCAxMDAwaC0xMDB2MjAwaDEwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzM7IiBkPSJNMTEwMCAxMDAwbC0yIC0xNDlsLTI5OSAtMjk5bC05NSA5NXEtOSA5IC0yMS41IDl0LTIxLjUgLTlsLTE0OSAtMTQ3aC0zMTJ2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAwcTAgMjAgMTQuNSAzNXQzNS41IDE1aDI1MHYtMzAwaDUwMHYzMDBoMTAwek03MDAgMTAwMGgtMTAwdjIwMGgxMDB2LTIwMHpNMTEzMiA2MzhsMTA2IC0xMDZxNyAtNyA3IC0xNy41dC03IC0xNy41bC00MjAgLTQyMXEtOCAtNyAtMTggLTcgdC0xOCA3bC0yMDIgMjAzcS04IDcgLTggMTcuNXQ4IDE3LjVsMTA2IDEwNnE3IDggMTcuNSA4dDE3LjUgLThsNzkgLTc5bDI5NyAyOTdxNyA3IDE3LjUgN3QxNy41IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzQ7IiBkPSJNMTEwMCAxMDAwdi0yNjlsLTEwMyAtMTAzbC0xMzQgMTM0cS0xNSAxNSAtMzMuNSAxNi41dC0zNC41IC0xMi41bC0yNjYgLTI2NmgtMzI5di00MDBoLTE1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwMHEwIDIwIDE0LjUgMzV0MzUuNSAxNWgyNTB2LTMwMGg1MDB2MzAwaDEwMHpNNzAwIDEwMDBoLTEwMHYyMDBoMTAwdi0yMDB6TTEyMDIgNTcybDcwIC03MHExNSAtMTUgMTUgLTM1LjV0LTE1IC0zNS41bC0xMzEgLTEzMSBsMTMxIC0xMzFxMTUgLTE1IDE1IC0zNS41dC0xNSAtMzUuNWwtNzAgLTcwcS0xNSAtMTUgLTM1LjUgLTE1dC0zNS41IDE1bC0xMzEgMTMxbC0xMzEgLTEzMXEtMTUgLTE1IC0zNS41IC0xNXQtMzUuNSAxNWwtNzAgNzBxLTE1IDE1IC0xNSAzNS41dDE1IDM1LjVsMTMxIDEzMWwtMTMxIDEzMXEtMTUgMTUgLTE1IDM1LjV0MTUgMzUuNWw3MCA3MHExNSAxNSAzNS41IDE1dDM1LjUgLTE1bDEzMSAtMTMxbDEzMSAxMzFxMTUgMTUgMzUuNSAxNSB0MzUuNSAtMTV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NTsiIGQ9Ik0xMTAwIDEwMDB2LTMwMGgtMzUwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xNTBoLTUwMHYtNDAwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDB6TTcwMCAxMDAwaC0xMDB2MjAwaDEwMHYtMjAwek04NTAgNjAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjUwaDE1MHEyMSAwIDI1IC0xMC41dC0xMCAtMjQuNSBsLTIzMCAtMjMwcS0xNCAtMTQgLTM1IC0xNHQtMzUgMTRsLTIzMCAyMzBxLTE0IDE0IC0xMCAyNC41dDI1IDEwLjVoMTUwdjI1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NjsiIGQ9Ik0xMTAwIDEwMDB2LTQwMGwtMTY1IDE2NXEtMTQgMTUgLTM1IDE1dC0zNSAtMTVsLTI2MyAtMjY1aC00MDJ2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAwcTAgMjAgMTQuNSAzNXQzNS41IDE1aDI1MHYtMzAwaDUwMHYzMDBoMTAwek03MDAgMTAwMGgtMTAwdjIwMGgxMDB2LTIwMHpNOTM1IDU2NWwyMzAgLTIyOXExNCAtMTUgMTAgLTI1LjV0LTI1IC0xMC41aC0xNTB2LTI1MHEwIC0yMCAtMTQuNSAtMzUgdC0zNS41IC0xNWgtMTAwcS0yMSAwIC0zNS41IDE1dC0xNC41IDM1djI1MGgtMTUwcS0yMSAwIC0yNSAxMC41dDEwIDI1LjVsMjMwIDIyOXExNCAxNSAzNSAxNXQzNSAtMTV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NzsiIGQ9Ik01MCAxMTAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTE1MGgtMTIwMHYxNTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMjAwIDgwMHYtNTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY1NTBoMTIwMHpNMTAwIDUwMHYtMjAwaDQwMHYyMDBoLTQwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTc4OyIgZD0iTTkzNSAxMTY1bDI0OCAtMjMwcTE0IC0xNCAxNCAtMzV0LTE0IC0zNWwtMjQ4IC0yMzBxLTE0IC0xNCAtMjQuNSAtMTB0LTEwLjUgMjV2MTUwaC00MDB2MjAwaDQwMHYxNTBxMCAyMSAxMC41IDI1dDI0LjUgLTEwek0yMDAgODAwaC01MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg1MHYtMjAwek00MDAgODAwaC0xMDB2MjAwaDEwMHYtMjAwek0xOCA0MzVsMjQ3IDIzMCBxMTQgMTQgMjQuNSAxMHQxMC41IC0yNXYtMTUwaDQwMHYtMjAwaC00MDB2LTE1MHEwIC0yMSAtMTAuNSAtMjV0LTI0LjUgMTBsLTI0NyAyMzBxLTE1IDE0IC0xNSAzNXQxNSAzNXpNOTAwIDMwMGgtMTAwdjIwMGgxMDB2LTIwMHpNMTAwMCA1MDBoNTFxMjAgMCAzNC41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzQuNSAtMTQuNWgtNTF2MjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzk7IiBkPSJNODYyIDEwNzNsMjc2IDExNnEyNSAxOCA0My41IDh0MTguNSAtNDF2LTExMDZxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2Mzk3cS00IDEgLTExIDV0LTI0IDE3LjV0LTMwIDI5dC0yNCA0MnQtMTEgNTYuNXYzNTlxMCAzMSAxOC41IDY1dDQzLjUgNTJ6TTU1MCAxMjAwcTIyIDAgMzQuNSAtMTIuNXQxNC41IC0yNC41bDEgLTEzdi00NTBxMCAtMjggLTEwLjUgLTU5LjUgdC0yNSAtNTZ0LTI5IC00NXQtMjUuNSAtMzEuNWwtMTAgLTExdi00NDdxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDQ3cS00IDQgLTExIDExLjV0LTI0IDMwLjV0LTMwIDQ2dC0yNCA1NXQtMTEgNjB2NDUwcTAgMiAwLjUgNS41dDQgMTJ0OC41IDE1dDE0LjUgMTJ0MjIuNSA1LjVxMjAgMCAzMi41IC0xMi41dDE0LjUgLTI0LjVsMyAtMTN2LTM1MGgxMDB2MzUwdjUuNXQyLjUgMTIgdDcgMTV0MTUgMTJ0MjUuNSA1LjVxMjMgMCAzNS41IC0xMi41dDEzLjUgLTI0LjVsMSAtMTN2LTM1MGgxMDB2MzUwcTAgMiAwLjUgNS41dDMgMTJ0NyAxNXQxNSAxMnQyNC41IDUuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTgwOyIgZD0iTTEyMDAgMTEwMHYtNTZxLTQgMCAtMTEgLTAuNXQtMjQgLTN0LTMwIC03LjV0LTI0IC0xNXQtMTEgLTI0di04ODhxMCAtMjIgMjUgLTM0LjV0NTAgLTEzLjVsMjUgLTJ2LTU2aC00MDB2NTZxNzUgMCA4Ny41IDYuNXQxMi41IDQzLjV2Mzk0aC01MDB2LTM5NHEwIC0zNyAxMi41IC00My41dDg3LjUgLTYuNXYtNTZoLTQwMHY1NnE0IDAgMTEgMC41dDI0IDN0MzAgNy41dDI0IDE1dDExIDI0djg4OHEwIDIyIC0yNSAzNC41dC01MCAxMy41IGwtMjUgMnY1Nmg0MDB2LTU2cS03NSAwIC04Ny41IC02LjV0LTEyLjUgLTQzLjV2LTM5NGg1MDB2Mzk0cTAgMzcgLTEyLjUgNDMuNXQtODcuNSA2LjV2NTZoNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODE7IiBkPSJNNjc1IDEwMDBoMzc1cTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xNTBoLTEwNWwtMjk1IC05OHY5OGwtMjAwIDIwMGgtNDAwbDEwMCAxMDBoMzc1ek0xMDAgOTAwaDMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNTAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC0zMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djUwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTEwMCA4MDB2LTIwMGgzMDB2MjAwIGgtMzAwek0xMTAwIDUzNWwtNDAwIC0xMzN2MTYzbDQwMCAxMzN2LTE2M3pNMTAwIDUwMHYtMjAwaDMwMHYyMDBoLTMwMHpNMTEwMCAzOTh2LTI0OHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzc1bC0xMDAgLTEwMGgtMzc1bC0xMDAgMTAwaDQwMGwyMDAgMjAwaDEwNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTgyOyIgZD0iTTE3IDEwMDdsMTYyIDE2MnExNyAxNyA0MCAxNHQzNyAtMjJsMTM5IC0xOTRxMTQgLTIwIDExIC00NC41dC0yMCAtNDEuNWwtMTE5IC0xMThxMTAyIC0xNDIgMjI4IC0yNjh0MjY3IC0yMjdsMTE5IDExOHExNyAxNyA0Mi41IDE5dDQ0LjUgLTEybDE5MiAtMTM2cTE5IC0xNCAyMi41IC0zNy41dC0xMy41IC00MC41bC0xNjMgLTE2MnEtMyAtMSAtOS41IC0xdC0yOS41IDJ0LTQ3LjUgNnQtNjIuNSAxNC41dC03Ny41IDI2LjV0LTkwIDQyLjUgdC0xMDEuNSA2MHQtMTExIDgzdC0xMTkgMTA4LjVxLTc0IDc0IC0xMzMuNSAxNTAuNXQtOTQuNSAxMzguNXQtNjAgMTE5LjV0LTM0LjUgMTAwdC0xNSA3NC41dC00LjUgNDh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4MzsiIGQ9Ik02MDAgMTEwMHE5MiAwIDE3NSAtMTAuNXQxNDEuNSAtMjd0MTA4LjUgLTM2LjV0ODEuNSAtNDB0NTMuNSAtMzd0MzEgLTI3bDkgLTEwdi0yMDBxMCAtMjEgLTE0LjUgLTMzdC0zNC41IC05bC0yMDIgMzRxLTIwIDMgLTM0LjUgMjB0LTE0LjUgMzh2MTQ2cS0xNDEgMjQgLTMwMCAyNHQtMzAwIC0yNHYtMTQ2cTAgLTIxIC0xNC41IC0zOHQtMzQuNSAtMjBsLTIwMiAtMzRxLTIwIC0zIC0zNC41IDl0LTE0LjUgMzN2MjAwcTMgNCA5LjUgMTAuNSB0MzEgMjZ0NTQgMzcuNXQ4MC41IDM5LjV0MTA5IDM3LjV0MTQxIDI2LjV0MTc1IDEwLjV6TTYwMCA3OTVxNTYgMCA5NyAtOS41dDYwIC0yMy41dDMwIC0yOHQxMiAtMjRsMSAtMTB2LTUwbDM2NSAtMzAzcTE0IC0xNSAyNC41IC00MHQxMC41IC00NXYtMjEycTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMTJxMCAyMCAxMC41IDQ1dDI0LjUgNDBsMzY1IDMwM3Y1MCBxMCA0IDEgMTAuNXQxMiAyM3QzMCAyOXQ2MCAyMi41dDk3IDEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODQ7IiBkPSJNMTEwMCA3MDBsLTIwMCAtMjAwaC02MDBsLTIwMCAyMDB2NTAwaDIwMHYtMjAwaDIwMHYyMDBoMjAwdi0yMDBoMjAwdjIwMGgyMDB2LTUwMHpNMjUwIDQwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV0LTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEybDEzNyAtMTAwaC05NTBsMTM3IDEwMGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNSB0MTQuNSAtMzUuNXYtNTBoLTEyMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODU7IiBkPSJNNzAwIDExMDBoLTEwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtMTAwMGgzMDB2MTAwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNXpNMTEwMCA4MDBoLTEwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNzAwaDMwMHY3MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjV6TTQwMCAwaC0zMDB2NDAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTQwMHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4NjsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDcwMGgtMjAwdi0xMDBoMjAwdi0zMDBoLTMwMHYxMDBoMjAwdjEwMGgtMjAwdjMwMGgzMDB2LTEwMHpNOTAwIDcwMHYtMzAwbC0xMDAgLTEwMGgtMjAwdjUwMGgyMDB6IE03MDAgNzAwdi0zMDBoMTAwdjMwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODc7IiBkPSJNMjAwIDExMDBoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODh6TTEwMCA5MDB2LTcwMGg5MDB2NzAwaC05MDB6TTUwMCAzMDBoLTEwMHYyMDBoLTEwMHYtMjAwaC0xMDB2NTAwaDEwMHYtMjAwaDEwMHYyMDBoMTAwdi01MDB6TTkwMCA3MDB2LTMwMGwtMTAwIC0xMDBoLTIwMHY1MDBoMjAweiBNNzAwIDcwMHYtMzAwaDEwMHYzMDBoLTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTg4OyIgZD0iTTIwMCAxMTAwaDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEydjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek0xMDAgOTAwdi03MDBoOTAwdjcwMGgtOTAwek01MDAgNzAwaC0yMDB2LTMwMGgyMDB2LTEwMGgtMzAwdjUwMGgzMDB2LTEwMHpNOTAwIDcwMGgtMjAwdi0zMDBoMjAwdi0xMDBoLTMwMHY1MDBoMzAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4OTsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDQwMGwtMzAwIDE1MGwzMDAgMTUwdi0zMDB6TTkwMCA1NTBsLTMwMCAtMTUwdjMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTkwOyIgZD0iTTIwMCAxMTAwaDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEydjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek0xMDAgOTAwdi03MDBoOTAwdjcwMGgtOTAwek05MDAgMzAwaC03MDB2NTAwaDcwMHYtNTAwek04MDAgNzAwaC0xMzBxLTM4IDAgLTY2LjUgLTQzdC0yOC41IC0xMDh0MjcgLTEwN3Q2OCAtNDJoMTMwdjMwMHpNMzAwIDcwMHYtMzAwIGgxMzBxNDEgMCA2OCA0MnQyNyAxMDd0LTI4LjUgMTA4dC02Ni41IDQzaC0xMzB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MTsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDcwMGgtMjAwdi0xMDBoMjAwdi0zMDBoLTMwMHYxMDBoMjAwdjEwMGgtMjAwdjMwMGgzMDB2LTEwMHpNOTAwIDMwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHogTTcwMCAzMDBoLTEwMHYxMDBoMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MjsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNMzAwIDcwMGgyMDB2LTQwMGgtMzAwdjUwMGgxMDB2LTEwMHpNOTAwIDMwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHpNMzAwIDYwMHYtMjAwaDEwMHYyMDBoLTEwMHogTTcwMCAzMDBoLTEwMHYxMDBoMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MzsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDUwMGwtMTk5IC0yMDBoLTEwMHY1MGwxOTkgMjAwdjE1MGgtMjAwdjEwMGgzMDB2LTMwMHpNOTAwIDMwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHpNNzAxIDMwMGgtMTAwIHYxMDBoMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5NDsiIGQ9Ik02MDAgMTE5MXExMjAgMCAyMjkuNSAtNDd0MTg4LjUgLTEyNnQxMjYgLTE4OC41dDQ3IC0yMjkuNXQtNDcgLTIyOS41dC0xMjYgLTE4OC41dC0xODguNSAtMTI2dC0yMjkuNSAtNDd0LTIyOS41IDQ3dC0xODguNSAxMjZ0LTEyNiAxODguNXQtNDcgMjI5LjV0NDcgMjI5LjV0MTI2IDE4OC41dDE4OC41IDEyNnQyMjkuNSA0N3pNNjAwIDEwMjFxLTExNCAwIC0yMTEgLTU2LjV0LTE1My41IC0xNTMuNXQtNTYuNSAtMjExdDU2LjUgLTIxMSB0MTUzLjUgLTE1My41dDIxMSAtNTYuNXQyMTEgNTYuNXQxNTMuNSAxNTMuNXQ1Ni41IDIxMXQtNTYuNSAyMTF0LTE1My41IDE1My41dC0yMTEgNTYuNXpNODAwIDcwMGgtMzAwdi0yMDBoMzAwdi0xMDBoLTMwMGwtMTAwIDEwMHYyMDBsMTAwIDEwMGgzMDB2LTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTk1OyIgZD0iTTYwMCAxMTkxcTEyMCAwIDIyOS41IC00N3QxODguNSAtMTI2dDEyNiAtMTg4LjV0NDcgLTIyOS41dC00NyAtMjI5LjV0LTEyNiAtMTg4LjV0LTE4OC41IC0xMjZ0LTIyOS41IC00N3QtMjI5LjUgNDd0LTE4OC41IDEyNnQtMTI2IDE4OC41dC00NyAyMjkuNXQ0NyAyMjkuNXQxMjYgMTg4LjV0MTg4LjUgMTI2dDIyOS41IDQ3ek02MDAgMTAyMXEtMTE0IDAgLTIxMSAtNTYuNXQtMTUzLjUgLTE1My41dC01Ni41IC0yMTF0NTYuNSAtMjExIHQxNTMuNSAtMTUzLjV0MjExIC01Ni41dDIxMSA1Ni41dDE1My41IDE1My41dDU2LjUgMjExdC01Ni41IDIxMXQtMTUzLjUgMTUzLjV0LTIxMSA1Ni41ek04MDAgNzAwdi0xMDBsLTUwIC01MGwxMDAgLTEwMHYtNTBoLTEwMGwtMTAwIDEwMGgtMTUwdi0xMDBoLTEwMHY0MDBoMzAwek01MDAgNzAwdi0xMDBoMjAwdjEwMGgtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTc7IiBkPSJNNTAzIDEwODlxMTEwIDAgMjAwLjUgLTU5LjV0MTM0LjUgLTE1Ni41cTQ0IDE0IDkwIDE0cTEyMCAwIDIwNSAtODYuNXQ4NSAtMjA3dC04NSAtMjA3dC0yMDUgLTg2LjVoLTEyOHYyNTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTMwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMjUwaC0yMjJxLTgwIDAgLTEzNiA1Ny41dC01NiAxMzYuNXEwIDY5IDQzIDEyMi41dDEwOCA2Ny41cS0yIDE5IC0yIDM3cTAgMTAwIDQ5IDE4NSB0MTM0IDEzNHQxODUgNDl6TTUyNSA1MDBoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMjc1aDEzN3EyMSAwIDI2IC0xMS41dC04IC0yNy41bC0yMjMgLTI0NHEtMTMgLTE2IC0zMiAtMTZ0LTMyIDE2bC0yMjMgMjQ0cS0xMyAxNiAtOCAyNy41dDI2IDExLjVoMTM3djI3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTg7IiBkPSJNNTAyIDEwODlxMTEwIDAgMjAxIC01OS41dDEzNSAtMTU2LjVxNDMgMTUgODkgMTVxMTIxIDAgMjA2IC04Ni41dDg2IC0yMDYuNXEwIC05OSAtNjAgLTE4MXQtMTUwIC0xMTBsLTM3OCAzNjBxLTEzIDE2IC0zMS41IDE2dC0zMS41IC0xNmwtMzgxIC0zNjVoLTlxLTc5IDAgLTEzNS41IDU3LjV0LTU2LjUgMTM2LjVxMCA2OSA0MyAxMjIuNXQxMDggNjcuNXEtMiAxOSAtMiAzOHEwIDEwMCA0OSAxODQuNXQxMzMuNSAxMzR0MTg0LjUgNDkuNXogTTYzMiA0NjdsMjIzIC0yMjhxMTMgLTE2IDggLTI3LjV0LTI2IC0xMS41aC0xMzd2LTI3NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djI3NWgtMTM3cS0yMSAwIC0yNiAxMS41dDggMjcuNXExOTkgMjA0IDIyMyAyMjhxMTkgMTkgMzEuNSAxOXQzMi41IC0xOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTk5OyIgZD0iTTcwMCAxMDB2MTAwaDQwMGwtMjcwIDMwMGgxNzBsLTI3MCAzMDBoMTcwbC0zMDAgMzMzbC0zMDAgLTMzM2gxNzBsLTI3MCAtMzAwaDE3MGwtMjcwIC0zMDBoNDAwdi0xMDBoLTUwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di01MGg0MDB2NTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDA7IiBkPSJNNjAwIDExNzlxOTQgMCAxNjcuNSAtNTYuNXQ5OS41IC0xNDUuNXE4OSAtNiAxNTAuNSAtNzEuNXQ2MS41IC0xNTUuNXEwIC02MSAtMjkuNSAtMTEyLjV0LTc5LjUgLTgyLjVxOSAtMjkgOSAtNTVxMCAtNzQgLTUyLjUgLTEyNi41dC0xMjYuNSAtNTIuNXEtNTUgMCAtMTAwIDMwdi0yNTFxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUwaC0zMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41djI1MXEtNDUgLTMwIC0xMDAgLTMwIHEtNzQgMCAtMTI2LjUgNTIuNXQtNTIuNSAxMjYuNXEwIDE4IDQgMzhxLTQ3IDIxIC03NS41IDY1dC0yOC41IDk3cTAgNzQgNTIuNSAxMjYuNXQxMjYuNSA1Mi41cTUgMCAyMyAtMnEwIDIgLTEgMTB0LTEgMTNxMCAxMTYgODEuNSAxOTcuNXQxOTcuNSA4MS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDE7IiBkPSJNMTAxMCAxMDEwcTExMSAtMTExIDE1MC41IC0yNjAuNXQwIC0yOTl0LTE1MC41IC0yNjAuNXEtODMgLTgzIC0xOTEuNSAtMTI2LjV0LTIxOC41IC00My41dC0yMTguNSA0My41dC0xOTEuNSAxMjYuNXEtMTExIDExMSAtMTUwLjUgMjYwLjV0MCAyOTl0MTUwLjUgMjYwLjVxODMgODMgMTkxLjUgMTI2LjV0MjE4LjUgNDMuNXQyMTguNSAtNDMuNXQxOTEuNSAtMTI2LjV6TTQ3NiAxMDY1cS00IDAgLTggLTFxLTEyMSAtMzQgLTIwOS41IC0xMjIuNSB0LTEyMi41IC0yMDkuNXEtNCAtMTIgMi41IC0yM3QxOC41IC0xNGwzNiAtOXEzIC0xIDcgLTFxMjMgMCAyOSAyMnEyNyA5NiA5OCAxNjZxNzAgNzEgMTY2IDk4cTExIDMgMTcuNSAxMy41dDMuNSAyMi41bC05IDM1cS0zIDEzIC0xNCAxOXEtNyA0IC0xNSA0ek01MTIgOTIwcS00IDAgLTkgLTJxLTgwIC0yNCAtMTM4LjUgLTgyLjV0LTgyLjUgLTEzOC41cS00IC0xMyAyIC0yNHQxOSAtMTRsMzQgLTlxNCAtMSA4IC0xcTIyIDAgMjggMjEgcTE4IDU4IDU4LjUgOTguNXQ5Ny41IDU4LjVxMTIgMyAxOCAxMy41dDMgMjEuNWwtOSAzNXEtMyAxMiAtMTQgMTlxLTcgNCAtMTUgNHpNNzE5LjUgNzE5LjVxLTQ5LjUgNDkuNSAtMTE5LjUgNDkuNXQtMTE5LjUgLTQ5LjV0LTQ5LjUgLTExOS41dDQ5LjUgLTExOS41dDExOS41IC00OS41dDExOS41IDQ5LjV0NDkuNSAxMTkuNXQtNDkuNSAxMTkuNXpNODU1IDU1MXEtMjIgMCAtMjggLTIxcS0xOCAtNTggLTU4LjUgLTk4LjV0LTk4LjUgLTU3LjUgcS0xMSAtNCAtMTcgLTE0LjV0LTMgLTIxLjVsOSAtMzVxMyAtMTIgMTQgLTE5cTcgLTQgMTUgLTRxNCAwIDkgMnE4MCAyNCAxMzguNSA4Mi41dDgyLjUgMTM4LjVxNCAxMyAtMi41IDI0dC0xOC41IDE0bC0zNCA5cS00IDEgLTggMXpNMTAwMCA1MTVxLTIzIDAgLTI5IC0yMnEtMjcgLTk2IC05OCAtMTY2cS03MCAtNzEgLTE2NiAtOThxLTExIC0zIC0xNy41IC0xMy41dC0zLjUgLTIyLjVsOSAtMzVxMyAtMTMgMTQgLTE5cTcgLTQgMTUgLTQgcTQgMCA4IDFxMTIxIDM0IDIwOS41IDEyMi41dDEyMi41IDIwOS41cTQgMTIgLTIuNSAyM3QtMTguNSAxNGwtMzYgOXEtMyAxIC03IDF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwMjsiIGQ9Ik03MDAgODAwaDMwMHYtMzgwaC0xODB2MjAwaC0zNDB2LTIwMGgtMzgwdjc1NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDU3NXYtNDAwek0xMDAwIDkwMGgtMjAwdjIwMHpNNzAwIDMwMGgxNjJsLTIxMiAtMjEybC0yMTIgMjEyaDE2MnYyMDBoMTAwdi0yMDB6TTUyMCAwaC0zOTVxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzOTV6TTEwMDAgMjIwdi0xOTVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xOTV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwMzsiIGQ9Ik03MDAgODAwaDMwMHYtNTIwbC0zNTAgMzUwbC01NTAgLTU1MHYxMDk1cTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoNTc1di00MDB6TTEwMDAgOTAwaC0yMDB2MjAwek04NjIgMjAwaC0xNjJ2LTIwMGgtMTAwdjIwMGgtMTYybDIxMiAyMTJ6TTQ4MCAwaC0zNTVxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1NWgzODB2LTgwek0xMDAwIDgwdi01NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1NXY4MGgxODB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwNDsiIGQ9Ik0xMTYyIDgwMGgtMTYydi0yMDBoMTAwbDEwMCAtMTAwaC0zMDB2MzAwaC0xNjJsMjEyIDIxMnpNMjAwIDgwMGgyMDBxMjcgMCA0MCAtMnQyOS41IC0xMC41dDIzLjUgLTMwdDcgLTU3LjVoMzAwdi0xMDBoLTYwMGwtMjAwIC0zNTB2NDUwaDEwMHEwIDM2IDcgNTcuNXQyMy41IDMwdDI5LjUgMTAuNXQ0MCAyek04MDAgNDAwaDI0MGwtMjQwIC00MDBoLTgwMGwzMDAgNTAwaDUwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDU7IiBkPSJNNjUwIDExMDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0zMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNTB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMDAwIDg1MHYxNTBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTgwMCBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTYwMHEtMSAwIC0yMCA0bDI0NiAyNDZsLTMyNiAzMjZ2MzI0cTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXYtMTUwcTAgLTYyIDQ0IC0xMDZ0MTA2IC00NGgzMDBxNjIgMCAxMDYgNDR0NDQgMTA2ek00MTIgMjUwbC0yMTIgLTIxMnYxNjJoLTIwMHYxMDBoMjAwdjE2MnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjA2OyIgZD0iTTQ1MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoNTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDUwdjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNODAwIDg1MHYxNTBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTUwMCBoLTIwMHYtMzAwaDIwMHEwIC0zNiAtNyAtNTcuNXQtMjMuNSAtMzB0LTI5LjUgLTEwLjV0LTQwIC0yaC02MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djgwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV2LTE1MHEwIC02MiA0NCAtMTA2dDEwNiAtNDRoMzAwcTYyIDAgMTA2IDQ0dDQ0IDEwNnpNMTIxMiAyNTBsLTIxMiAtMjEydjE2MmgtMjAwdjEwMGgyMDB2MTYyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDk7IiBkPSJNNjU4IDExOTdsNjM3IC0xMTA0cTIzIC0zOCA3IC02NS41dC02MCAtMjcuNWgtMTI3NnEtNDQgMCAtNjAgMjcuNXQ3IDY1LjVsNjM3IDExMDRxMjIgMzkgNTQgMzl0NTQgLTM5ek03MDQgODAwaC0yMDhxLTIwIDAgLTMyIC0xNC41dC04IC0zNC41bDU4IC0zMDJxNCAtMjAgMjEuNSAtMzQuNXQzNy41IC0xNC41aDU0cTIwIDAgMzcuNSAxNC41dDIxLjUgMzQuNWw1OCAzMDJxNCAyMCAtOCAzNC41dC0zMiAxNC41ek01MDAgMzAwdi0xMDBoMjAwIHYxMDBoLTIwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjEwOyIgZD0iTTQyNSAxMTAwaDI1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek00MjUgODAwaDI1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41IHQxNy41IDcuNXpNODI1IDgwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNMjUgNTAwaDI1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MCBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNDI1IDUwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNODI1IDUwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNSB2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTI1IDIwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNDI1IDIwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41IHQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTgyNSAyMDBoMjUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMjUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxMTsiIGQ9Ik03MDAgMTIwMGgxMDB2LTIwMGgtMTAwdi0xMDBoMzUwcTYyIDAgODYuNSAtMzkuNXQtMy41IC05NC41bC02NiAtMTMycS00MSAtODMgLTgxIC0xMzRoLTc3MnEtNDAgNTEgLTgxIDEzNGwtNjYgMTMycS0yOCA1NSAtMy41IDk0LjV0ODYuNSAzOS41aDM1MHYxMDBoLTEwMHYyMDBoMTAwdjEwMGgyMDB2LTEwMHpNMjUwIDQwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV0LTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEybDEzNyAtMTAwIGgtOTUwbDEzOCAxMDBoLTEzcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXQxNC41IDM1LjV0MzUuNSAxNC41ek01MCAxMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoLTEyMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMTI7IiBkPSJNNjAwIDEzMDBxNDAgMCA2OC41IC0yOS41dDI4LjUgLTcwLjVoLTE5NHEwIDQxIDI4LjUgNzAuNXQ2OC41IDI5LjV6TTQ0MyAxMTAwaDMxNHExOCAtMzcgMTggLTc1cTAgLTggLTMgLTI1aDMyOHE0MSAwIDQ0LjUgLTE2LjV0LTMwLjUgLTM4LjVsLTE3NSAtMTQ1aC02NzhsLTE3OCAxNDVxLTM0IDIyIC0yOSAzOC41dDQ2IDE2LjVoMzI4cS0zIDE3IC0zIDI1cTAgMzggMTggNzV6TTI1MCA3MDBoNzAwcTIxIDAgMzUuNSAtMTQuNSB0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTUwdi0yMDBsMjc1IC0yMDBoLTk1MGwyNzUgMjAwdjIwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXQxNC41IDM1LjV0MzUuNSAxNC41ek01MCAxMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoLTEyMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMTM7IiBkPSJNNjAwIDExODFxNzUgMCAxMjggLTUzdDUzIC0xMjh0LTUzIC0xMjh0LTEyOCAtNTN0LTEyOCA1M3QtNTMgMTI4dDUzIDEyOHQxMjggNTN6TTYwMiA3OThoNDZxMzQgMCA1NS41IC0yOC41dDIxLjUgLTg2LjVxMCAtNzYgMzkgLTE4M2gtMzI0cTM5IDEwNyAzOSAxODNxMCA1OCAyMS41IDg2LjV0NTYuNSAyOC41aDQ1ek0yNTAgNDAwaDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTMgbDEzOCAtMTAwaC05NTBsMTM3IDEwMGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtMTIwMHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxNDsiIGQ9Ik02MDAgMTMwMHE0NyAwIDkyLjUgLTUzLjV0NzEgLTEyM3QyNS41IC0xMjMuNXEwIC03OCAtNTUuNSAtMTMzLjV0LTEzMy41IC01NS41dC0xMzMuNSA1NS41dC01NS41IDEzMy41cTAgNjIgMzQgMTQzbDE0NCAtMTQzbDExMSAxMTFsLTE2MyAxNjNxMzQgMjYgNjMgMjZ6TTYwMiA3OThoNDZxMzQgMCA1NS41IC0yOC41dDIxLjUgLTg2LjVxMCAtNzYgMzkgLTE4M2gtMzI0cTM5IDEwNyAzOSAxODNxMCA1OCAyMS41IDg2LjV0NTYuNSAyOC41aDQ1IHpNMjUwIDQwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV0LTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEzbDEzOCAtMTAwaC05NTBsMTM3IDEwMGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtMTIwMHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxNTsiIGQ9Ik02MDAgMTIwMGwzMDAgLTE2MXYtMTM5aC0zMDBxMCAtNTcgMTguNSAtMTA4dDUwIC05MS41dDYzIC03MnQ3MCAtNjcuNXQ1Ny41IC02MWgtNTMwcS02MCA4MyAtOTAuNSAxNzcuNXQtMzAuNSAxNzguNXQzMyAxNjQuNXQ4Ny41IDEzOS41dDEyNiA5Ni41dDE0NS41IDQxLjV2LTk4ek0yNTAgNDAwaDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTNsMTM4IC0xMDBoLTk1MGwxMzcgMTAwIGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtMTIwMHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxNjsiIGQ9Ik02MDAgMTMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNzhxNDYgLTI2IDczIC03MnQyNyAtMTAwdi01MGgtNDAwdjUwcTAgNTQgMjcgMTAwdDczIDcydjc4cTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNNDAwIDgwMGg0MDBxNTQgMCAxMDAgLTI3dDcyIC03M2gtMTcydi0xMDBoMjAwdi0xMDBoLTIwMHYtMTAwaDIwMHYtMTAwaC0yMDB2LTEwMGgyMDBxMCAtODMgLTU4LjUgLTE0MS41dC0xNDEuNSAtNTguNWgtNDAwIHEtODMgMCAtMTQxLjUgNTguNXQtNTguNSAxNDEuNXY0MDBxMCA4MyA1OC41IDE0MS41dDE0MS41IDU4LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxODsiIGQ9Ik0xNTAgMTEwMGg5MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtOTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY1MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMjUgNDAwaDk1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMjgzbDIyNCAtMjI0cTEzIC0xMyAxMyAtMzEuNXQtMTMgLTMyIHQtMzEuNSAtMTMuNXQtMzEuNSAxM2wtODggODhoLTUyNGwtODcgLTg4cS0xMyAtMTMgLTMyIC0xM3QtMzIgMTMuNXQtMTMgMzJ0MTMgMzEuNWwyMjQgMjI0aC0yODlxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek01NDEgMzAwbC0xMDAgLTEwMGgzMjRsLTEwMCAxMDBoLTEyNHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjE5OyIgZD0iTTIwMCAxMTAwaDgwMHE4MyAwIDE0MS41IC01OC41dDU4LjUgLTE0MS41di0yMDBoLTEwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNWgtMjUwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41aC0xMDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjVoLTI1MHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNWgtMTAwdjIwMHEwIDgzIDU4LjUgMTQxLjV0MTQxLjUgNTguNXpNMTAwIDYwMGgxMDAwcTQxIDAgNzAuNSAtMjkuNSB0MjkuNSAtNzAuNXYtMzAwaC0xMjAwdjMwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTMwMCAxMDB2LTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djUwaDIwMHpNMTEwMCAxMDB2LTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djUwaDIwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjIxOyIgZD0iTTQ4MCAxMTY1bDY4MiAtNjgzcTMxIC0zMSAzMSAtNzUuNXQtMzEgLTc1LjVsLTEzMSAtMTMxaC00ODFsLTUxNyA1MThxLTMyIDMxIC0zMiA3NS41dDMyIDc1LjVsMjk1IDI5NnEzMSAzMSA3NS41IDMxdDc2LjUgLTMxek0xMDggNzk0bDM0MiAtMzQybDMwMyAzMDRsLTM0MSAzNDF6TTI1MCAxMDBoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtOTAwdjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjIzOyIgZD0iTTEwNTcgNjQ3bC0xODkgNTA2cS04IDE5IC0yNy41IDMzdC00MC41IDE0aC00MDBxLTIxIDAgLTQwLjUgLTE0dC0yNy41IC0zM2wtMTg5IC01MDZxLTggLTE5IDEuNSAtMzN0MzAuNSAtMTRoNjI1di0xNTBxMCAtMjEgMTQuNSAtMzUuNXQzNS41IC0xNC41dDM1LjUgMTQuNXQxNC41IDM1LjV2MTUwaDEyNXEyMSAwIDMwLjUgMTR0MS41IDMzek04OTcgMGgtNTk1djUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg1MHY1MCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQ4djMwMGgyMDB2LTMwMGg0N3EyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoNTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMjQ7IiBkPSJNOTAwIDgwMGgzMDB2LTU3NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTM3NXY1OTFsLTMwMCAzMDB2ODRxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgzNzV2LTQwMHpNMTIwMCA5MDBoLTIwMHYyMDB6TTQwMCA2MDBoMzAwdi01NzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC02NTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY5NTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgzNzV2LTQwMHpNNzAwIDcwMGgtMjAwdjIwMHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIyNTsiIGQ9Ik00ODQgMTA5NWgxOTVxNzUgMCAxNDYgLTMyLjV0MTI0IC04NnQ4OS41IC0xMjIuNXQ0OC41IC0xNDJxMTggLTE0IDM1IC0yMHEzMSAtMTAgNjQuNSA2LjV0NDMuNSA0OC41cTEwIDM0IC0xNSA3MXEtMTkgMjcgLTkgNDNxNSA4IDEyLjUgMTF0MTkgLTF0MjMuNSAtMTZxNDEgLTQ0IDM5IC0xMDVxLTMgLTYzIC00NiAtMTA2LjV0LTEwNCAtNDMuNWgtNjJxLTcgLTU1IC0zNSAtMTE3dC01NiAtMTAwbC0zOSAtMjM0cS0zIC0yMCAtMjAgLTM0LjUgdC0zOCAtMTQuNWgtMTAwcS0yMSAwIC0zMyAxNC41dC05IDM0LjVsMTIgNzBxLTQ5IC0xNCAtOTEgLTE0aC0xOTVxLTI0IDAgLTY1IDhsLTExIC02NHEtMyAtMjAgLTIwIC0zNC41dC0zOCAtMTQuNWgtMTAwcS0yMSAwIC0zMyAxNC41dC05IDM0LjVsMjYgMTU3cS04NCA3NCAtMTI4IDE3NWwtMTU5IDUzcS0xOSA3IC0zMyAyNnQtMTQgNDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEyNHExMSA4NyA1NiAxNjZsLTExMSA5NSBxLTE2IDE0IC0xMi41IDIzLjV0MjQuNSA5LjVoMjAzcTExNiAxMDEgMjUwIDEwMXpNNjc1IDEwMDBoLTI1MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMjUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2NTBxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMjY7IiBkPSJNNjQxIDkwMGw0MjMgMjQ3cTE5IDggNDIgMi41dDM3IC0yMS41bDMyIC0zOHExNCAtMTUgMTIuNSAtMzZ0LTE3LjUgLTM0bC0xMzkgLTEyMGgtMzkwek01MCAxMTAwaDEwNnE2NyAwIDEwMyAtMTd0NjYgLTcxbDEwMiAtMjEyaDgyM3EyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBxMCAtMjEgLTE0IC00MHQtMzMgLTI2bC03MzcgLTEzMnEtMjMgLTQgLTQwIDZ0LTI2IDI1cS00MiA2NyAtMTAwIDY3aC0zMDBxLTYyIDAgLTEwNiA0NCB0LTQ0IDEwNnYyMDBxMCA2MiA0NCAxMDZ0MTA2IDQ0ek0xNzMgOTI4aC04MHEtMTkgMCAtMjggLTE0dC05IC0zNXYtNTZxMCAtNTEgNDIgLTUxaDEzNHExNiAwIDIxLjUgOHQ1LjUgMjRxMCAxMSAtMTYgNDV0LTI3IDUxcS0xOCAyOCAtNDMgMjh6TTU1MCA3MjdxLTMyIDAgLTU0LjUgLTIyLjV0LTIyLjUgLTU0LjV0MjIuNSAtNTQuNXQ1NC41IC0yMi41dDU0LjUgMjIuNXQyMi41IDU0LjV0LTIyLjUgNTQuNXQtNTQuNSAyMi41ek0xMzAgMzg5IGwxNTIgMTMwcTE4IDE5IDM0IDI0dDMxIC0zLjV0MjQuNSAtMTcuNXQyNS41IC0yOHEyOCAtMzUgNTAuNSAtNTF0NDguNSAtMTNsNjMgNWw0OCAtMTc5cTEzIC02MSAtMy41IC05Ny41dC02Ny41IC03OS41bC04MCAtNjlxLTQ3IC00MCAtMTA5IC0zNS41dC0xMDMgNTEuNWwtMTMwIDE1MXEtNDAgNDcgLTM1LjUgMTA5LjV0NTEuNSAxMDIuNXpNMzgwIDM3N2wtMTAyIC04OHEtMzEgLTI3IDIgLTY1bDM3IC00M3ExMyAtMTUgMjcuNSAtMTkuNSB0MzEuNSA2LjVsNjEgNTNxMTkgMTYgMTQgNDlxLTIgMjAgLTEyIDU2dC0xNyA0NXEtMTEgMTIgLTE5IDE0dC0yMyAtOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjI3OyIgZD0iTTYyNSAxMjAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTEwOXE3OSAtMzMgMTMxIC04Ny41dDUzIC0xMjguNXExIC00NiAtMTUgLTg0LjV0LTM5IC02MXQtNDYgLTM4dC0zOSAtMjEuNWwtMTcgLTZxNiAwIDE1IC0xLjV0MzUgLTl0NTAgLTE3LjV0NTMgLTMwdDUwIC00NXQzNS41IC02NHQxNC41IC04NHEwIC01OSAtMTEuNSAtMTA1LjV0LTI4LjUgLTc2LjV0LTQ0IC01MXQtNDkuNSAtMzEuNXQtNTQuNSAtMTZ0LTQ5LjUgLTYuNSB0LTQzLjUgLTF2LTc1cTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NzVoLTEwMHYtNzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY3NWgtMTc1cS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoNzV2NjAwaC03NXEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MCBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgxNzV2NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgxNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di03NWgxMDB2NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNDAwIDkwMHYtMjAwaDI2M3EyOCAwIDQ4LjUgMTAuNXQzMCAyNXQxNSAyOXQ1LjUgMjUuNWwxIDEwcTAgNCAtMC41IDExdC02IDI0dC0xNSAzMHQtMzAgMjR0LTQ4LjUgMTFoLTI2M3pNNDAwIDUwMHYtMjAwaDM2M3EyOCAwIDQ4LjUgMTAuNSB0MzAgMjV0MTUgMjl0NS41IDI1LjVsMSAxMHEwIDQgLTAuNSAxMXQtNiAyNHQtMTUgMzB0LTMwIDI0dC00OC41IDExaC0zNjN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzMDsiIGQ9Ik0yMTIgMTE5OGg3ODBxODYgMCAxNDcgLTYxdDYxIC0xNDd2LTQxNnEwIC01MSAtMTggLTE0Mi41dC0zNiAtMTU3LjVsLTE4IC02NnEtMjkgLTg3IC05My41IC0xNDYuNXQtMTQ2LjUgLTU5LjVoLTU3MnEtODIgMCAtMTQ3IDU5dC05MyAxNDdxLTggMjggLTIwIDczdC0zMiAxNDMuNXQtMjAgMTQ5LjV2NDE2cTAgODYgNjEgMTQ3dDE0NyA2MXpNNjAwIDEwNDVxLTcwIDAgLTEzMi41IC0xMS41dC0xMDUuNSAtMzAuNXQtNzguNSAtNDEuNSB0LTU3IC00NXQtMzYgLTQxdC0yMC41IC0zMC41bC02IC0xMmwxNTYgLTI0M2g1NjBsMTU2IDI0M3EtMiA1IC02IDEyLjV0LTIwIDI5LjV0LTM2LjUgNDJ0LTU3IDQ0LjV0LTc5IDQydC0xMDUgMjkuNXQtMTMyLjUgMTJ6TTc2MiA3MDNoLTE1N2wxOTUgMjYxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzE7IiBkPSJNNDc1IDEzMDBoMTUwcTEwMyAwIDE4OSAtODZ0ODYgLTE4OXYtNTAwcTAgLTQxIC00MiAtODN0LTgzIC00MmgtNDUwcS00MSAwIC04MyA0MnQtNDIgODN2NTAwcTAgMTAzIDg2IDE4OXQxODkgODZ6TTcwMCAzMDB2LTIyNXEwIC0yMSAtMjcgLTQ4dC00OCAtMjdoLTE1MHEtMjEgMCAtNDggMjd0LTI3IDQ4djIyNWgzMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzMjsiIGQ9Ik00NzUgMTMwMGg5NnEwIC0xNTAgODkuNSAtMjM5LjV0MjM5LjUgLTg5LjV2LTQ0NnEwIC00MSAtNDIgLTgzdC04MyAtNDJoLTQ1MHEtNDEgMCAtODMgNDJ0LTQyIDgzdjUwMHEwIDEwMyA4NiAxODl0MTg5IDg2ek03MDAgMzAwdi0yMjVxMCAtMjEgLTI3IC00OHQtNDggLTI3aC0xNTBxLTIxIDAgLTQ4IDI3dC0yNyA0OHYyMjVoMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzM7IiBkPSJNMTI5NCA3NjdsLTYzOCAtMjgzbC0zNzggMTcwbC03OCAtNjB2LTIyNGwxMDAgLTE1MHYtMTk5bC0xNTAgMTQ4bC0xNTAgLTE0OXYyMDBsMTAwIDE1MHYyNTBxMCA0IC0wLjUgMTAuNXQwIDkuNXQxIDh0MyA4dDYuNSA2bDQ3IDQwbC0xNDcgNjVsNjQyIDI4M3pNMTAwMCAzODBsLTM1MCAtMTY2bC0zNTAgMTY2djE0N2wzNTAgLTE2NWwzNTAgMTY1di0xNDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzNDsiIGQ9Ik0yNTAgODAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek02NTAgODAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek0xMDUwIDgwMHE2MiAwIDEwNiAtNDR0NDQgLTEwNnQtNDQgLTEwNnQtMTA2IC00NHQtMTA2IDQ0dC00NCAxMDZ0NDQgMTA2dDEwNiA0NHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjM1OyIgZD0iTTU1MCAxMTAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek01NTAgNzAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek01NTAgMzAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzY7IiBkPSJNMTI1IDExMDBoOTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtOTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTEyNSA3MDBoOTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtOTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjUgdDE3LjUgNy41ek0xMjUgMzAwaDk1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTk1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzc7IiBkPSJNMzUwIDEyMDBoNTAwcTE2MiAwIDI1NiAtOTMuNXQ5NCAtMjU2LjV2LTUwMHEwIC0xNjUgLTkzLjUgLTI1Ny41dC0yNTYuNSAtOTIuNWgtNTAwcS0xNjUgMCAtMjU3LjUgOTIuNXQtOTIuNSAyNTcuNXY1MDBxMCAxNjUgOTIuNSAyNTcuNXQyNTcuNSA5Mi41ek05MDAgMTAwMGgtNjAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di02MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDYwMHE0MSAwIDcwLjUgMjkuNSB0MjkuNSA3MC41djYwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNXpNMzUwIDkwMGg1MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTMwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYzMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek00MDAgODAwdi0yMDBoNDAwdjIwMGgtNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzg7IiBkPSJNMTUwIDExMDBoMTAwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTIwMGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTIwMGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTIwMGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNSB0LTM1LjUgLTE0LjVoLTEwMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjVoNTB2MjAwaC01MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV0MTQuNSAzNS41dDM1LjUgMTQuNWg1MHYyMDBoLTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXQxNC41IDM1LjV0MzUuNSAxNC41aDUwdjIwMGgtNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzOTsiIGQ9Ik02NTAgMTE4N3E4NyAtNjcgMTE4LjUgLTE1NnQwIC0xNzh0LTExOC41IC0xNTVxLTg3IDY2IC0xMTguNSAxNTV0MCAxNzh0MTE4LjUgMTU2ek0zMDAgODAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnEtMTI0IDAgLTIxMiA4OHQtODggMjEyek0xMDAwIDgwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhxMCAxMjQgODggMjEydDIxMiA4OHpNMzAwIDUwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnogTTEwMDAgNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek03MDAgMTk5di0xNDRxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjV0LTM1LjUgMTQuNXQtMTQuNSAzNS41djE0MnE0MCAtNCA0MyAtNHExNyAwIDU3IDZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI0MDsiIGQ9Ik03NDUgODc4bDY5IDE5cTI1IDYgNDUgLTEybDI5OCAtMjk1cTExIC0xMSAxNSAtMjYuNXQtMiAtMzAuNXEtNSAtMTQgLTE4IC0yMy41dC0yOCAtOS41aC04cTEgMCAxIC0xM3EwIC0yOSAtMiAtNTZ0LTguNSAtNjJ0LTIwIC02M3QtMzMgLTUzdC01MSAtMzl0LTcyLjUgLTE0aC0xNDZxLTE4NCAwIC0xODQgMjg4cTAgMjQgMTAgNDdxLTIwIDQgLTYyIDR0LTYzIC00cTExIC0yNCAxMSAtNDdxMCAtMjg4IC0xODQgLTI4OGgtMTQyIHEtNDggMCAtODQuNSAyMXQtNTYgNTF0LTMyIDcxLjV0LTE2IDc1dC0zLjUgNjguNXEwIDEzIDIgMTNoLTdxLTE1IDAgLTI3LjUgOS41dC0xOC41IDIzLjVxLTYgMTUgLTIgMzAuNXQxNSAyNS41bDI5OCAyOTZxMjAgMTggNDYgMTFsNzYgLTE5cTIwIC01IDMwLjUgLTIyLjV0NS41IC0zNy41dC0yMi41IC0zMXQtMzcuNSAtNWwtNTEgMTJsLTE4MiAtMTkzaDg5MWwtMTgyIDE5M2wtNDQgLTEycS0yMCAtNSAtMzcuNSA2dC0yMi41IDMxdDYgMzcuNSB0MzEgMjIuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQxOyIgZD0iTTEyMDAgOTAwaC01MHEwIDIxIC00IDM3dC05LjUgMjYuNXQtMTggMTcuNXQtMjIgMTF0LTI4LjUgNS41dC0zMSAydC0zNyAwLjVoLTIwMHYtODUwcTAgLTIyIDI1IC0zNC41dDUwIC0xMy41bDI1IC0ydi0xMDBoLTQwMHYxMDBxNCAwIDExIDAuNXQyNCAzdDMwIDd0MjQgMTV0MTEgMjQuNXY4NTBoLTIwMHEtMjUgMCAtMzcgLTAuNXQtMzEgLTJ0LTI4LjUgLTUuNXQtMjIgLTExdC0xOCAtMTcuNXQtOS41IC0yNi41dC00IC0zN2gtNTB2MzAwIGgxMDAwdi0zMDB6TTUwMCA0NTBoLTI1cTAgMTUgLTQgMjQuNXQtOSAxNC41dC0xNyA3LjV0LTIwIDN0LTI1IDAuNWgtMTAwdi00MjVxMCAtMTEgMTIuNSAtMTcuNXQyNS41IC03LjVoMTJ2LTUwaC0yMDB2NTBxNTAgMCA1MCAyNXY0MjVoLTEwMHEtMTcgMCAtMjUgLTAuNXQtMjAgLTN0LTE3IC03LjV0LTkgLTE0LjV0LTQgLTI0LjVoLTI1djE1MGg1MDB2LTE1MHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQyOyIgZD0iTTEwMDAgMzAwdjUwcS0yNSAwIC01NSAzMnEtMTQgMTQgLTI1IDMxdC0xNiAyN2wtNCAxMWwtMjg5IDc0N2gtNjlsLTMwMCAtNzU0cS0xOCAtMzUgLTM5IC01NnEtOSAtOSAtMjQuNSAtMTguNXQtMjYuNSAtMTQuNWwtMTEgLTV2LTUwaDI3M3Y1MHEtNDkgMCAtNzguNSAyMS41dC0xMS41IDY3LjVsNjkgMTc2aDI5M2w2MSAtMTY2cTEzIC0zNCAtMy41IC02Ni41dC01NS41IC0zMi41di01MGgzMTJ6TTQxMiA2OTFsMTM0IDM0MmwxMjEgLTM0MiBoLTI1NXpNMTEwMCAxNTB2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNDM7IiBkPSJNNTAgMTIwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNjExIDExMThoLTcwcS0xMyAwIC0xOCAtMTJsLTI5OSAtNzUzcS0xNyAtMzIgLTM1IC01MXEtMTggLTE4IC01NiAtMzRxLTEyIC01IC0xMiAtMTh2LTUwcTAgLTggNS41IC0xNHQxNC41IC02IGgyNzNxOCAwIDE0IDZ0NiAxNHY1MHEwIDggLTYgMTR0LTE0IDZxLTU1IDAgLTcxIDIzcS0xMCAxNCAwIDM5bDYzIDE2M2gyNjZsNTcgLTE1M3ExMSAtMzEgLTYgLTU1cS0xMiAtMTcgLTM2IC0xN3EtOCAwIC0xNCAtNnQtNiAtMTR2LTUwcTAgLTggNiAtMTR0MTQgLTZoMzEzcTggMCAxNCA2dDYgMTR2NTBxMCA3IC01LjUgMTN0LTEzLjUgN3EtMTcgMCAtNDIgMjVxLTI1IDI3IC00MCA2M2gtMWwtMjg4IDc0OHEtNSAxMiAtMTkgMTJ6TTYzOSA2MTEgaC0xOTdsMTAzIDI2NHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQ0OyIgZD0iTTEyMDAgMTEwMGgtMTIwMHYxMDBoMTIwMHYtMTAwek01MCAxMDAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtOTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djkwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTY1MCAxMDAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDAgcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek03MDAgOTAwdi0zMDBoMzAwdjMwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNDU7IiBkPSJNNTAgMTIwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTkwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY5MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek02NTAgNzAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek03MDAgNjAwdi0zMDBoMzAwdjMwMGgtMzAwek0xMjAwIDBoLTEyMDB2MTAwaDEyMDB2LTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQ2OyIgZD0iTTUwIDEwMDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0zNTBoMTAwdjE1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xNTBoMTAwdi0xMDBoLTEwMHYtMTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djE1MGgtMTAwdi0zNTBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djgwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTcwMCA3MDB2LTMwMGgzMDB2MzAwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI0NzsiIGQ9Ik0xMDAgMGgtMTAwdjEyMDBoMTAwdi0xMjAwek0yNTAgMTEwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0zMDAgMTAwMHYtMzAwaDMwMHYzMDBoLTMwMHpNMjUwIDUwMGg5MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTkwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQ4OyIgZD0iTTYwMCAxMTAwaDE1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xNTB2LTEwMGg0NTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtOTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDM1MHYxMDBoLTE1MHEtMjEgMCAtMzUuNSAxNC41IHQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTUwdjEwMGgxMDB2LTEwMHpNNDAwIDEwMDB2LTMwMGgzMDB2MzAwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI0OTsiIGQ9Ik0xMjAwIDBoLTEwMHYxMjAwaDEwMHYtMTIwMHpNNTUwIDExMDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNjAwIDEwMDB2LTMwMGgzMDB2MzAwaC0zMDB6TTUwIDUwMGg5MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTkwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjUwOyIgZD0iTTg2NSA1NjVsLTQ5NCAtNDk0cS0yMyAtMjMgLTQxIC0yM3EtMTQgMCAtMjIgMTMuNXQtOCAzOC41djEwMDBxMCAyNSA4IDM4LjV0MjIgMTMuNXExOCAwIDQxIC0yM2w0OTQgLTQ5NHExNCAtMTQgMTQgLTM1dC0xNCAtMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI1MTsiIGQ9Ik0zMzUgNjM1bDQ5NCA0OTRxMjkgMjkgNTAgMjAuNXQyMSAtNDkuNXYtMTAwMHEwIC00MSAtMjEgLTQ5LjV0LTUwIDIwLjVsLTQ5NCA0OTRxLTE0IDE0IC0xNCAzNXQxNCAzNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjUyOyIgZD0iTTEwMCA5MDBoMTAwMHE0MSAwIDQ5LjUgLTIxdC0yMC41IC01MGwtNDk0IC00OTRxLTE0IC0xNCAtMzUgLTE0dC0zNSAxNGwtNDk0IDQ5NHEtMjkgMjkgLTIwLjUgNTB0NDkuNSAyMXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjUzOyIgZD0iTTYzNSA4NjVsNDk0IC00OTRxMjkgLTI5IDIwLjUgLTUwdC00OS41IC0yMWgtMTAwMHEtNDEgMCAtNDkuNSAyMXQyMC41IDUwbDQ5NCA0OTRxMTQgMTQgMzUgMTR0MzUgLTE0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNTQ7IiBkPSJNNzAwIDc0MXYtMTgybC02OTIgLTMyM3YyMjFsNDEzIDE5M2wtNDEzIDE5M3YyMjF6TTEyMDAgMGgtODAwdjIwMGg4MDB2LTIwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU1OyIgZD0iTTEyMDAgOTAwaC0yMDB2LTEwMGgyMDB2LTEwMGgtMzAwdjMwMGgyMDB2MTAwaC0yMDB2MTAwaDMwMHYtMzAwek0wIDcwMGg1MHEwIDIxIDQgMzd0OS41IDI2LjV0MTggMTcuNXQyMiAxMXQyOC41IDUuNXQzMSAydDM3IDAuNWgxMDB2LTU1MHEwIC0yMiAtMjUgLTM0LjV0LTUwIC0xMy41bC0yNSAtMnYtMTAwaDQwMHYxMDBxLTQgMCAtMTEgMC41dC0yNCAzdC0zMCA3dC0yNCAxNXQtMTEgMjQuNXY1NTBoMTAwcTI1IDAgMzcgLTAuNXQzMSAtMiB0MjguNSAtNS41dDIyIC0xMXQxOCAtMTcuNXQ5LjUgLTI2LjV0NCAtMzdoNTB2MzAwaC04MDB2LTMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU2OyIgZD0iTTgwMCA3MDBoLTUwcTAgMjEgLTQgMzd0LTkuNSAyNi41dC0xOCAxNy41dC0yMiAxMXQtMjguNSA1LjV0LTMxIDJ0LTM3IDAuNWgtMTAwdi01NTBxMCAtMjIgMjUgLTM0LjV0NTAgLTE0LjVsMjUgLTF2LTEwMGgtNDAwdjEwMHE0IDAgMTEgMC41dDI0IDN0MzAgN3QyNCAxNXQxMSAyNC41djU1MGgtMTAwcS0yNSAwIC0zNyAtMC41dC0zMSAtMnQtMjguNSAtNS41dC0yMiAtMTF0LTE4IC0xNy41dC05LjUgLTI2LjV0LTQgLTM3aC01MHYzMDAgaDgwMHYtMzAwek0xMTAwIDIwMGgtMjAwdi0xMDBoMjAwdi0xMDBoLTMwMHYzMDBoMjAwdjEwMGgtMjAwdjEwMGgzMDB2LTMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU3OyIgZD0iTTcwMSAxMDk4aDE2MHExNiAwIDIxIC0xMXQtNyAtMjNsLTQ2NCAtNDY0bDQ2NCAtNDY0cTEyIC0xMiA3IC0yM3QtMjEgLTExaC0xNjBxLTEzIDAgLTIzIDlsLTQ3MSA0NzFxLTcgOCAtNyAxOHQ3IDE4bDQ3MSA0NzFxMTAgOSAyMyA5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNTg7IiBkPSJNMzM5IDEwOThoMTYwcTEzIDAgMjMgLTlsNDcxIC00NzFxNyAtOCA3IC0xOHQtNyAtMThsLTQ3MSAtNDcxcS0xMCAtOSAtMjMgLTloLTE2MHEtMTYgMCAtMjEgMTF0NyAyM2w0NjQgNDY0bC00NjQgNDY0cS0xMiAxMiAtNyAyM3QyMSAxMXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU5OyIgZD0iTTEwODcgODgycTExIC01IDExIC0yMXYtMTYwcTAgLTEzIC05IC0yM2wtNDcxIC00NzFxLTggLTcgLTE4IC03dC0xOCA3bC00NzEgNDcxcS05IDEwIC05IDIzdjE2MHEwIDE2IDExIDIxdDIzIC03bDQ2NCAtNDY0bDQ2NCA0NjRxMTIgMTIgMjMgN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjYwOyIgZD0iTTYxOCA5OTNsNDcxIC00NzFxOSAtMTAgOSAtMjN2LTE2MHEwIC0xNiAtMTEgLTIxdC0yMyA3bC00NjQgNDY0bC00NjQgLTQ2NHEtMTIgLTEyIC0yMyAtN3QtMTEgMjF2MTYwcTAgMTMgOSAyM2w0NzEgNDcxcTggNyAxOCA3dDE4IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGY4ZmY7IiBkPSJNMTAwMCAxMjAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek00NTAgMTAwMGgxMDBxMjEgMCA0MCAtMTR0MjYgLTMzbDc5IC0xOTRxNSAxIDE2IDNxMzQgNiA1NCA5LjV0NjAgN3Q2NS41IDF0NjEgLTEwdDU2LjUgLTIzdDQyLjUgLTQydDI5IC02NHQ1IC05MnQtMTkuNSAtMTIxLjVxLTEgLTcgLTMgLTE5LjV0LTExIC01MHQtMjAuNSAtNzN0LTMyLjUgLTgxLjV0LTQ2LjUgLTgzdC02NCAtNzAgdC04Mi41IC01MHEtMTMgLTUgLTQyIC01dC02NS41IDIuNXQtNDcuNSAyLjVxLTE0IDAgLTQ5LjUgLTMuNXQtNjMgLTMuNXQtNDMuNSA3cS01NyAyNSAtMTA0LjUgNzguNXQtNzUgMTExLjV0LTQ2LjUgMTEydC0yNiA5MGwtNyAzNXEtMTUgNjMgLTE4IDExNXQ0LjUgODguNXQyNiA2NHQzOS41IDQzLjV0NTIgMjUuNXQ1OC41IDEzdDYyLjUgMnQ1OS41IC00LjV0NTUuNSAtOGwtMTQ3IDE5MnEtMTIgMTggLTUuNSAzMHQyNy41IDEyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDFmNTExOyIgZD0iTTI1MCAxMjAwaDYwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xNTB2LTUwMGwtMjU1IC0xNzhxLTE5IC05IC0zMiAtMXQtMTMgMjl2NjUwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQwMCAxMTAwdi0xMDBoMzAwdjEwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDFmNmFhOyIgZD0iTTI1MCAxMjAwaDc1MHEzOSAwIDY5LjUgLTQwLjV0MzAuNSAtODQuNXYtOTMzbC03MDAgLTExN3Y5NTBsNjAwIDEyNWgtNzAwdi0xMDAwaC0xMDB2MTAyNXEwIDIzIDE1LjUgNDl0MzQuNSAyNnpNNTAwIDUyNXYtMTAwbDEwMCAyMHYxMDB6IiAvPgo8L2ZvbnQ%2BCjwvZGVmcz48L3N2Zz4g%29%20format%28%27svg%27%29%7D%2Eglyphicon%7Bposition%3Arelative%3Btop%3A1px%3Bdisplay%3Ainline%2Dblock%3Bfont%2Dfamily%3A%27Glyphicons%20Halflings%27%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%3B%2Dwebkit%2Dfont%2Dsmoothing%3Aantialiased%3B%2Dmoz%2Dosx%2Dfont%2Dsmoothing%3Agrayscale%7D%2Eglyphicon%2Dasterisk%3Abefore%7Bcontent%3A%22%5C2a%22%7D%2Eglyphicon%2Dplus%3Abefore%7Bcontent%3A%22%5C2b%22%7D%2Eglyphicon%2Deur%3Abefore%2C%2Eglyphicon%2Deuro%3Abefore%7Bcontent%3A%22%5C20ac%22%7D%2Eglyphicon%2Dminus%3Abefore%7Bcontent%3A%22%5C2212%22%7D%2Eglyphicon%2Dcloud%3Abefore%7Bcontent%3A%22%5C2601%22%7D%2Eglyphicon%2Denvelope%3Abefore%7Bcontent%3A%22%5C2709%22%7D%2Eglyphicon%2Dpencil%3Abefore%7Bcontent%3A%22%5C270f%22%7D%2Eglyphicon%2Dglass%3Abefore%7Bcontent%3A%22%5Ce001%22%7D%2Eglyphicon%2Dmusic%3Abefore%7Bcontent%3A%22%5Ce002%22%7D%2Eglyphicon%2Dsearch%3Abefore%7Bcontent%3A%22%5Ce003%22%7D%2Eglyphicon%2Dheart%3Abefore%7Bcontent%3A%22%5Ce005%22%7D%2Eglyphicon%2Dstar%3Abefore%7Bcontent%3A%22%5Ce006%22%7D%2Eglyphicon%2Dstar%2Dempty%3Abefore%7Bcontent%3A%22%5Ce007%22%7D%2Eglyphicon%2Duser%3Abefore%7Bcontent%3A%22%5Ce008%22%7D%2Eglyphicon%2Dfilm%3Abefore%7Bcontent%3A%22%5Ce009%22%7D%2Eglyphicon%2Dth%2Dlarge%3Abefore%7Bcontent%3A%22%5Ce010%22%7D%2Eglyphicon%2Dth%3Abefore%7Bcontent%3A%22%5Ce011%22%7D%2Eglyphicon%2Dth%2Dlist%3Abefore%7Bcontent%3A%22%5Ce012%22%7D%2Eglyphicon%2Dok%3Abefore%7Bcontent%3A%22%5Ce013%22%7D%2Eglyphicon%2Dremove%3Abefore%7Bcontent%3A%22%5Ce014%22%7D%2Eglyphicon%2Dzoom%2Din%3Abefore%7Bcontent%3A%22%5Ce015%22%7D%2Eglyphicon%2Dzoom%2Dout%3Abefore%7Bcontent%3A%22%5Ce016%22%7D%2Eglyphicon%2Doff%3Abefore%7Bcontent%3A%22%5Ce017%22%7D%2Eglyphicon%2Dsignal%3Abefore%7Bcontent%3A%22%5Ce018%22%7D%2Eglyphicon%2Dcog%3Abefore%7Bcontent%3A%22%5Ce019%22%7D%2Eglyphicon%2Dtrash%3Abefore%7Bcontent%3A%22%5Ce020%22%7D%2Eglyphicon%2Dhome%3Abefore%7Bcontent%3A%22%5Ce021%22%7D%2Eglyphicon%2Dfile%3Abefore%7Bcontent%3A%22%5Ce022%22%7D%2Eglyphicon%2Dtime%3Abefore%7Bcontent%3A%22%5Ce023%22%7D%2Eglyphicon%2Droad%3Abefore%7Bcontent%3A%22%5Ce024%22%7D%2Eglyphicon%2Ddownload%2Dalt%3Abefore%7Bcontent%3A%22%5Ce025%22%7D%2Eglyphicon%2Ddownload%3Abefore%7Bcontent%3A%22%5Ce026%22%7D%2Eglyphicon%2Dupload%3Abefore%7Bcontent%3A%22%5Ce027%22%7D%2Eglyphicon%2Dinbox%3Abefore%7Bcontent%3A%22%5Ce028%22%7D%2Eglyphicon%2Dplay%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce029%22%7D%2Eglyphicon%2Drepeat%3Abefore%7Bcontent%3A%22%5Ce030%22%7D%2Eglyphicon%2Drefresh%3Abefore%7Bcontent%3A%22%5Ce031%22%7D%2Eglyphicon%2Dlist%2Dalt%3Abefore%7Bcontent%3A%22%5Ce032%22%7D%2Eglyphicon%2Dlock%3Abefore%7Bcontent%3A%22%5Ce033%22%7D%2Eglyphicon%2Dflag%3Abefore%7Bcontent%3A%22%5Ce034%22%7D%2Eglyphicon%2Dheadphones%3Abefore%7Bcontent%3A%22%5Ce035%22%7D%2Eglyphicon%2Dvolume%2Doff%3Abefore%7Bcontent%3A%22%5Ce036%22%7D%2Eglyphicon%2Dvolume%2Ddown%3Abefore%7Bcontent%3A%22%5Ce037%22%7D%2Eglyphicon%2Dvolume%2Dup%3Abefore%7Bcontent%3A%22%5Ce038%22%7D%2Eglyphicon%2Dqrcode%3Abefore%7Bcontent%3A%22%5Ce039%22%7D%2Eglyphicon%2Dbarcode%3Abefore%7Bcontent%3A%22%5Ce040%22%7D%2Eglyphicon%2Dtag%3Abefore%7Bcontent%3A%22%5Ce041%22%7D%2Eglyphicon%2Dtags%3Abefore%7Bcontent%3A%22%5Ce042%22%7D%2Eglyphicon%2Dbook%3Abefore%7Bcontent%3A%22%5Ce043%22%7D%2Eglyphicon%2Dbookmark%3Abefore%7Bcontent%3A%22%5Ce044%22%7D%2Eglyphicon%2Dprint%3Abefore%7Bcontent%3A%22%5Ce045%22%7D%2Eglyphicon%2Dcamera%3Abefore%7Bcontent%3A%22%5Ce046%22%7D%2Eglyphicon%2Dfont%3Abefore%7Bcontent%3A%22%5Ce047%22%7D%2Eglyphicon%2Dbold%3Abefore%7Bcontent%3A%22%5Ce048%22%7D%2Eglyphicon%2Ditalic%3Abefore%7Bcontent%3A%22%5Ce049%22%7D%2Eglyphicon%2Dtext%2Dheight%3Abefore%7Bcontent%3A%22%5Ce050%22%7D%2Eglyphicon%2Dtext%2Dwidth%3Abefore%7Bcontent%3A%22%5Ce051%22%7D%2Eglyphicon%2Dalign%2Dleft%3Abefore%7Bcontent%3A%22%5Ce052%22%7D%2Eglyphicon%2Dalign%2Dcenter%3Abefore%7Bcontent%3A%22%5Ce053%22%7D%2Eglyphicon%2Dalign%2Dright%3Abefore%7Bcontent%3A%22%5Ce054%22%7D%2Eglyphicon%2Dalign%2Djustify%3Abefore%7Bcontent%3A%22%5Ce055%22%7D%2Eglyphicon%2Dlist%3Abefore%7Bcontent%3A%22%5Ce056%22%7D%2Eglyphicon%2Dindent%2Dleft%3Abefore%7Bcontent%3A%22%5Ce057%22%7D%2Eglyphicon%2Dindent%2Dright%3Abefore%7Bcontent%3A%22%5Ce058%22%7D%2Eglyphicon%2Dfacetime%2Dvideo%3Abefore%7Bcontent%3A%22%5Ce059%22%7D%2Eglyphicon%2Dpicture%3Abefore%7Bcontent%3A%22%5Ce060%22%7D%2Eglyphicon%2Dmap%2Dmarker%3Abefore%7Bcontent%3A%22%5Ce062%22%7D%2Eglyphicon%2Dadjust%3Abefore%7Bcontent%3A%22%5Ce063%22%7D%2Eglyphicon%2Dtint%3Abefore%7Bcontent%3A%22%5Ce064%22%7D%2Eglyphicon%2Dedit%3Abefore%7Bcontent%3A%22%5Ce065%22%7D%2Eglyphicon%2Dshare%3Abefore%7Bcontent%3A%22%5Ce066%22%7D%2Eglyphicon%2Dcheck%3Abefore%7Bcontent%3A%22%5Ce067%22%7D%2Eglyphicon%2Dmove%3Abefore%7Bcontent%3A%22%5Ce068%22%7D%2Eglyphicon%2Dstep%2Dbackward%3Abefore%7Bcontent%3A%22%5Ce069%22%7D%2Eglyphicon%2Dfast%2Dbackward%3Abefore%7Bcontent%3A%22%5Ce070%22%7D%2Eglyphicon%2Dbackward%3Abefore%7Bcontent%3A%22%5Ce071%22%7D%2Eglyphicon%2Dplay%3Abefore%7Bcontent%3A%22%5Ce072%22%7D%2Eglyphicon%2Dpause%3Abefore%7Bcontent%3A%22%5Ce073%22%7D%2Eglyphicon%2Dstop%3Abefore%7Bcontent%3A%22%5Ce074%22%7D%2Eglyphicon%2Dforward%3Abefore%7Bcontent%3A%22%5Ce075%22%7D%2Eglyphicon%2Dfast%2Dforward%3Abefore%7Bcontent%3A%22%5Ce076%22%7D%2Eglyphicon%2Dstep%2Dforward%3Abefore%7Bcontent%3A%22%5Ce077%22%7D%2Eglyphicon%2Deject%3Abefore%7Bcontent%3A%22%5Ce078%22%7D%2Eglyphicon%2Dchevron%2Dleft%3Abefore%7Bcontent%3A%22%5Ce079%22%7D%2Eglyphicon%2Dchevron%2Dright%3Abefore%7Bcontent%3A%22%5Ce080%22%7D%2Eglyphicon%2Dplus%2Dsign%3Abefore%7Bcontent%3A%22%5Ce081%22%7D%2Eglyphicon%2Dminus%2Dsign%3Abefore%7Bcontent%3A%22%5Ce082%22%7D%2Eglyphicon%2Dremove%2Dsign%3Abefore%7Bcontent%3A%22%5Ce083%22%7D%2Eglyphicon%2Dok%2Dsign%3Abefore%7Bcontent%3A%22%5Ce084%22%7D%2Eglyphicon%2Dquestion%2Dsign%3Abefore%7Bcontent%3A%22%5Ce085%22%7D%2Eglyphicon%2Dinfo%2Dsign%3Abefore%7Bcontent%3A%22%5Ce086%22%7D%2Eglyphicon%2Dscreenshot%3Abefore%7Bcontent%3A%22%5Ce087%22%7D%2Eglyphicon%2Dremove%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce088%22%7D%2Eglyphicon%2Dok%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce089%22%7D%2Eglyphicon%2Dban%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce090%22%7D%2Eglyphicon%2Darrow%2Dleft%3Abefore%7Bcontent%3A%22%5Ce091%22%7D%2Eglyphicon%2Darrow%2Dright%3Abefore%7Bcontent%3A%22%5Ce092%22%7D%2Eglyphicon%2Darrow%2Dup%3Abefore%7Bcontent%3A%22%5Ce093%22%7D%2Eglyphicon%2Darrow%2Ddown%3Abefore%7Bcontent%3A%22%5Ce094%22%7D%2Eglyphicon%2Dshare%2Dalt%3Abefore%7Bcontent%3A%22%5Ce095%22%7D%2Eglyphicon%2Dresize%2Dfull%3Abefore%7Bcontent%3A%22%5Ce096%22%7D%2Eglyphicon%2Dresize%2Dsmall%3Abefore%7Bcontent%3A%22%5Ce097%22%7D%2Eglyphicon%2Dexclamation%2Dsign%3Abefore%7Bcontent%3A%22%5Ce101%22%7D%2Eglyphicon%2Dgift%3Abefore%7Bcontent%3A%22%5Ce102%22%7D%2Eglyphicon%2Dleaf%3Abefore%7Bcontent%3A%22%5Ce103%22%7D%2Eglyphicon%2Dfire%3Abefore%7Bcontent%3A%22%5Ce104%22%7D%2Eglyphicon%2Deye%2Dopen%3Abefore%7Bcontent%3A%22%5Ce105%22%7D%2Eglyphicon%2Deye%2Dclose%3Abefore%7Bcontent%3A%22%5Ce106%22%7D%2Eglyphicon%2Dwarning%2Dsign%3Abefore%7Bcontent%3A%22%5Ce107%22%7D%2Eglyphicon%2Dplane%3Abefore%7Bcontent%3A%22%5Ce108%22%7D%2Eglyphicon%2Dcalendar%3Abefore%7Bcontent%3A%22%5Ce109%22%7D%2Eglyphicon%2Drandom%3Abefore%7Bcontent%3A%22%5Ce110%22%7D%2Eglyphicon%2Dcomment%3Abefore%7Bcontent%3A%22%5Ce111%22%7D%2Eglyphicon%2Dmagnet%3Abefore%7Bcontent%3A%22%5Ce112%22%7D%2Eglyphicon%2Dchevron%2Dup%3Abefore%7Bcontent%3A%22%5Ce113%22%7D%2Eglyphicon%2Dchevron%2Ddown%3Abefore%7Bcontent%3A%22%5Ce114%22%7D%2Eglyphicon%2Dretweet%3Abefore%7Bcontent%3A%22%5Ce115%22%7D%2Eglyphicon%2Dshopping%2Dcart%3Abefore%7Bcontent%3A%22%5Ce116%22%7D%2Eglyphicon%2Dfolder%2Dclose%3Abefore%7Bcontent%3A%22%5Ce117%22%7D%2Eglyphicon%2Dfolder%2Dopen%3Abefore%7Bcontent%3A%22%5Ce118%22%7D%2Eglyphicon%2Dresize%2Dvertical%3Abefore%7Bcontent%3A%22%5Ce119%22%7D%2Eglyphicon%2Dresize%2Dhorizontal%3Abefore%7Bcontent%3A%22%5Ce120%22%7D%2Eglyphicon%2Dhdd%3Abefore%7Bcontent%3A%22%5Ce121%22%7D%2Eglyphicon%2Dbullhorn%3Abefore%7Bcontent%3A%22%5Ce122%22%7D%2Eglyphicon%2Dbell%3Abefore%7Bcontent%3A%22%5Ce123%22%7D%2Eglyphicon%2Dcertificate%3Abefore%7Bcontent%3A%22%5Ce124%22%7D%2Eglyphicon%2Dthumbs%2Dup%3Abefore%7Bcontent%3A%22%5Ce125%22%7D%2Eglyphicon%2Dthumbs%2Ddown%3Abefore%7Bcontent%3A%22%5Ce126%22%7D%2Eglyphicon%2Dhand%2Dright%3Abefore%7Bcontent%3A%22%5Ce127%22%7D%2Eglyphicon%2Dhand%2Dleft%3Abefore%7Bcontent%3A%22%5Ce128%22%7D%2Eglyphicon%2Dhand%2Dup%3Abefore%7Bcontent%3A%22%5Ce129%22%7D%2Eglyphicon%2Dhand%2Ddown%3Abefore%7Bcontent%3A%22%5Ce130%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Dright%3Abefore%7Bcontent%3A%22%5Ce131%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Dleft%3Abefore%7Bcontent%3A%22%5Ce132%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Dup%3Abefore%7Bcontent%3A%22%5Ce133%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Ddown%3Abefore%7Bcontent%3A%22%5Ce134%22%7D%2Eglyphicon%2Dglobe%3Abefore%7Bcontent%3A%22%5Ce135%22%7D%2Eglyphicon%2Dwrench%3Abefore%7Bcontent%3A%22%5Ce136%22%7D%2Eglyphicon%2Dtasks%3Abefore%7Bcontent%3A%22%5Ce137%22%7D%2Eglyphicon%2Dfilter%3Abefore%7Bcontent%3A%22%5Ce138%22%7D%2Eglyphicon%2Dbriefcase%3Abefore%7Bcontent%3A%22%5Ce139%22%7D%2Eglyphicon%2Dfullscreen%3Abefore%7Bcontent%3A%22%5Ce140%22%7D%2Eglyphicon%2Ddashboard%3Abefore%7Bcontent%3A%22%5Ce141%22%7D%2Eglyphicon%2Dpaperclip%3Abefore%7Bcontent%3A%22%5Ce142%22%7D%2Eglyphicon%2Dheart%2Dempty%3Abefore%7Bcontent%3A%22%5Ce143%22%7D%2Eglyphicon%2Dlink%3Abefore%7Bcontent%3A%22%5Ce144%22%7D%2Eglyphicon%2Dphone%3Abefore%7Bcontent%3A%22%5Ce145%22%7D%2Eglyphicon%2Dpushpin%3Abefore%7Bcontent%3A%22%5Ce146%22%7D%2Eglyphicon%2Dusd%3Abefore%7Bcontent%3A%22%5Ce148%22%7D%2Eglyphicon%2Dgbp%3Abefore%7Bcontent%3A%22%5Ce149%22%7D%2Eglyphicon%2Dsort%3Abefore%7Bcontent%3A%22%5Ce150%22%7D%2Eglyphicon%2Dsort%2Dby%2Dalphabet%3Abefore%7Bcontent%3A%22%5Ce151%22%7D%2Eglyphicon%2Dsort%2Dby%2Dalphabet%2Dalt%3Abefore%7Bcontent%3A%22%5Ce152%22%7D%2Eglyphicon%2Dsort%2Dby%2Dorder%3Abefore%7Bcontent%3A%22%5Ce153%22%7D%2Eglyphicon%2Dsort%2Dby%2Dorder%2Dalt%3Abefore%7Bcontent%3A%22%5Ce154%22%7D%2Eglyphicon%2Dsort%2Dby%2Dattributes%3Abefore%7Bcontent%3A%22%5Ce155%22%7D%2Eglyphicon%2Dsort%2Dby%2Dattributes%2Dalt%3Abefore%7Bcontent%3A%22%5Ce156%22%7D%2Eglyphicon%2Dunchecked%3Abefore%7Bcontent%3A%22%5Ce157%22%7D%2Eglyphicon%2Dexpand%3Abefore%7Bcontent%3A%22%5Ce158%22%7D%2Eglyphicon%2Dcollapse%2Ddown%3Abefore%7Bcontent%3A%22%5Ce159%22%7D%2Eglyphicon%2Dcollapse%2Dup%3Abefore%7Bcontent%3A%22%5Ce160%22%7D%2Eglyphicon%2Dlog%2Din%3Abefore%7Bcontent%3A%22%5Ce161%22%7D%2Eglyphicon%2Dflash%3Abefore%7Bcontent%3A%22%5Ce162%22%7D%2Eglyphicon%2Dlog%2Dout%3Abefore%7Bcontent%3A%22%5Ce163%22%7D%2Eglyphicon%2Dnew%2Dwindow%3Abefore%7Bcontent%3A%22%5Ce164%22%7D%2Eglyphicon%2Drecord%3Abefore%7Bcontent%3A%22%5Ce165%22%7D%2Eglyphicon%2Dsave%3Abefore%7Bcontent%3A%22%5Ce166%22%7D%2Eglyphicon%2Dopen%3Abefore%7Bcontent%3A%22%5Ce167%22%7D%2Eglyphicon%2Dsaved%3Abefore%7Bcontent%3A%22%5Ce168%22%7D%2Eglyphicon%2Dimport%3Abefore%7Bcontent%3A%22%5Ce169%22%7D%2Eglyphicon%2Dexport%3Abefore%7Bcontent%3A%22%5Ce170%22%7D%2Eglyphicon%2Dsend%3Abefore%7Bcontent%3A%22%5Ce171%22%7D%2Eglyphicon%2Dfloppy%2Ddisk%3Abefore%7Bcontent%3A%22%5Ce172%22%7D%2Eglyphicon%2Dfloppy%2Dsaved%3Abefore%7Bcontent%3A%22%5Ce173%22%7D%2Eglyphicon%2Dfloppy%2Dremove%3Abefore%7Bcontent%3A%22%5Ce174%22%7D%2Eglyphicon%2Dfloppy%2Dsave%3Abefore%7Bcontent%3A%22%5Ce175%22%7D%2Eglyphicon%2Dfloppy%2Dopen%3Abefore%7Bcontent%3A%22%5Ce176%22%7D%2Eglyphicon%2Dcredit%2Dcard%3Abefore%7Bcontent%3A%22%5Ce177%22%7D%2Eglyphicon%2Dtransfer%3Abefore%7Bcontent%3A%22%5Ce178%22%7D%2Eglyphicon%2Dcutlery%3Abefore%7Bcontent%3A%22%5Ce179%22%7D%2Eglyphicon%2Dheader%3Abefore%7Bcontent%3A%22%5Ce180%22%7D%2Eglyphicon%2Dcompressed%3Abefore%7Bcontent%3A%22%5Ce181%22%7D%2Eglyphicon%2Dearphone%3Abefore%7Bcontent%3A%22%5Ce182%22%7D%2Eglyphicon%2Dphone%2Dalt%3Abefore%7Bcontent%3A%22%5Ce183%22%7D%2Eglyphicon%2Dtower%3Abefore%7Bcontent%3A%22%5Ce184%22%7D%2Eglyphicon%2Dstats%3Abefore%7Bcontent%3A%22%5Ce185%22%7D%2Eglyphicon%2Dsd%2Dvideo%3Abefore%7Bcontent%3A%22%5Ce186%22%7D%2Eglyphicon%2Dhd%2Dvideo%3Abefore%7Bcontent%3A%22%5Ce187%22%7D%2Eglyphicon%2Dsubtitles%3Abefore%7Bcontent%3A%22%5Ce188%22%7D%2Eglyphicon%2Dsound%2Dstereo%3Abefore%7Bcontent%3A%22%5Ce189%22%7D%2Eglyphicon%2Dsound%2Ddolby%3Abefore%7Bcontent%3A%22%5Ce190%22%7D%2Eglyphicon%2Dsound%2D5%2D1%3Abefore%7Bcontent%3A%22%5Ce191%22%7D%2Eglyphicon%2Dsound%2D6%2D1%3Abefore%7Bcontent%3A%22%5Ce192%22%7D%2Eglyphicon%2Dsound%2D7%2D1%3Abefore%7Bcontent%3A%22%5Ce193%22%7D%2Eglyphicon%2Dcopyright%2Dmark%3Abefore%7Bcontent%3A%22%5Ce194%22%7D%2Eglyphicon%2Dregistration%2Dmark%3Abefore%7Bcontent%3A%22%5Ce195%22%7D%2Eglyphicon%2Dcloud%2Ddownload%3Abefore%7Bcontent%3A%22%5Ce197%22%7D%2Eglyphicon%2Dcloud%2Dupload%3Abefore%7Bcontent%3A%22%5Ce198%22%7D%2Eglyphicon%2Dtree%2Dconifer%3Abefore%7Bcontent%3A%22%5Ce199%22%7D%2Eglyphicon%2Dtree%2Ddeciduous%3Abefore%7Bcontent%3A%22%5Ce200%22%7D%2Eglyphicon%2Dcd%3Abefore%7Bcontent%3A%22%5Ce201%22%7D%2Eglyphicon%2Dsave%2Dfile%3Abefore%7Bcontent%3A%22%5Ce202%22%7D%2Eglyphicon%2Dopen%2Dfile%3Abefore%7Bcontent%3A%22%5Ce203%22%7D%2Eglyphicon%2Dlevel%2Dup%3Abefore%7Bcontent%3A%22%5Ce204%22%7D%2Eglyphicon%2Dcopy%3Abefore%7Bcontent%3A%22%5Ce205%22%7D%2Eglyphicon%2Dpaste%3Abefore%7Bcontent%3A%22%5Ce206%22%7D%2Eglyphicon%2Dalert%3Abefore%7Bcontent%3A%22%5Ce209%22%7D%2Eglyphicon%2Dequalizer%3Abefore%7Bcontent%3A%22%5Ce210%22%7D%2Eglyphicon%2Dking%3Abefore%7Bcontent%3A%22%5Ce211%22%7D%2Eglyphicon%2Dqueen%3Abefore%7Bcontent%3A%22%5Ce212%22%7D%2Eglyphicon%2Dpawn%3Abefore%7Bcontent%3A%22%5Ce213%22%7D%2Eglyphicon%2Dbishop%3Abefore%7Bcontent%3A%22%5Ce214%22%7D%2Eglyphicon%2Dknight%3Abefore%7Bcontent%3A%22%5Ce215%22%7D%2Eglyphicon%2Dbaby%2Dformula%3Abefore%7Bcontent%3A%22%5Ce216%22%7D%2Eglyphicon%2Dtent%3Abefore%7Bcontent%3A%22%5C26fa%22%7D%2Eglyphicon%2Dblackboard%3Abefore%7Bcontent%3A%22%5Ce218%22%7D%2Eglyphicon%2Dbed%3Abefore%7Bcontent%3A%22%5Ce219%22%7D%2Eglyphicon%2Dapple%3Abefore%7Bcontent%3A%22%5Cf8ff%22%7D%2Eglyphicon%2Derase%3Abefore%7Bcontent%3A%22%5Ce221%22%7D%2Eglyphicon%2Dhourglass%3Abefore%7Bcontent%3A%22%5C231b%22%7D%2Eglyphicon%2Dlamp%3Abefore%7Bcontent%3A%22%5Ce223%22%7D%2Eglyphicon%2Dduplicate%3Abefore%7Bcontent%3A%22%5Ce224%22%7D%2Eglyphicon%2Dpiggy%2Dbank%3Abefore%7Bcontent%3A%22%5Ce225%22%7D%2Eglyphicon%2Dscissors%3Abefore%7Bcontent%3A%22%5Ce226%22%7D%2Eglyphicon%2Dbitcoin%3Abefore%7Bcontent%3A%22%5Ce227%22%7D%2Eglyphicon%2Dbtc%3Abefore%7Bcontent%3A%22%5Ce227%22%7D%2Eglyphicon%2Dxbt%3Abefore%7Bcontent%3A%22%5Ce227%22%7D%2Eglyphicon%2Dyen%3Abefore%7Bcontent%3A%22%5C00a5%22%7D%2Eglyphicon%2Djpy%3Abefore%7Bcontent%3A%22%5C00a5%22%7D%2Eglyphicon%2Druble%3Abefore%7Bcontent%3A%22%5C20bd%22%7D%2Eglyphicon%2Drub%3Abefore%7Bcontent%3A%22%5C20bd%22%7D%2Eglyphicon%2Dscale%3Abefore%7Bcontent%3A%22%5Ce230%22%7D%2Eglyphicon%2Dice%2Dlolly%3Abefore%7Bcontent%3A%22%5Ce231%22%7D%2Eglyphicon%2Dice%2Dlolly%2Dtasted%3Abefore%7Bcontent%3A%22%5Ce232%22%7D%2Eglyphicon%2Deducation%3Abefore%7Bcontent%3A%22%5Ce233%22%7D%2Eglyphicon%2Doption%2Dhorizontal%3Abefore%7Bcontent%3A%22%5Ce234%22%7D%2Eglyphicon%2Doption%2Dvertical%3Abefore%7Bcontent%3A%22%5Ce235%22%7D%2Eglyphicon%2Dmenu%2Dhamburger%3Abefore%7Bcontent%3A%22%5Ce236%22%7D%2Eglyphicon%2Dmodal%2Dwindow%3Abefore%7Bcontent%3A%22%5Ce237%22%7D%2Eglyphicon%2Doil%3Abefore%7Bcontent%3A%22%5Ce238%22%7D%2Eglyphicon%2Dgrain%3Abefore%7Bcontent%3A%22%5Ce239%22%7D%2Eglyphicon%2Dsunglasses%3Abefore%7Bcontent%3A%22%5Ce240%22%7D%2Eglyphicon%2Dtext%2Dsize%3Abefore%7Bcontent%3A%22%5Ce241%22%7D%2Eglyphicon%2Dtext%2Dcolor%3Abefore%7Bcontent%3A%22%5Ce242%22%7D%2Eglyphicon%2Dtext%2Dbackground%3Abefore%7Bcontent%3A%22%5Ce243%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dtop%3Abefore%7Bcontent%3A%22%5Ce244%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dbottom%3Abefore%7Bcontent%3A%22%5Ce245%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dhorizontal%3Abefore%7Bcontent%3A%22%5Ce246%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dleft%3Abefore%7Bcontent%3A%22%5Ce247%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dvertical%3Abefore%7Bcontent%3A%22%5Ce248%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dright%3Abefore%7Bcontent%3A%22%5Ce249%22%7D%2Eglyphicon%2Dtriangle%2Dright%3Abefore%7Bcontent%3A%22%5Ce250%22%7D%2Eglyphicon%2Dtriangle%2Dleft%3Abefore%7Bcontent%3A%22%5Ce251%22%7D%2Eglyphicon%2Dtriangle%2Dbottom%3Abefore%7Bcontent%3A%22%5Ce252%22%7D%2Eglyphicon%2Dtriangle%2Dtop%3Abefore%7Bcontent%3A%22%5Ce253%22%7D%2Eglyphicon%2Dconsole%3Abefore%7Bcontent%3A%22%5Ce254%22%7D%2Eglyphicon%2Dsuperscript%3Abefore%7Bcontent%3A%22%5Ce255%22%7D%2Eglyphicon%2Dsubscript%3Abefore%7Bcontent%3A%22%5Ce256%22%7D%2Eglyphicon%2Dmenu%2Dleft%3Abefore%7Bcontent%3A%22%5Ce257%22%7D%2Eglyphicon%2Dmenu%2Dright%3Abefore%7Bcontent%3A%22%5Ce258%22%7D%2Eglyphicon%2Dmenu%2Ddown%3Abefore%7Bcontent%3A%22%5Ce259%22%7D%2Eglyphicon%2Dmenu%2Dup%3Abefore%7Bcontent%3A%22%5Ce260%22%7D%2A%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%7D%3Aafter%2C%3Abefore%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%7Dhtml%7Bfont%2Dsize%3A10px%3B%2Dwebkit%2Dtap%2Dhighlight%2Dcolor%3Argba%280%2C0%2C0%2C0%29%7Dbody%7Bfont%2Dfamily%3A%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23333%3Bbackground%2Dcolor%3A%23fff%7Dbutton%2Cinput%2Cselect%2Ctextarea%7Bfont%2Dfamily%3Ainherit%3Bfont%2Dsize%3Ainherit%3Bline%2Dheight%3Ainherit%7Da%7Bcolor%3A%23337ab7%3Btext%2Ddecoration%3Anone%7Da%3Afocus%2Ca%3Ahover%7Bcolor%3A%2323527c%3Btext%2Ddecoration%3Aunderline%7Da%3Afocus%7Boutline%3Athin%20dotted%3Boutline%3A5px%20auto%20%2Dwebkit%2Dfocus%2Dring%2Dcolor%3Boutline%2Doffset%3A%2D2px%7Dfigure%7Bmargin%3A0%7Dimg%7Bvertical%2Dalign%3Amiddle%7D%2Ecarousel%2Dinner%3E%2Eitem%3Ea%3Eimg%2C%2Ecarousel%2Dinner%3E%2Eitem%3Eimg%2C%2Eimg%2Dresponsive%2C%2Ethumbnail%20a%3Eimg%2C%2Ethumbnail%3Eimg%7Bdisplay%3Ablock%3Bmax%2Dwidth%3A100%25%3Bheight%3Aauto%7D%2Eimg%2Drounded%7Bborder%2Dradius%3A6px%7D%2Eimg%2Dthumbnail%7Bdisplay%3Ainline%2Dblock%3Bmax%2Dwidth%3A100%25%3Bheight%3Aauto%3Bpadding%3A4px%3Bline%2Dheight%3A1%2E42857143%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23ddd%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3Btransition%3Aall%20%2E2s%20ease%2Din%2Dout%7D%2Eimg%2Dcircle%7Bborder%2Dradius%3A50%25%7Dhr%7Bmargin%2Dtop%3A20px%3Bmargin%2Dbottom%3A20px%3Bborder%3A0%3Bborder%2Dtop%3A1px%20solid%20%23eee%7D%2Esr%2Donly%7Bposition%3Aabsolute%3Bwidth%3A1px%3Bheight%3A1px%3Bpadding%3A0%3Bmargin%3A%2D1px%3Boverflow%3Ahidden%3Bclip%3Arect%280%2C0%2C0%2C0%29%3Bborder%3A0%7D%2Esr%2Donly%2Dfocusable%3Aactive%2C%2Esr%2Donly%2Dfocusable%3Afocus%7Bposition%3Astatic%3Bwidth%3Aauto%3Bheight%3Aauto%3Bmargin%3A0%3Boverflow%3Avisible%3Bclip%3Aauto%7D%5Brole%3Dbutton%5D%7Bcursor%3Apointer%7D%2Eh1%2C%2Eh2%2C%2Eh3%2C%2Eh4%2C%2Eh5%2C%2Eh6%2Ch1%2Ch2%2Ch3%2Ch4%2Ch5%2Ch6%7Bfont%2Dfamily%3Ainherit%3Bfont%2Dweight%3A500%3Bline%2Dheight%3A1%2E1%3Bcolor%3Ainherit%7D%2Eh1%20%2Esmall%2C%2Eh1%20small%2C%2Eh2%20%2Esmall%2C%2Eh2%20small%2C%2Eh3%20%2Esmall%2C%2Eh3%20small%2C%2Eh4%20%2Esmall%2C%2Eh4%20small%2C%2Eh5%20%2Esmall%2C%2Eh5%20small%2C%2Eh6%20%2Esmall%2C%2Eh6%20small%2Ch1%20%2Esmall%2Ch1%20small%2Ch2%20%2Esmall%2Ch2%20small%2Ch3%20%2Esmall%2Ch3%20small%2Ch4%20%2Esmall%2Ch4%20small%2Ch5%20%2Esmall%2Ch5%20small%2Ch6%20%2Esmall%2Ch6%20small%7Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%3Bcolor%3A%23777%7D%2Eh1%2C%2Eh2%2C%2Eh3%2Ch1%2Ch2%2Ch3%7Bmargin%2Dtop%3A20px%3Bmargin%2Dbottom%3A10px%7D%2Eh1%20%2Esmall%2C%2Eh1%20small%2C%2Eh2%20%2Esmall%2C%2Eh2%20small%2C%2Eh3%20%2Esmall%2C%2Eh3%20small%2Ch1%20%2Esmall%2Ch1%20small%2Ch2%20%2Esmall%2Ch2%20small%2Ch3%20%2Esmall%2Ch3%20small%7Bfont%2Dsize%3A65%25%7D%2Eh4%2C%2Eh5%2C%2Eh6%2Ch4%2Ch5%2Ch6%7Bmargin%2Dtop%3A10px%3Bmargin%2Dbottom%3A10px%7D%2Eh4%20%2Esmall%2C%2Eh4%20small%2C%2Eh5%20%2Esmall%2C%2Eh5%20small%2C%2Eh6%20%2Esmall%2C%2Eh6%20small%2Ch4%20%2Esmall%2Ch4%20small%2Ch5%20%2Esmall%2Ch5%20small%2Ch6%20%2Esmall%2Ch6%20small%7Bfont%2Dsize%3A75%25%7D%2Eh1%2Ch1%7Bfont%2Dsize%3A36px%7D%2Eh2%2Ch2%7Bfont%2Dsize%3A30px%7D%2Eh3%2Ch3%7Bfont%2Dsize%3A24px%7D%2Eh4%2Ch4%7Bfont%2Dsize%3A18px%7D%2Eh5%2Ch5%7Bfont%2Dsize%3A14px%7D%2Eh6%2Ch6%7Bfont%2Dsize%3A12px%7Dp%7Bmargin%3A0%200%2010px%7D%2Elead%7Bmargin%2Dbottom%3A20px%3Bfont%2Dsize%3A16px%3Bfont%2Dweight%3A300%3Bline%2Dheight%3A1%2E4%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Elead%7Bfont%2Dsize%3A21px%7D%7D%2Esmall%2Csmall%7Bfont%2Dsize%3A85%25%7D%2Emark%2Cmark%7Bpadding%3A%2E2em%3Bbackground%2Dcolor%3A%23fcf8e3%7D%2Etext%2Dleft%7Btext%2Dalign%3Aleft%7D%2Etext%2Dright%7Btext%2Dalign%3Aright%7D%2Etext%2Dcenter%7Btext%2Dalign%3Acenter%7D%2Etext%2Djustify%7Btext%2Dalign%3Ajustify%7D%2Etext%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7D%2Etext%2Dlowercase%7Btext%2Dtransform%3Alowercase%7D%2Etext%2Duppercase%7Btext%2Dtransform%3Auppercase%7D%2Etext%2Dcapitalize%7Btext%2Dtransform%3Acapitalize%7D%2Etext%2Dmuted%7Bcolor%3A%23777%7D%2Etext%2Dprimary%7Bcolor%3A%23337ab7%7Da%2Etext%2Dprimary%3Afocus%2Ca%2Etext%2Dprimary%3Ahover%7Bcolor%3A%23286090%7D%2Etext%2Dsuccess%7Bcolor%3A%233c763d%7Da%2Etext%2Dsuccess%3Afocus%2Ca%2Etext%2Dsuccess%3Ahover%7Bcolor%3A%232b542c%7D%2Etext%2Dinfo%7Bcolor%3A%2331708f%7Da%2Etext%2Dinfo%3Afocus%2Ca%2Etext%2Dinfo%3Ahover%7Bcolor%3A%23245269%7D%2Etext%2Dwarning%7Bcolor%3A%238a6d3b%7Da%2Etext%2Dwarning%3Afocus%2Ca%2Etext%2Dwarning%3Ahover%7Bcolor%3A%2366512c%7D%2Etext%2Ddanger%7Bcolor%3A%23a94442%7Da%2Etext%2Ddanger%3Afocus%2Ca%2Etext%2Ddanger%3Ahover%7Bcolor%3A%23843534%7D%2Ebg%2Dprimary%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23337ab7%7Da%2Ebg%2Dprimary%3Afocus%2Ca%2Ebg%2Dprimary%3Ahover%7Bbackground%2Dcolor%3A%23286090%7D%2Ebg%2Dsuccess%7Bbackground%2Dcolor%3A%23dff0d8%7Da%2Ebg%2Dsuccess%3Afocus%2Ca%2Ebg%2Dsuccess%3Ahover%7Bbackground%2Dcolor%3A%23c1e2b3%7D%2Ebg%2Dinfo%7Bbackground%2Dcolor%3A%23d9edf7%7Da%2Ebg%2Dinfo%3Afocus%2Ca%2Ebg%2Dinfo%3Ahover%7Bbackground%2Dcolor%3A%23afd9ee%7D%2Ebg%2Dwarning%7Bbackground%2Dcolor%3A%23fcf8e3%7Da%2Ebg%2Dwarning%3Afocus%2Ca%2Ebg%2Dwarning%3Ahover%7Bbackground%2Dcolor%3A%23f7ecb5%7D%2Ebg%2Ddanger%7Bbackground%2Dcolor%3A%23f2dede%7Da%2Ebg%2Ddanger%3Afocus%2Ca%2Ebg%2Ddanger%3Ahover%7Bbackground%2Dcolor%3A%23e4b9b9%7D%2Epage%2Dheader%7Bpadding%2Dbottom%3A9px%3Bmargin%3A40px%200%2020px%3Bborder%2Dbottom%3A1px%20solid%20%23eee%7Dol%2Cul%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A10px%7Dol%20ol%2Col%20ul%2Cul%20ol%2Cul%20ul%7Bmargin%2Dbottom%3A0%7D%2Elist%2Dunstyled%7Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%7D%2Elist%2Dinline%7Bpadding%2Dleft%3A0%3Bmargin%2Dleft%3A%2D5px%3Blist%2Dstyle%3Anone%7D%2Elist%2Dinline%3Eli%7Bdisplay%3Ainline%2Dblock%3Bpadding%2Dright%3A5px%3Bpadding%2Dleft%3A5px%7Ddl%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A20px%7Ddd%2Cdt%7Bline%2Dheight%3A1%2E42857143%7Ddt%7Bfont%2Dweight%3A700%7Ddd%7Bmargin%2Dleft%3A0%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Edl%2Dhorizontal%20dt%7Bfloat%3Aleft%3Bwidth%3A160px%3Boverflow%3Ahidden%3Bclear%3Aleft%3Btext%2Dalign%3Aright%3Btext%2Doverflow%3Aellipsis%3Bwhite%2Dspace%3Anowrap%7D%2Edl%2Dhorizontal%20dd%7Bmargin%2Dleft%3A180px%7D%7Dabbr%5Bdata%2Doriginal%2Dtitle%5D%2Cabbr%5Btitle%5D%7Bcursor%3Ahelp%3Bborder%2Dbottom%3A1px%20dotted%20%23777%7D%2Einitialism%7Bfont%2Dsize%3A90%25%3Btext%2Dtransform%3Auppercase%7Dblockquote%7Bpadding%3A10px%2020px%3Bmargin%3A0%200%2020px%3Bfont%2Dsize%3A17%2E5px%3Bborder%2Dleft%3A5px%20solid%20%23eee%7Dblockquote%20ol%3Alast%2Dchild%2Cblockquote%20p%3Alast%2Dchild%2Cblockquote%20ul%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7Dblockquote%20%2Esmall%2Cblockquote%20footer%2Cblockquote%20small%7Bdisplay%3Ablock%3Bfont%2Dsize%3A80%25%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23777%7Dblockquote%20%2Esmall%3Abefore%2Cblockquote%20footer%3Abefore%2Cblockquote%20small%3Abefore%7Bcontent%3A%27%5C2014%20%5C00A0%27%7D%2Eblockquote%2Dreverse%2Cblockquote%2Epull%2Dright%7Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A0%3Btext%2Dalign%3Aright%3Bborder%2Dright%3A5px%20solid%20%23eee%3Bborder%2Dleft%3A0%7D%2Eblockquote%2Dreverse%20%2Esmall%3Abefore%2C%2Eblockquote%2Dreverse%20footer%3Abefore%2C%2Eblockquote%2Dreverse%20small%3Abefore%2Cblockquote%2Epull%2Dright%20%2Esmall%3Abefore%2Cblockquote%2Epull%2Dright%20footer%3Abefore%2Cblockquote%2Epull%2Dright%20small%3Abefore%7Bcontent%3A%27%27%7D%2Eblockquote%2Dreverse%20%2Esmall%3Aafter%2C%2Eblockquote%2Dreverse%20footer%3Aafter%2C%2Eblockquote%2Dreverse%20small%3Aafter%2Cblockquote%2Epull%2Dright%20%2Esmall%3Aafter%2Cblockquote%2Epull%2Dright%20footer%3Aafter%2Cblockquote%2Epull%2Dright%20small%3Aafter%7Bcontent%3A%27%5C00A0%20%5C2014%27%7Daddress%7Bmargin%2Dbottom%3A20px%3Bfont%2Dstyle%3Anormal%3Bline%2Dheight%3A1%2E42857143%7Dcode%2Ckbd%2Cpre%2Csamp%7Bfont%2Dfamily%3Amonospace%7Dcode%7Bpadding%3A2px%204px%3Bfont%2Dsize%3A90%25%3Bcolor%3A%23c7254e%3Bbackground%2Dcolor%3A%23f9f2f4%3Bborder%2Dradius%3A4px%7Dkbd%7Bpadding%3A2px%204px%3Bfont%2Dsize%3A90%25%3Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23333%3Bborder%2Dradius%3A3px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C%2E25%29%3Bbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C%2E25%29%7Dkbd%20kbd%7Bpadding%3A0%3Bfont%2Dsize%3A100%25%3Bfont%2Dweight%3A700%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7Dpre%7Bdisplay%3Ablock%3Bpadding%3A9%2E5px%3Bmargin%3A0%200%2010px%3Bfont%2Dsize%3A13px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23333%3Bword%2Dbreak%3Abreak%2Dall%3Bword%2Dwrap%3Abreak%2Dword%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%3A1px%20solid%20%23ccc%3Bborder%2Dradius%3A4px%7Dpre%20code%7Bpadding%3A0%3Bfont%2Dsize%3Ainherit%3Bcolor%3Ainherit%3Bwhite%2Dspace%3Apre%2Dwrap%3Bbackground%2Dcolor%3Atransparent%3Bborder%2Dradius%3A0%7D%2Epre%2Dscrollable%7Bmax%2Dheight%3A340px%3Boverflow%2Dy%3Ascroll%7D%2Econtainer%7Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A15px%3Bmargin%2Dright%3Aauto%3Bmargin%2Dleft%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Econtainer%7Bwidth%3A750px%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Econtainer%7Bwidth%3A970px%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Econtainer%7Bwidth%3A1170px%7D%7D%2Econtainer%2Dfluid%7Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A15px%3Bmargin%2Dright%3Aauto%3Bmargin%2Dleft%3Aauto%7D%2Erow%7Bmargin%2Dright%3A%2D15px%3Bmargin%2Dleft%3A%2D15px%7D%2Ecol%2Dlg%2D1%2C%2Ecol%2Dlg%2D10%2C%2Ecol%2Dlg%2D11%2C%2Ecol%2Dlg%2D12%2C%2Ecol%2Dlg%2D2%2C%2Ecol%2Dlg%2D3%2C%2Ecol%2Dlg%2D4%2C%2Ecol%2Dlg%2D5%2C%2Ecol%2Dlg%2D6%2C%2Ecol%2Dlg%2D7%2C%2Ecol%2Dlg%2D8%2C%2Ecol%2Dlg%2D9%2C%2Ecol%2Dmd%2D1%2C%2Ecol%2Dmd%2D10%2C%2Ecol%2Dmd%2D11%2C%2Ecol%2Dmd%2D12%2C%2Ecol%2Dmd%2D2%2C%2Ecol%2Dmd%2D3%2C%2Ecol%2Dmd%2D4%2C%2Ecol%2Dmd%2D5%2C%2Ecol%2Dmd%2D6%2C%2Ecol%2Dmd%2D7%2C%2Ecol%2Dmd%2D8%2C%2Ecol%2Dmd%2D9%2C%2Ecol%2Dsm%2D1%2C%2Ecol%2Dsm%2D10%2C%2Ecol%2Dsm%2D11%2C%2Ecol%2Dsm%2D12%2C%2Ecol%2Dsm%2D2%2C%2Ecol%2Dsm%2D3%2C%2Ecol%2Dsm%2D4%2C%2Ecol%2Dsm%2D5%2C%2Ecol%2Dsm%2D6%2C%2Ecol%2Dsm%2D7%2C%2Ecol%2Dsm%2D8%2C%2Ecol%2Dsm%2D9%2C%2Ecol%2Dxs%2D1%2C%2Ecol%2Dxs%2D10%2C%2Ecol%2Dxs%2D11%2C%2Ecol%2Dxs%2D12%2C%2Ecol%2Dxs%2D2%2C%2Ecol%2Dxs%2D3%2C%2Ecol%2Dxs%2D4%2C%2Ecol%2Dxs%2D5%2C%2Ecol%2Dxs%2D6%2C%2Ecol%2Dxs%2D7%2C%2Ecol%2Dxs%2D8%2C%2Ecol%2Dxs%2D9%7Bposition%3Arelative%3Bmin%2Dheight%3A1px%3Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A15px%7D%2Ecol%2Dxs%2D1%2C%2Ecol%2Dxs%2D10%2C%2Ecol%2Dxs%2D11%2C%2Ecol%2Dxs%2D12%2C%2Ecol%2Dxs%2D2%2C%2Ecol%2Dxs%2D3%2C%2Ecol%2Dxs%2D4%2C%2Ecol%2Dxs%2D5%2C%2Ecol%2Dxs%2D6%2C%2Ecol%2Dxs%2D7%2C%2Ecol%2Dxs%2D8%2C%2Ecol%2Dxs%2D9%7Bfloat%3Aleft%7D%2Ecol%2Dxs%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dxs%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dxs%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dxs%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dxs%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dxs%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dxs%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dxs%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dxs%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dxs%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dxs%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dxs%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dxs%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dxs%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dxs%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dxs%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dxs%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dxs%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dxs%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dxs%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dxs%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dxs%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dxs%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dxs%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dxs%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dxs%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D0%7Bmargin%2Dleft%3A0%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Ecol%2Dsm%2D1%2C%2Ecol%2Dsm%2D10%2C%2Ecol%2Dsm%2D11%2C%2Ecol%2Dsm%2D12%2C%2Ecol%2Dsm%2D2%2C%2Ecol%2Dsm%2D3%2C%2Ecol%2Dsm%2D4%2C%2Ecol%2Dsm%2D5%2C%2Ecol%2Dsm%2D6%2C%2Ecol%2Dsm%2D7%2C%2Ecol%2Dsm%2D8%2C%2Ecol%2Dsm%2D9%7Bfloat%3Aleft%7D%2Ecol%2Dsm%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dsm%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dsm%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dsm%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dsm%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dsm%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dsm%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dsm%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dsm%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dsm%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dsm%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dsm%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dsm%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dsm%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dsm%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dsm%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dsm%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dsm%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dsm%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dsm%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dsm%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dsm%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dsm%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dsm%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dsm%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dsm%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D0%7Bmargin%2Dleft%3A0%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Ecol%2Dmd%2D1%2C%2Ecol%2Dmd%2D10%2C%2Ecol%2Dmd%2D11%2C%2Ecol%2Dmd%2D12%2C%2Ecol%2Dmd%2D2%2C%2Ecol%2Dmd%2D3%2C%2Ecol%2Dmd%2D4%2C%2Ecol%2Dmd%2D5%2C%2Ecol%2Dmd%2D6%2C%2Ecol%2Dmd%2D7%2C%2Ecol%2Dmd%2D8%2C%2Ecol%2Dmd%2D9%7Bfloat%3Aleft%7D%2Ecol%2Dmd%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dmd%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dmd%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dmd%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dmd%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dmd%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dmd%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dmd%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dmd%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dmd%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dmd%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dmd%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dmd%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dmd%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dmd%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dmd%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dmd%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dmd%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dmd%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dmd%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dmd%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dmd%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dmd%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dmd%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dmd%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dmd%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D0%7Bmargin%2Dleft%3A0%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Ecol%2Dlg%2D1%2C%2Ecol%2Dlg%2D10%2C%2Ecol%2Dlg%2D11%2C%2Ecol%2Dlg%2D12%2C%2Ecol%2Dlg%2D2%2C%2Ecol%2Dlg%2D3%2C%2Ecol%2Dlg%2D4%2C%2Ecol%2Dlg%2D5%2C%2Ecol%2Dlg%2D6%2C%2Ecol%2Dlg%2D7%2C%2Ecol%2Dlg%2D8%2C%2Ecol%2Dlg%2D9%7Bfloat%3Aleft%7D%2Ecol%2Dlg%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dlg%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dlg%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dlg%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dlg%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dlg%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dlg%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dlg%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dlg%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dlg%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dlg%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dlg%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dlg%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dlg%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dlg%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dlg%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dlg%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dlg%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dlg%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dlg%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dlg%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dlg%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dlg%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dlg%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dlg%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dlg%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D0%7Bmargin%2Dleft%3A0%7D%7Dtable%7Bbackground%2Dcolor%3Atransparent%7Dcaption%7Bpadding%2Dtop%3A8px%3Bpadding%2Dbottom%3A8px%3Bcolor%3A%23777%3Btext%2Dalign%3Aleft%7Dth%7B%7D%2Etable%7Bwidth%3A100%25%3Bmax%2Dwidth%3A100%25%3Bmargin%2Dbottom%3A20px%7D%2Etable%3Etbody%3Etr%3Etd%2C%2Etable%3Etbody%3Etr%3Eth%2C%2Etable%3Etfoot%3Etr%3Etd%2C%2Etable%3Etfoot%3Etr%3Eth%2C%2Etable%3Ethead%3Etr%3Etd%2C%2Etable%3Ethead%3Etr%3Eth%7Bpadding%3A8px%3Bline%2Dheight%3A1%2E42857143%3Bvertical%2Dalign%3Atop%3Bborder%2Dtop%3A1px%20solid%20%23ddd%7D%2Etable%3Ethead%3Etr%3Eth%7Bvertical%2Dalign%3Abottom%3Bborder%2Dbottom%3A2px%20solid%20%23ddd%7D%2Etable%3Ecaption%2Bthead%3Etr%3Afirst%2Dchild%3Etd%2C%2Etable%3Ecaption%2Bthead%3Etr%3Afirst%2Dchild%3Eth%2C%2Etable%3Ecolgroup%2Bthead%3Etr%3Afirst%2Dchild%3Etd%2C%2Etable%3Ecolgroup%2Bthead%3Etr%3Afirst%2Dchild%3Eth%2C%2Etable%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%3Etd%2C%2Etable%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%3Eth%7Bborder%2Dtop%3A0%7D%2Etable%3Etbody%2Btbody%7Bborder%2Dtop%3A2px%20solid%20%23ddd%7D%2Etable%20%2Etable%7Bbackground%2Dcolor%3A%23fff%7D%2Etable%2Dcondensed%3Etbody%3Etr%3Etd%2C%2Etable%2Dcondensed%3Etbody%3Etr%3Eth%2C%2Etable%2Dcondensed%3Etfoot%3Etr%3Etd%2C%2Etable%2Dcondensed%3Etfoot%3Etr%3Eth%2C%2Etable%2Dcondensed%3Ethead%3Etr%3Etd%2C%2Etable%2Dcondensed%3Ethead%3Etr%3Eth%7Bpadding%3A5px%7D%2Etable%2Dbordered%7Bborder%3A1px%20solid%20%23ddd%7D%2Etable%2Dbordered%3Etbody%3Etr%3Etd%2C%2Etable%2Dbordered%3Etbody%3Etr%3Eth%2C%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%2C%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%2C%2Etable%2Dbordered%3Ethead%3Etr%3Etd%2C%2Etable%2Dbordered%3Ethead%3Etr%3Eth%7Bborder%3A1px%20solid%20%23ddd%7D%2Etable%2Dbordered%3Ethead%3Etr%3Etd%2C%2Etable%2Dbordered%3Ethead%3Etr%3Eth%7Bborder%2Dbottom%2Dwidth%3A2px%7D%2Etable%2Dstriped%3Etbody%3Etr%3Anth%2Dof%2Dtype%28odd%29%7Bbackground%2Dcolor%3A%23f9f9f9%7D%2Etable%2Dhover%3Etbody%3Etr%3Ahover%7Bbackground%2Dcolor%3A%23f5f5f5%7Dtable%20col%5Bclass%2A%3Dcol%2D%5D%7Bposition%3Astatic%3Bdisplay%3Atable%2Dcolumn%3Bfloat%3Anone%7Dtable%20td%5Bclass%2A%3Dcol%2D%5D%2Ctable%20th%5Bclass%2A%3Dcol%2D%5D%7Bposition%3Astatic%3Bdisplay%3Atable%2Dcell%3Bfloat%3Anone%7D%2Etable%3Etbody%3Etr%2Eactive%3Etd%2C%2Etable%3Etbody%3Etr%2Eactive%3Eth%2C%2Etable%3Etbody%3Etr%3Etd%2Eactive%2C%2Etable%3Etbody%3Etr%3Eth%2Eactive%2C%2Etable%3Etfoot%3Etr%2Eactive%3Etd%2C%2Etable%3Etfoot%3Etr%2Eactive%3Eth%2C%2Etable%3Etfoot%3Etr%3Etd%2Eactive%2C%2Etable%3Etfoot%3Etr%3Eth%2Eactive%2C%2Etable%3Ethead%3Etr%2Eactive%3Etd%2C%2Etable%3Ethead%3Etr%2Eactive%3Eth%2C%2Etable%3Ethead%3Etr%3Etd%2Eactive%2C%2Etable%3Ethead%3Etr%3Eth%2Eactive%7Bbackground%2Dcolor%3A%23f5f5f5%7D%2Etable%2Dhover%3Etbody%3Etr%2Eactive%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%2Eactive%3Ahover%3Eth%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Eactive%2C%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Eactive%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Eactive%3Ahover%7Bbackground%2Dcolor%3A%23e8e8e8%7D%2Etable%3Etbody%3Etr%2Esuccess%3Etd%2C%2Etable%3Etbody%3Etr%2Esuccess%3Eth%2C%2Etable%3Etbody%3Etr%3Etd%2Esuccess%2C%2Etable%3Etbody%3Etr%3Eth%2Esuccess%2C%2Etable%3Etfoot%3Etr%2Esuccess%3Etd%2C%2Etable%3Etfoot%3Etr%2Esuccess%3Eth%2C%2Etable%3Etfoot%3Etr%3Etd%2Esuccess%2C%2Etable%3Etfoot%3Etr%3Eth%2Esuccess%2C%2Etable%3Ethead%3Etr%2Esuccess%3Etd%2C%2Etable%3Ethead%3Etr%2Esuccess%3Eth%2C%2Etable%3Ethead%3Etr%3Etd%2Esuccess%2C%2Etable%3Ethead%3Etr%3Eth%2Esuccess%7Bbackground%2Dcolor%3A%23dff0d8%7D%2Etable%2Dhover%3Etbody%3Etr%2Esuccess%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%2Esuccess%3Ahover%3Eth%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Esuccess%2C%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Esuccess%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Esuccess%3Ahover%7Bbackground%2Dcolor%3A%23d0e9c6%7D%2Etable%3Etbody%3Etr%2Einfo%3Etd%2C%2Etable%3Etbody%3Etr%2Einfo%3Eth%2C%2Etable%3Etbody%3Etr%3Etd%2Einfo%2C%2Etable%3Etbody%3Etr%3Eth%2Einfo%2C%2Etable%3Etfoot%3Etr%2Einfo%3Etd%2C%2Etable%3Etfoot%3Etr%2Einfo%3Eth%2C%2Etable%3Etfoot%3Etr%3Etd%2Einfo%2C%2Etable%3Etfoot%3Etr%3Eth%2Einfo%2C%2Etable%3Ethead%3Etr%2Einfo%3Etd%2C%2Etable%3Ethead%3Etr%2Einfo%3Eth%2C%2Etable%3Ethead%3Etr%3Etd%2Einfo%2C%2Etable%3Ethead%3Etr%3Eth%2Einfo%7Bbackground%2Dcolor%3A%23d9edf7%7D%2Etable%2Dhover%3Etbody%3Etr%2Einfo%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%2Einfo%3Ahover%3Eth%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Einfo%2C%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Einfo%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Einfo%3Ahover%7Bbackground%2Dcolor%3A%23c4e3f3%7D%2Etable%3Etbody%3Etr%2Ewarning%3Etd%2C%2Etable%3Etbody%3Etr%2Ewarning%3Eth%2C%2Etable%3Etbody%3Etr%3Etd%2Ewarning%2C%2Etable%3Etbody%3Etr%3Eth%2Ewarning%2C%2Etable%3Etfoot%3Etr%2Ewarning%3Etd%2C%2Etable%3Etfoot%3Etr%2Ewarning%3Eth%2C%2Etable%3Etfoot%3Etr%3Etd%2Ewarning%2C%2Etable%3Etfoot%3Etr%3Eth%2Ewarning%2C%2Etable%3Ethead%3Etr%2Ewarning%3Etd%2C%2Etable%3Ethead%3Etr%2Ewarning%3Eth%2C%2Etable%3Ethead%3Etr%3Etd%2Ewarning%2C%2Etable%3Ethead%3Etr%3Eth%2Ewarning%7Bbackground%2Dcolor%3A%23fcf8e3%7D%2Etable%2Dhover%3Etbody%3Etr%2Ewarning%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%2Ewarning%3Ahover%3Eth%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Ewarning%2C%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Ewarning%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Ewarning%3Ahover%7Bbackground%2Dcolor%3A%23faf2cc%7D%2Etable%3Etbody%3Etr%2Edanger%3Etd%2C%2Etable%3Etbody%3Etr%2Edanger%3Eth%2C%2Etable%3Etbody%3Etr%3Etd%2Edanger%2C%2Etable%3Etbody%3Etr%3Eth%2Edanger%2C%2Etable%3Etfoot%3Etr%2Edanger%3Etd%2C%2Etable%3Etfoot%3Etr%2Edanger%3Eth%2C%2Etable%3Etfoot%3Etr%3Etd%2Edanger%2C%2Etable%3Etfoot%3Etr%3Eth%2Edanger%2C%2Etable%3Ethead%3Etr%2Edanger%3Etd%2C%2Etable%3Ethead%3Etr%2Edanger%3Eth%2C%2Etable%3Ethead%3Etr%3Etd%2Edanger%2C%2Etable%3Ethead%3Etr%3Eth%2Edanger%7Bbackground%2Dcolor%3A%23f2dede%7D%2Etable%2Dhover%3Etbody%3Etr%2Edanger%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%2Edanger%3Ahover%3Eth%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Edanger%2C%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Edanger%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Edanger%3Ahover%7Bbackground%2Dcolor%3A%23ebcccc%7D%2Etable%2Dresponsive%7Bmin%2Dheight%3A%2E01%25%3Boverflow%2Dx%3Aauto%7D%40media%20screen%20and%20%28max%2Dwidth%3A767px%29%7B%2Etable%2Dresponsive%7Bwidth%3A100%25%3Bmargin%2Dbottom%3A15px%3Boverflow%2Dy%3Ahidden%3B%2Dms%2Doverflow%2Dstyle%3A%2Dms%2Dautohiding%2Dscrollbar%3Bborder%3A1px%20solid%20%23ddd%7D%2Etable%2Dresponsive%3E%2Etable%7Bmargin%2Dbottom%3A0%7D%2Etable%2Dresponsive%3E%2Etable%3Etbody%3Etr%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%3Etbody%3Etr%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%3Etfoot%3Etr%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%3Etfoot%3Etr%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%3Ethead%3Etr%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%3Ethead%3Etr%3Eth%7Bwhite%2Dspace%3Anowrap%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%7Bborder%3A0%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Afirst%2Dchild%7Bborder%2Dleft%3A0%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Alast%2Dchild%7Bborder%2Dright%3A0%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Eth%7Bborder%2Dbottom%3A0%7D%7Dfieldset%7Bmin%2Dwidth%3A0%3Bpadding%3A0%3Bmargin%3A0%3Bborder%3A0%7Dlegend%7Bdisplay%3Ablock%3Bwidth%3A100%25%3Bpadding%3A0%3Bmargin%2Dbottom%3A20px%3Bfont%2Dsize%3A21px%3Bline%2Dheight%3Ainherit%3Bcolor%3A%23333%3Bborder%3A0%3Bborder%2Dbottom%3A1px%20solid%20%23e5e5e5%7Dlabel%7Bdisplay%3Ainline%2Dblock%3Bmax%2Dwidth%3A100%25%3Bmargin%2Dbottom%3A5px%3Bfont%2Dweight%3A700%7Dinput%5Btype%3Dsearch%5D%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%7Dinput%5Btype%3Dcheckbox%5D%2Cinput%5Btype%3Dradio%5D%7Bmargin%3A4px%200%200%3Bmargin%2Dtop%3A1px%5C9%3Bline%2Dheight%3Anormal%7Dinput%5Btype%3Dfile%5D%7Bdisplay%3Ablock%7Dinput%5Btype%3Drange%5D%7Bdisplay%3Ablock%3Bwidth%3A100%25%7Dselect%5Bmultiple%5D%2Cselect%5Bsize%5D%7Bheight%3Aauto%7Dinput%5Btype%3Dfile%5D%3Afocus%2Cinput%5Btype%3Dcheckbox%5D%3Afocus%2Cinput%5Btype%3Dradio%5D%3Afocus%7Boutline%3Athin%20dotted%3Boutline%3A5px%20auto%20%2Dwebkit%2Dfocus%2Dring%2Dcolor%3Boutline%2Doffset%3A%2D2px%7Doutput%7Bdisplay%3Ablock%3Bpadding%2Dtop%3A7px%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23555%7D%2Eform%2Dcontrol%7Bdisplay%3Ablock%3Bwidth%3A100%25%3Bheight%3A34px%3Bpadding%3A6px%2012px%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23555%3Bbackground%2Dcolor%3A%23fff%3Bbackground%2Dimage%3Anone%3Bborder%3A1px%20solid%20%23ccc%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%3B%2Dwebkit%2Dtransition%3Aborder%2Dcolor%20ease%2Din%2Dout%20%2E15s%2C%2Dwebkit%2Dbox%2Dshadow%20ease%2Din%2Dout%20%2E15s%3B%2Do%2Dtransition%3Aborder%2Dcolor%20ease%2Din%2Dout%20%2E15s%2Cbox%2Dshadow%20ease%2Din%2Dout%20%2E15s%3Btransition%3Aborder%2Dcolor%20ease%2Din%2Dout%20%2E15s%2Cbox%2Dshadow%20ease%2Din%2Dout%20%2E15s%7D%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%2366afe9%3Boutline%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%208px%20rgba%28102%2C175%2C233%2C%2E6%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%208px%20rgba%28102%2C175%2C233%2C%2E6%29%7D%2Eform%2Dcontrol%3A%3A%2Dmoz%2Dplaceholder%7Bcolor%3A%23999%3Bopacity%3A1%7D%2Eform%2Dcontrol%3A%2Dms%2Dinput%2Dplaceholder%7Bcolor%3A%23999%7D%2Eform%2Dcontrol%3A%3A%2Dwebkit%2Dinput%2Dplaceholder%7Bcolor%3A%23999%7D%2Eform%2Dcontrol%5Bdisabled%5D%2C%2Eform%2Dcontrol%5Breadonly%5D%2Cfieldset%5Bdisabled%5D%20%2Eform%2Dcontrol%7Bbackground%2Dcolor%3A%23eee%3Bopacity%3A1%7D%2Eform%2Dcontrol%5Bdisabled%5D%2Cfieldset%5Bdisabled%5D%20%2Eform%2Dcontrol%7Bcursor%3Anot%2Dallowed%7Dtextarea%2Eform%2Dcontrol%7Bheight%3Aauto%7Dinput%5Btype%3Dsearch%5D%7B%2Dwebkit%2Dappearance%3Anone%7D%40media%20screen%20and%20%28%2Dwebkit%2Dmin%2Ddevice%2Dpixel%2Dratio%3A0%29%7Binput%5Btype%3Ddate%5D%2Eform%2Dcontrol%2Cinput%5Btype%3Dtime%5D%2Eform%2Dcontrol%2Cinput%5Btype%3Ddatetime%2Dlocal%5D%2Eform%2Dcontrol%2Cinput%5Btype%3Dmonth%5D%2Eform%2Dcontrol%7Bline%2Dheight%3A34px%7D%2Einput%2Dgroup%2Dsm%20input%5Btype%3Ddate%5D%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3Dtime%5D%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3Ddatetime%2Dlocal%5D%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3Dmonth%5D%2Cinput%5Btype%3Ddate%5D%2Einput%2Dsm%2Cinput%5Btype%3Dtime%5D%2Einput%2Dsm%2Cinput%5Btype%3Ddatetime%2Dlocal%5D%2Einput%2Dsm%2Cinput%5Btype%3Dmonth%5D%2Einput%2Dsm%7Bline%2Dheight%3A30px%7D%2Einput%2Dgroup%2Dlg%20input%5Btype%3Ddate%5D%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3Dtime%5D%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3Ddatetime%2Dlocal%5D%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3Dmonth%5D%2Cinput%5Btype%3Ddate%5D%2Einput%2Dlg%2Cinput%5Btype%3Dtime%5D%2Einput%2Dlg%2Cinput%5Btype%3Ddatetime%2Dlocal%5D%2Einput%2Dlg%2Cinput%5Btype%3Dmonth%5D%2Einput%2Dlg%7Bline%2Dheight%3A46px%7D%7D%2Eform%2Dgroup%7Bmargin%2Dbottom%3A15px%7D%2Echeckbox%2C%2Eradio%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bmargin%2Dtop%3A10px%3Bmargin%2Dbottom%3A10px%7D%2Echeckbox%20label%2C%2Eradio%20label%7Bmin%2Dheight%3A20px%3Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3A400%3Bcursor%3Apointer%7D%2Echeckbox%20input%5Btype%3Dcheckbox%5D%2C%2Echeckbox%2Dinline%20input%5Btype%3Dcheckbox%5D%2C%2Eradio%20input%5Btype%3Dradio%5D%2C%2Eradio%2Dinline%20input%5Btype%3Dradio%5D%7Bposition%3Aabsolute%3Bmargin%2Dtop%3A4px%5C9%3Bmargin%2Dleft%3A%2D20px%7D%2Echeckbox%2B%2Echeckbox%2C%2Eradio%2B%2Eradio%7Bmargin%2Dtop%3A%2D5px%7D%2Echeckbox%2Dinline%2C%2Eradio%2Dinline%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3A400%3Bvertical%2Dalign%3Amiddle%3Bcursor%3Apointer%7D%2Echeckbox%2Dinline%2B%2Echeckbox%2Dinline%2C%2Eradio%2Dinline%2B%2Eradio%2Dinline%7Bmargin%2Dtop%3A0%3Bmargin%2Dleft%3A10px%7Dfieldset%5Bdisabled%5D%20input%5Btype%3Dcheckbox%5D%2Cfieldset%5Bdisabled%5D%20input%5Btype%3Dradio%5D%2Cinput%5Btype%3Dcheckbox%5D%2Edisabled%2Cinput%5Btype%3Dcheckbox%5D%5Bdisabled%5D%2Cinput%5Btype%3Dradio%5D%2Edisabled%2Cinput%5Btype%3Dradio%5D%5Bdisabled%5D%7Bcursor%3Anot%2Dallowed%7D%2Echeckbox%2Dinline%2Edisabled%2C%2Eradio%2Dinline%2Edisabled%2Cfieldset%5Bdisabled%5D%20%2Echeckbox%2Dinline%2Cfieldset%5Bdisabled%5D%20%2Eradio%2Dinline%7Bcursor%3Anot%2Dallowed%7D%2Echeckbox%2Edisabled%20label%2C%2Eradio%2Edisabled%20label%2Cfieldset%5Bdisabled%5D%20%2Echeckbox%20label%2Cfieldset%5Bdisabled%5D%20%2Eradio%20label%7Bcursor%3Anot%2Dallowed%7D%2Eform%2Dcontrol%2Dstatic%7Bmin%2Dheight%3A34px%3Bpadding%2Dtop%3A7px%3Bpadding%2Dbottom%3A7px%3Bmargin%2Dbottom%3A0%7D%2Eform%2Dcontrol%2Dstatic%2Einput%2Dlg%2C%2Eform%2Dcontrol%2Dstatic%2Einput%2Dsm%7Bpadding%2Dright%3A0%3Bpadding%2Dleft%3A0%7D%2Einput%2Dsm%7Bheight%3A30px%3Bpadding%3A5px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A3px%7Dselect%2Einput%2Dsm%7Bheight%3A30px%3Bline%2Dheight%3A30px%7Dselect%5Bmultiple%5D%2Einput%2Dsm%2Ctextarea%2Einput%2Dsm%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dsm%20%2Eform%2Dcontrol%7Bheight%3A30px%3Bpadding%3A5px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A3px%7D%2Eform%2Dgroup%2Dsm%20select%2Eform%2Dcontrol%7Bheight%3A30px%3Bline%2Dheight%3A30px%7D%2Eform%2Dgroup%2Dsm%20select%5Bmultiple%5D%2Eform%2Dcontrol%2C%2Eform%2Dgroup%2Dsm%20textarea%2Eform%2Dcontrol%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dsm%20%2Eform%2Dcontrol%2Dstatic%7Bheight%3A30px%3Bmin%2Dheight%3A32px%3Bpadding%3A6px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%7D%2Einput%2Dlg%7Bheight%3A46px%3Bpadding%3A10px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A6px%7Dselect%2Einput%2Dlg%7Bheight%3A46px%3Bline%2Dheight%3A46px%7Dselect%5Bmultiple%5D%2Einput%2Dlg%2Ctextarea%2Einput%2Dlg%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dlg%20%2Eform%2Dcontrol%7Bheight%3A46px%3Bpadding%3A10px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A6px%7D%2Eform%2Dgroup%2Dlg%20select%2Eform%2Dcontrol%7Bheight%3A46px%3Bline%2Dheight%3A46px%7D%2Eform%2Dgroup%2Dlg%20select%5Bmultiple%5D%2Eform%2Dcontrol%2C%2Eform%2Dgroup%2Dlg%20textarea%2Eform%2Dcontrol%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dlg%20%2Eform%2Dcontrol%2Dstatic%7Bheight%3A46px%3Bmin%2Dheight%3A38px%3Bpadding%3A11px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%7D%2Ehas%2Dfeedback%7Bposition%3Arelative%7D%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%7Bpadding%2Dright%3A42%2E5px%7D%2Eform%2Dcontrol%2Dfeedback%7Bposition%3Aabsolute%3Btop%3A0%3Bright%3A0%3Bz%2Dindex%3A2%3Bdisplay%3Ablock%3Bwidth%3A34px%3Bheight%3A34px%3Bline%2Dheight%3A34px%3Btext%2Dalign%3Acenter%3Bpointer%2Devents%3Anone%7D%2Eform%2Dgroup%2Dlg%20%2Eform%2Dcontrol%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Einput%2Dgroup%2Dlg%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Einput%2Dlg%2B%2Eform%2Dcontrol%2Dfeedback%7Bwidth%3A46px%3Bheight%3A46px%3Bline%2Dheight%3A46px%7D%2Eform%2Dgroup%2Dsm%20%2Eform%2Dcontrol%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Einput%2Dgroup%2Dsm%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Einput%2Dsm%2B%2Eform%2Dcontrol%2Dfeedback%7Bwidth%3A30px%3Bheight%3A30px%3Bline%2Dheight%3A30px%7D%2Ehas%2Dsuccess%20%2Echeckbox%2C%2Ehas%2Dsuccess%20%2Echeckbox%2Dinline%2C%2Ehas%2Dsuccess%20%2Econtrol%2Dlabel%2C%2Ehas%2Dsuccess%20%2Ehelp%2Dblock%2C%2Ehas%2Dsuccess%20%2Eradio%2C%2Ehas%2Dsuccess%20%2Eradio%2Dinline%2C%2Ehas%2Dsuccess%2Echeckbox%20label%2C%2Ehas%2Dsuccess%2Echeckbox%2Dinline%20label%2C%2Ehas%2Dsuccess%2Eradio%20label%2C%2Ehas%2Dsuccess%2Eradio%2Dinline%20label%7Bcolor%3A%233c763d%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%7Bborder%2Dcolor%3A%233c763d%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%232b542c%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%206px%20%2367b168%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%206px%20%2367b168%7D%2Ehas%2Dsuccess%20%2Einput%2Dgroup%2Daddon%7Bcolor%3A%233c763d%3Bbackground%2Dcolor%3A%23dff0d8%3Bborder%2Dcolor%3A%233c763d%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%233c763d%7D%2Ehas%2Dwarning%20%2Echeckbox%2C%2Ehas%2Dwarning%20%2Echeckbox%2Dinline%2C%2Ehas%2Dwarning%20%2Econtrol%2Dlabel%2C%2Ehas%2Dwarning%20%2Ehelp%2Dblock%2C%2Ehas%2Dwarning%20%2Eradio%2C%2Ehas%2Dwarning%20%2Eradio%2Dinline%2C%2Ehas%2Dwarning%2Echeckbox%20label%2C%2Ehas%2Dwarning%2Echeckbox%2Dinline%20label%2C%2Ehas%2Dwarning%2Eradio%20label%2C%2Ehas%2Dwarning%2Eradio%2Dinline%20label%7Bcolor%3A%238a6d3b%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%7Bborder%2Dcolor%3A%238a6d3b%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%2366512c%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%206px%20%23c0a16b%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%206px%20%23c0a16b%7D%2Ehas%2Dwarning%20%2Einput%2Dgroup%2Daddon%7Bcolor%3A%238a6d3b%3Bbackground%2Dcolor%3A%23fcf8e3%3Bborder%2Dcolor%3A%238a6d3b%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%238a6d3b%7D%2Ehas%2Derror%20%2Echeckbox%2C%2Ehas%2Derror%20%2Echeckbox%2Dinline%2C%2Ehas%2Derror%20%2Econtrol%2Dlabel%2C%2Ehas%2Derror%20%2Ehelp%2Dblock%2C%2Ehas%2Derror%20%2Eradio%2C%2Ehas%2Derror%20%2Eradio%2Dinline%2C%2Ehas%2Derror%2Echeckbox%20label%2C%2Ehas%2Derror%2Echeckbox%2Dinline%20label%2C%2Ehas%2Derror%2Eradio%20label%2C%2Ehas%2Derror%2Eradio%2Dinline%20label%7Bcolor%3A%23a94442%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%7Bborder%2Dcolor%3A%23a94442%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%23843534%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%206px%20%23ce8483%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E075%29%2C0%200%206px%20%23ce8483%7D%2Ehas%2Derror%20%2Einput%2Dgroup%2Daddon%7Bcolor%3A%23a94442%3Bbackground%2Dcolor%3A%23f2dede%3Bborder%2Dcolor%3A%23a94442%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23a94442%7D%2Ehas%2Dfeedback%20label%7E%2Eform%2Dcontrol%2Dfeedback%7Btop%3A25px%7D%2Ehas%2Dfeedback%20label%2Esr%2Donly%7E%2Eform%2Dcontrol%2Dfeedback%7Btop%3A0%7D%2Ehelp%2Dblock%7Bdisplay%3Ablock%3Bmargin%2Dtop%3A5px%3Bmargin%2Dbottom%3A10px%3Bcolor%3A%23737373%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dinline%20%2Eform%2Dgroup%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eform%2Dcontrol%7Bdisplay%3Ainline%2Dblock%3Bwidth%3Aauto%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eform%2Dcontrol%2Dstatic%7Bdisplay%3Ainline%2Dblock%7D%2Eform%2Dinline%20%2Einput%2Dgroup%7Bdisplay%3Ainline%2Dtable%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Einput%2Dgroup%20%2Eform%2Dcontrol%2C%2Eform%2Dinline%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Daddon%2C%2Eform%2Dinline%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Dbtn%7Bwidth%3Aauto%7D%2Eform%2Dinline%20%2Einput%2Dgroup%3E%2Eform%2Dcontrol%7Bwidth%3A100%25%7D%2Eform%2Dinline%20%2Econtrol%2Dlabel%7Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Echeckbox%2C%2Eform%2Dinline%20%2Eradio%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Echeckbox%20label%2C%2Eform%2Dinline%20%2Eradio%20label%7Bpadding%2Dleft%3A0%7D%2Eform%2Dinline%20%2Echeckbox%20input%5Btype%3Dcheckbox%5D%2C%2Eform%2Dinline%20%2Eradio%20input%5Btype%3Dradio%5D%7Bposition%3Arelative%3Bmargin%2Dleft%3A0%7D%2Eform%2Dinline%20%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%2Dfeedback%7Btop%3A0%7D%7D%2Eform%2Dhorizontal%20%2Echeckbox%2C%2Eform%2Dhorizontal%20%2Echeckbox%2Dinline%2C%2Eform%2Dhorizontal%20%2Eradio%2C%2Eform%2Dhorizontal%20%2Eradio%2Dinline%7Bpadding%2Dtop%3A7px%3Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%7D%2Eform%2Dhorizontal%20%2Echeckbox%2C%2Eform%2Dhorizontal%20%2Eradio%7Bmin%2Dheight%3A27px%7D%2Eform%2Dhorizontal%20%2Eform%2Dgroup%7Bmargin%2Dright%3A%2D15px%3Bmargin%2Dleft%3A%2D15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dhorizontal%20%2Econtrol%2Dlabel%7Bpadding%2Dtop%3A7px%3Bmargin%2Dbottom%3A0%3Btext%2Dalign%3Aright%7D%7D%2Eform%2Dhorizontal%20%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%2Dfeedback%7Bright%3A15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dhorizontal%20%2Eform%2Dgroup%2Dlg%20%2Econtrol%2Dlabel%7Bpadding%2Dtop%3A14%2E33px%3Bfont%2Dsize%3A18px%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dhorizontal%20%2Eform%2Dgroup%2Dsm%20%2Econtrol%2Dlabel%7Bpadding%2Dtop%3A6px%3Bfont%2Dsize%3A12px%7D%7D%2Ebtn%7Bdisplay%3Ainline%2Dblock%3Bpadding%3A6px%2012px%3Bmargin%2Dbottom%3A0%3Bfont%2Dsize%3A14px%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%2E42857143%3Btext%2Dalign%3Acenter%3Bwhite%2Dspace%3Anowrap%3Bvertical%2Dalign%3Amiddle%3B%2Dms%2Dtouch%2Daction%3Amanipulation%3Btouch%2Daction%3Amanipulation%3Bcursor%3Apointer%3B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%3Buser%2Dselect%3Anone%3Bbackground%2Dimage%3Anone%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%7D%2Ebtn%2Eactive%2Efocus%2C%2Ebtn%2Eactive%3Afocus%2C%2Ebtn%2Efocus%2C%2Ebtn%3Aactive%2Efocus%2C%2Ebtn%3Aactive%3Afocus%2C%2Ebtn%3Afocus%7Boutline%3Athin%20dotted%3Boutline%3A5px%20auto%20%2Dwebkit%2Dfocus%2Dring%2Dcolor%3Boutline%2Doffset%3A%2D2px%7D%2Ebtn%2Efocus%2C%2Ebtn%3Afocus%2C%2Ebtn%3Ahover%7Bcolor%3A%23333%3Btext%2Ddecoration%3Anone%7D%2Ebtn%2Eactive%2C%2Ebtn%3Aactive%7Bbackground%2Dimage%3Anone%3Boutline%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C%2E125%29%3Bbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C%2E125%29%7D%2Ebtn%2Edisabled%2C%2Ebtn%5Bdisabled%5D%2Cfieldset%5Bdisabled%5D%20%2Ebtn%7Bcursor%3Anot%2Dallowed%3Bfilter%3Aalpha%28opacity%3D65%29%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%3Bopacity%3A%2E65%7Da%2Ebtn%2Edisabled%2Cfieldset%5Bdisabled%5D%20a%2Ebtn%7Bpointer%2Devents%3Anone%7D%2Ebtn%2Ddefault%7Bcolor%3A%23333%3Bbackground%2Dcolor%3A%23fff%3Bborder%2Dcolor%3A%23ccc%7D%2Ebtn%2Ddefault%2Efocus%2C%2Ebtn%2Ddefault%3Afocus%7Bcolor%3A%23333%3Bbackground%2Dcolor%3A%23e6e6e6%3Bborder%2Dcolor%3A%238c8c8c%7D%2Ebtn%2Ddefault%3Ahover%7Bcolor%3A%23333%3Bbackground%2Dcolor%3A%23e6e6e6%3Bborder%2Dcolor%3A%23adadad%7D%2Ebtn%2Ddefault%2Eactive%2C%2Ebtn%2Ddefault%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%7Bcolor%3A%23333%3Bbackground%2Dcolor%3A%23e6e6e6%3Bborder%2Dcolor%3A%23adadad%7D%2Ebtn%2Ddefault%2Eactive%2Efocus%2C%2Ebtn%2Ddefault%2Eactive%3Afocus%2C%2Ebtn%2Ddefault%2Eactive%3Ahover%2C%2Ebtn%2Ddefault%3Aactive%2Efocus%2C%2Ebtn%2Ddefault%3Aactive%3Afocus%2C%2Ebtn%2Ddefault%3Aactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%3Ahover%7Bcolor%3A%23333%3Bbackground%2Dcolor%3A%23d4d4d4%3Bborder%2Dcolor%3A%238c8c8c%7D%2Ebtn%2Ddefault%2Eactive%2C%2Ebtn%2Ddefault%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Ddefault%2Edisabled%2C%2Ebtn%2Ddefault%2Edisabled%2Eactive%2C%2Ebtn%2Ddefault%2Edisabled%2Efocus%2C%2Ebtn%2Ddefault%2Edisabled%3Aactive%2C%2Ebtn%2Ddefault%2Edisabled%3Afocus%2C%2Ebtn%2Ddefault%2Edisabled%3Ahover%2C%2Ebtn%2Ddefault%5Bdisabled%5D%2C%2Ebtn%2Ddefault%5Bdisabled%5D%2Eactive%2C%2Ebtn%2Ddefault%5Bdisabled%5D%2Efocus%2C%2Ebtn%2Ddefault%5Bdisabled%5D%3Aactive%2C%2Ebtn%2Ddefault%5Bdisabled%5D%3Afocus%2C%2Ebtn%2Ddefault%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%2Eactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%3Aactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%3Ahover%7Bbackground%2Dcolor%3A%23fff%3Bborder%2Dcolor%3A%23ccc%7D%2Ebtn%2Ddefault%20%2Ebadge%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23333%7D%2Ebtn%2Dprimary%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23337ab7%3Bborder%2Dcolor%3A%232e6da4%7D%2Ebtn%2Dprimary%2Efocus%2C%2Ebtn%2Dprimary%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23286090%3Bborder%2Dcolor%3A%23122b40%7D%2Ebtn%2Dprimary%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23286090%3Bborder%2Dcolor%3A%23204d74%7D%2Ebtn%2Dprimary%2Eactive%2C%2Ebtn%2Dprimary%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23286090%3Bborder%2Dcolor%3A%23204d74%7D%2Ebtn%2Dprimary%2Eactive%2Efocus%2C%2Ebtn%2Dprimary%2Eactive%3Afocus%2C%2Ebtn%2Dprimary%2Eactive%3Ahover%2C%2Ebtn%2Dprimary%3Aactive%2Efocus%2C%2Ebtn%2Dprimary%3Aactive%3Afocus%2C%2Ebtn%2Dprimary%3Aactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23204d74%3Bborder%2Dcolor%3A%23122b40%7D%2Ebtn%2Dprimary%2Eactive%2C%2Ebtn%2Dprimary%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dprimary%2Edisabled%2C%2Ebtn%2Dprimary%2Edisabled%2Eactive%2C%2Ebtn%2Dprimary%2Edisabled%2Efocus%2C%2Ebtn%2Dprimary%2Edisabled%3Aactive%2C%2Ebtn%2Dprimary%2Edisabled%3Afocus%2C%2Ebtn%2Dprimary%2Edisabled%3Ahover%2C%2Ebtn%2Dprimary%5Bdisabled%5D%2C%2Ebtn%2Dprimary%5Bdisabled%5D%2Eactive%2C%2Ebtn%2Dprimary%5Bdisabled%5D%2Efocus%2C%2Ebtn%2Dprimary%5Bdisabled%5D%3Aactive%2C%2Ebtn%2Dprimary%5Bdisabled%5D%3Afocus%2C%2Ebtn%2Dprimary%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%2Eactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%3Aactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%3Ahover%7Bbackground%2Dcolor%3A%23337ab7%3Bborder%2Dcolor%3A%232e6da4%7D%2Ebtn%2Dprimary%20%2Ebadge%7Bcolor%3A%23337ab7%3Bbackground%2Dcolor%3A%23fff%7D%2Ebtn%2Dsuccess%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%235cb85c%3Bborder%2Dcolor%3A%234cae4c%7D%2Ebtn%2Dsuccess%2Efocus%2C%2Ebtn%2Dsuccess%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23449d44%3Bborder%2Dcolor%3A%23255625%7D%2Ebtn%2Dsuccess%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23449d44%3Bborder%2Dcolor%3A%23398439%7D%2Ebtn%2Dsuccess%2Eactive%2C%2Ebtn%2Dsuccess%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23449d44%3Bborder%2Dcolor%3A%23398439%7D%2Ebtn%2Dsuccess%2Eactive%2Efocus%2C%2Ebtn%2Dsuccess%2Eactive%3Afocus%2C%2Ebtn%2Dsuccess%2Eactive%3Ahover%2C%2Ebtn%2Dsuccess%3Aactive%2Efocus%2C%2Ebtn%2Dsuccess%3Aactive%3Afocus%2C%2Ebtn%2Dsuccess%3Aactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23398439%3Bborder%2Dcolor%3A%23255625%7D%2Ebtn%2Dsuccess%2Eactive%2C%2Ebtn%2Dsuccess%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dsuccess%2Edisabled%2C%2Ebtn%2Dsuccess%2Edisabled%2Eactive%2C%2Ebtn%2Dsuccess%2Edisabled%2Efocus%2C%2Ebtn%2Dsuccess%2Edisabled%3Aactive%2C%2Ebtn%2Dsuccess%2Edisabled%3Afocus%2C%2Ebtn%2Dsuccess%2Edisabled%3Ahover%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%2Eactive%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%2Efocus%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%3Aactive%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%3Afocus%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%2Eactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%3Aactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%3Ahover%7Bbackground%2Dcolor%3A%235cb85c%3Bborder%2Dcolor%3A%234cae4c%7D%2Ebtn%2Dsuccess%20%2Ebadge%7Bcolor%3A%235cb85c%3Bbackground%2Dcolor%3A%23fff%7D%2Ebtn%2Dinfo%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%235bc0de%3Bborder%2Dcolor%3A%2346b8da%7D%2Ebtn%2Dinfo%2Efocus%2C%2Ebtn%2Dinfo%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%2331b0d5%3Bborder%2Dcolor%3A%231b6d85%7D%2Ebtn%2Dinfo%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%2331b0d5%3Bborder%2Dcolor%3A%23269abc%7D%2Ebtn%2Dinfo%2Eactive%2C%2Ebtn%2Dinfo%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%2331b0d5%3Bborder%2Dcolor%3A%23269abc%7D%2Ebtn%2Dinfo%2Eactive%2Efocus%2C%2Ebtn%2Dinfo%2Eactive%3Afocus%2C%2Ebtn%2Dinfo%2Eactive%3Ahover%2C%2Ebtn%2Dinfo%3Aactive%2Efocus%2C%2Ebtn%2Dinfo%3Aactive%3Afocus%2C%2Ebtn%2Dinfo%3Aactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23269abc%3Bborder%2Dcolor%3A%231b6d85%7D%2Ebtn%2Dinfo%2Eactive%2C%2Ebtn%2Dinfo%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dinfo%2Edisabled%2C%2Ebtn%2Dinfo%2Edisabled%2Eactive%2C%2Ebtn%2Dinfo%2Edisabled%2Efocus%2C%2Ebtn%2Dinfo%2Edisabled%3Aactive%2C%2Ebtn%2Dinfo%2Edisabled%3Afocus%2C%2Ebtn%2Dinfo%2Edisabled%3Ahover%2C%2Ebtn%2Dinfo%5Bdisabled%5D%2C%2Ebtn%2Dinfo%5Bdisabled%5D%2Eactive%2C%2Ebtn%2Dinfo%5Bdisabled%5D%2Efocus%2C%2Ebtn%2Dinfo%5Bdisabled%5D%3Aactive%2C%2Ebtn%2Dinfo%5Bdisabled%5D%3Afocus%2C%2Ebtn%2Dinfo%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%2Eactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%3Aactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%3Ahover%7Bbackground%2Dcolor%3A%235bc0de%3Bborder%2Dcolor%3A%2346b8da%7D%2Ebtn%2Dinfo%20%2Ebadge%7Bcolor%3A%235bc0de%3Bbackground%2Dcolor%3A%23fff%7D%2Ebtn%2Dwarning%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23f0ad4e%3Bborder%2Dcolor%3A%23eea236%7D%2Ebtn%2Dwarning%2Efocus%2C%2Ebtn%2Dwarning%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ec971f%3Bborder%2Dcolor%3A%23985f0d%7D%2Ebtn%2Dwarning%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ec971f%3Bborder%2Dcolor%3A%23d58512%7D%2Ebtn%2Dwarning%2Eactive%2C%2Ebtn%2Dwarning%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ec971f%3Bborder%2Dcolor%3A%23d58512%7D%2Ebtn%2Dwarning%2Eactive%2Efocus%2C%2Ebtn%2Dwarning%2Eactive%3Afocus%2C%2Ebtn%2Dwarning%2Eactive%3Ahover%2C%2Ebtn%2Dwarning%3Aactive%2Efocus%2C%2Ebtn%2Dwarning%3Aactive%3Afocus%2C%2Ebtn%2Dwarning%3Aactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23d58512%3Bborder%2Dcolor%3A%23985f0d%7D%2Ebtn%2Dwarning%2Eactive%2C%2Ebtn%2Dwarning%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dwarning%2Edisabled%2C%2Ebtn%2Dwarning%2Edisabled%2Eactive%2C%2Ebtn%2Dwarning%2Edisabled%2Efocus%2C%2Ebtn%2Dwarning%2Edisabled%3Aactive%2C%2Ebtn%2Dwarning%2Edisabled%3Afocus%2C%2Ebtn%2Dwarning%2Edisabled%3Ahover%2C%2Ebtn%2Dwarning%5Bdisabled%5D%2C%2Ebtn%2Dwarning%5Bdisabled%5D%2Eactive%2C%2Ebtn%2Dwarning%5Bdisabled%5D%2Efocus%2C%2Ebtn%2Dwarning%5Bdisabled%5D%3Aactive%2C%2Ebtn%2Dwarning%5Bdisabled%5D%3Afocus%2C%2Ebtn%2Dwarning%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%2Eactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%3Aactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%3Ahover%7Bbackground%2Dcolor%3A%23f0ad4e%3Bborder%2Dcolor%3A%23eea236%7D%2Ebtn%2Dwarning%20%2Ebadge%7Bcolor%3A%23f0ad4e%3Bbackground%2Dcolor%3A%23fff%7D%2Ebtn%2Ddanger%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23d9534f%3Bborder%2Dcolor%3A%23d43f3a%7D%2Ebtn%2Ddanger%2Efocus%2C%2Ebtn%2Ddanger%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23c9302c%3Bborder%2Dcolor%3A%23761c19%7D%2Ebtn%2Ddanger%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23c9302c%3Bborder%2Dcolor%3A%23ac2925%7D%2Ebtn%2Ddanger%2Eactive%2C%2Ebtn%2Ddanger%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23c9302c%3Bborder%2Dcolor%3A%23ac2925%7D%2Ebtn%2Ddanger%2Eactive%2Efocus%2C%2Ebtn%2Ddanger%2Eactive%3Afocus%2C%2Ebtn%2Ddanger%2Eactive%3Ahover%2C%2Ebtn%2Ddanger%3Aactive%2Efocus%2C%2Ebtn%2Ddanger%3Aactive%3Afocus%2C%2Ebtn%2Ddanger%3Aactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ac2925%3Bborder%2Dcolor%3A%23761c19%7D%2Ebtn%2Ddanger%2Eactive%2C%2Ebtn%2Ddanger%3Aactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Ddanger%2Edisabled%2C%2Ebtn%2Ddanger%2Edisabled%2Eactive%2C%2Ebtn%2Ddanger%2Edisabled%2Efocus%2C%2Ebtn%2Ddanger%2Edisabled%3Aactive%2C%2Ebtn%2Ddanger%2Edisabled%3Afocus%2C%2Ebtn%2Ddanger%2Edisabled%3Ahover%2C%2Ebtn%2Ddanger%5Bdisabled%5D%2C%2Ebtn%2Ddanger%5Bdisabled%5D%2Eactive%2C%2Ebtn%2Ddanger%5Bdisabled%5D%2Efocus%2C%2Ebtn%2Ddanger%5Bdisabled%5D%3Aactive%2C%2Ebtn%2Ddanger%5Bdisabled%5D%3Afocus%2C%2Ebtn%2Ddanger%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%2Eactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%3Aactive%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%3Ahover%7Bbackground%2Dcolor%3A%23d9534f%3Bborder%2Dcolor%3A%23d43f3a%7D%2Ebtn%2Ddanger%20%2Ebadge%7Bcolor%3A%23d9534f%3Bbackground%2Dcolor%3A%23fff%7D%2Ebtn%2Dlink%7Bfont%2Dweight%3A400%3Bcolor%3A%23337ab7%3Bborder%2Dradius%3A0%7D%2Ebtn%2Dlink%2C%2Ebtn%2Dlink%2Eactive%2C%2Ebtn%2Dlink%3Aactive%2C%2Ebtn%2Dlink%5Bdisabled%5D%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dlink%7Bbackground%2Dcolor%3Atransparent%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebtn%2Dlink%2C%2Ebtn%2Dlink%3Aactive%2C%2Ebtn%2Dlink%3Afocus%2C%2Ebtn%2Dlink%3Ahover%7Bborder%2Dcolor%3Atransparent%7D%2Ebtn%2Dlink%3Afocus%2C%2Ebtn%2Dlink%3Ahover%7Bcolor%3A%2323527c%3Btext%2Ddecoration%3Aunderline%3Bbackground%2Dcolor%3Atransparent%7D%2Ebtn%2Dlink%5Bdisabled%5D%3Afocus%2C%2Ebtn%2Dlink%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dlink%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dlink%3Ahover%7Bcolor%3A%23777%3Btext%2Ddecoration%3Anone%7D%2Ebtn%2Dgroup%2Dlg%3E%2Ebtn%2C%2Ebtn%2Dlg%7Bpadding%3A10px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A6px%7D%2Ebtn%2Dgroup%2Dsm%3E%2Ebtn%2C%2Ebtn%2Dsm%7Bpadding%3A5px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A3px%7D%2Ebtn%2Dgroup%2Dxs%3E%2Ebtn%2C%2Ebtn%2Dxs%7Bpadding%3A1px%205px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A3px%7D%2Ebtn%2Dblock%7Bdisplay%3Ablock%3Bwidth%3A100%25%7D%2Ebtn%2Dblock%2B%2Ebtn%2Dblock%7Bmargin%2Dtop%3A5px%7Dinput%5Btype%3Dbutton%5D%2Ebtn%2Dblock%2Cinput%5Btype%3Dreset%5D%2Ebtn%2Dblock%2Cinput%5Btype%3Dsubmit%5D%2Ebtn%2Dblock%7Bwidth%3A100%25%7D%2Efade%7Bopacity%3A0%3B%2Dwebkit%2Dtransition%3Aopacity%20%2E15s%20linear%3B%2Do%2Dtransition%3Aopacity%20%2E15s%20linear%3Btransition%3Aopacity%20%2E15s%20linear%7D%2Efade%2Ein%7Bopacity%3A1%7D%2Ecollapse%7Bdisplay%3Anone%7D%2Ecollapse%2Ein%7Bdisplay%3Ablock%7Dtr%2Ecollapse%2Ein%7Bdisplay%3Atable%2Drow%7Dtbody%2Ecollapse%2Ein%7Bdisplay%3Atable%2Drow%2Dgroup%7D%2Ecollapsing%7Bposition%3Arelative%3Bheight%3A0%3Boverflow%3Ahidden%3B%2Dwebkit%2Dtransition%2Dtiming%2Dfunction%3Aease%3B%2Do%2Dtransition%2Dtiming%2Dfunction%3Aease%3Btransition%2Dtiming%2Dfunction%3Aease%3B%2Dwebkit%2Dtransition%2Dduration%3A%2E35s%3B%2Do%2Dtransition%2Dduration%3A%2E35s%3Btransition%2Dduration%3A%2E35s%3B%2Dwebkit%2Dtransition%2Dproperty%3Aheight%2Cvisibility%3B%2Do%2Dtransition%2Dproperty%3Aheight%2Cvisibility%3Btransition%2Dproperty%3Aheight%2Cvisibility%7D%2Ecaret%7Bdisplay%3Ainline%2Dblock%3Bwidth%3A0%3Bheight%3A0%3Bmargin%2Dleft%3A2px%3Bvertical%2Dalign%3Amiddle%3Bborder%2Dtop%3A4px%20dashed%3Bborder%2Dtop%3A4px%20solid%5C9%3Bborder%2Dright%3A4px%20solid%20transparent%3Bborder%2Dleft%3A4px%20solid%20transparent%7D%2Edropdown%2C%2Edropup%7Bposition%3Arelative%7D%2Edropdown%2Dtoggle%3Afocus%7Boutline%3A0%7D%2Edropdown%2Dmenu%7Bposition%3Aabsolute%3Btop%3A100%25%3Bleft%3A0%3Bz%2Dindex%3A1000%3Bdisplay%3Anone%3Bfloat%3Aleft%3Bmin%2Dwidth%3A160px%3Bpadding%3A5px%200%3Bmargin%3A2px%200%200%3Bfont%2Dsize%3A14px%3Btext%2Dalign%3Aleft%3Blist%2Dstyle%3Anone%3Bbackground%2Dcolor%3A%23fff%3B%2Dwebkit%2Dbackground%2Dclip%3Apadding%2Dbox%3Bbackground%2Dclip%3Apadding%2Dbox%3Bborder%3A1px%20solid%20%23ccc%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C%2E15%29%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%206px%2012px%20rgba%280%2C0%2C0%2C%2E175%29%3Bbox%2Dshadow%3A0%206px%2012px%20rgba%280%2C0%2C0%2C%2E175%29%7D%2Edropdown%2Dmenu%2Epull%2Dright%7Bright%3A0%3Bleft%3Aauto%7D%2Edropdown%2Dmenu%20%2Edivider%7Bheight%3A1px%3Bmargin%3A9px%200%3Boverflow%3Ahidden%3Bbackground%2Dcolor%3A%23e5e5e5%7D%2Edropdown%2Dmenu%3Eli%3Ea%7Bdisplay%3Ablock%3Bpadding%3A3px%2020px%3Bclear%3Aboth%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23333%3Bwhite%2Dspace%3Anowrap%7D%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%2C%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%7Bcolor%3A%23262626%3Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23f5f5f5%7D%2Edropdown%2Dmenu%3E%2Eactive%3Ea%2C%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Afocus%2C%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Ahover%7Bcolor%3A%23fff%3Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23337ab7%3Boutline%3A0%7D%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%2C%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%2C%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%7Bcolor%3A%23777%7D%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%2C%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%7Btext%2Ddecoration%3Anone%3Bcursor%3Anot%2Dallowed%3Bbackground%2Dcolor%3Atransparent%3Bbackground%2Dimage%3Anone%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28enabled%3Dfalse%29%7D%2Eopen%3E%2Edropdown%2Dmenu%7Bdisplay%3Ablock%7D%2Eopen%3Ea%7Boutline%3A0%7D%2Edropdown%2Dmenu%2Dright%7Bright%3A0%3Bleft%3Aauto%7D%2Edropdown%2Dmenu%2Dleft%7Bright%3Aauto%3Bleft%3A0%7D%2Edropdown%2Dheader%7Bdisplay%3Ablock%3Bpadding%3A3px%2020px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23777%3Bwhite%2Dspace%3Anowrap%7D%2Edropdown%2Dbackdrop%7Bposition%3Afixed%3Btop%3A0%3Bright%3A0%3Bbottom%3A0%3Bleft%3A0%3Bz%2Dindex%3A990%7D%2Epull%2Dright%3E%2Edropdown%2Dmenu%7Bright%3A0%3Bleft%3Aauto%7D%2Edropup%20%2Ecaret%2C%2Enavbar%2Dfixed%2Dbottom%20%2Edropdown%20%2Ecaret%7Bcontent%3A%22%22%3Bborder%2Dtop%3A0%3Bborder%2Dbottom%3A4px%20dashed%3Bborder%2Dbottom%3A4px%20solid%5C9%7D%2Edropup%20%2Edropdown%2Dmenu%2C%2Enavbar%2Dfixed%2Dbottom%20%2Edropdown%20%2Edropdown%2Dmenu%7Btop%3Aauto%3Bbottom%3A100%25%3Bmargin%2Dbottom%3A2px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dright%20%2Edropdown%2Dmenu%7Bright%3A0%3Bleft%3Aauto%7D%2Enavbar%2Dright%20%2Edropdown%2Dmenu%2Dleft%7Bright%3Aauto%3Bleft%3A0%7D%7D%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%2Dvertical%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Amiddle%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2C%2Ebtn%2Dgroup%3E%2Ebtn%7Bposition%3Arelative%3Bfloat%3Aleft%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Eactive%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Aactive%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Afocus%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Ahover%2C%2Ebtn%2Dgroup%3E%2Ebtn%2Eactive%2C%2Ebtn%2Dgroup%3E%2Ebtn%3Aactive%2C%2Ebtn%2Dgroup%3E%2Ebtn%3Afocus%2C%2Ebtn%2Dgroup%3E%2Ebtn%3Ahover%7Bz%2Dindex%3A2%7D%2Ebtn%2Dgroup%20%2Ebtn%2B%2Ebtn%2C%2Ebtn%2Dgroup%20%2Ebtn%2B%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%20%2Ebtn%2Dgroup%2B%2Ebtn%2C%2Ebtn%2Dgroup%20%2Ebtn%2Dgroup%2B%2Ebtn%2Dgroup%7Bmargin%2Dleft%3A%2D1px%7D%2Ebtn%2Dtoolbar%7Bmargin%2Dleft%3A%2D5px%7D%2Ebtn%2Dtoolbar%20%2Ebtn%2C%2Ebtn%2Dtoolbar%20%2Ebtn%2Dgroup%2C%2Ebtn%2Dtoolbar%20%2Einput%2Dgroup%7Bfloat%3Aleft%7D%2Ebtn%2Dtoolbar%3E%2Ebtn%2C%2Ebtn%2Dtoolbar%3E%2Ebtn%2Dgroup%2C%2Ebtn%2Dtoolbar%3E%2Einput%2Dgroup%7Bmargin%2Dleft%3A5px%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%3Anot%28%2Edropdown%2Dtoggle%29%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Afirst%2Dchild%7Bmargin%2Dleft%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3Anot%28%2Edropdown%2Dtoggle%29%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%2C%2Ebtn%2Dgroup%3E%2Edropdown%2Dtoggle%3Anot%28%3Afirst%2Dchild%29%7Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%7Bfloat%3Aleft%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%3Alast%2Dchild%2C%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Edropdown%2Dtoggle%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%3E%2Ebtn%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%20%2Edropdown%2Dtoggle%3Aactive%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%7Boutline%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2B%2Edropdown%2Dtoggle%7Bpadding%2Dright%3A8px%3Bpadding%2Dleft%3A8px%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dlg%2B%2Edropdown%2Dtoggle%7Bpadding%2Dright%3A12px%3Bpadding%2Dleft%3A12px%7D%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%7B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C%2E125%29%3Bbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C%2E125%29%7D%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dlink%7B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebtn%20%2Ecaret%7Bmargin%2Dleft%3A0%7D%2Ebtn%2Dlg%20%2Ecaret%7Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dbottom%2Dwidth%3A0%7D%2Edropup%20%2Ebtn%2Dlg%20%2Ecaret%7Bborder%2Dwidth%3A0%205px%205px%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3E%2Ebtn%7Bdisplay%3Ablock%3Bfloat%3Anone%3Bwidth%3A100%25%3Bmax%2Dwidth%3A100%25%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3E%2Ebtn%7Bfloat%3Anone%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2B%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2B%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%2B%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%2B%2Ebtn%2Dgroup%7Bmargin%2Dtop%3A%2D1px%3Bmargin%2Dleft%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dtop%2Dright%2Dradius%3A4px%3Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%7Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A4px%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%3Alast%2Dchild%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Edropdown%2Dtoggle%7Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%3E%2Ebtn%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Djustified%7Bdisplay%3Atable%3Bwidth%3A100%25%3Btable%2Dlayout%3Afixed%3Bborder%2Dcollapse%3Aseparate%7D%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2C%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2Dgroup%7Bdisplay%3Atable%2Dcell%3Bfloat%3Anone%3Bwidth%3A1%25%7D%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2Dgroup%20%2Ebtn%7Bwidth%3A100%25%7D%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2Dgroup%20%2Edropdown%2Dmenu%7Bleft%3Aauto%7D%5Bdata%2Dtoggle%3Dbuttons%5D%3E%2Ebtn%20input%5Btype%3Dcheckbox%5D%2C%5Bdata%2Dtoggle%3Dbuttons%5D%3E%2Ebtn%20input%5Btype%3Dradio%5D%2C%5Bdata%2Dtoggle%3Dbuttons%5D%3E%2Ebtn%2Dgroup%3E%2Ebtn%20input%5Btype%3Dcheckbox%5D%2C%5Bdata%2Dtoggle%3Dbuttons%5D%3E%2Ebtn%2Dgroup%3E%2Ebtn%20input%5Btype%3Dradio%5D%7Bposition%3Aabsolute%3Bclip%3Arect%280%2C0%2C0%2C0%29%3Bpointer%2Devents%3Anone%7D%2Einput%2Dgroup%7Bposition%3Arelative%3Bdisplay%3Atable%3Bborder%2Dcollapse%3Aseparate%7D%2Einput%2Dgroup%5Bclass%2A%3Dcol%2D%5D%7Bfloat%3Anone%3Bpadding%2Dright%3A0%3Bpadding%2Dleft%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%7Bposition%3Arelative%3Bz%2Dindex%3A2%3Bfloat%3Aleft%3Bwidth%3A100%25%3Bmargin%2Dbottom%3A0%7D%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2C%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A46px%3Bpadding%3A10px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A6px%7Dselect%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2Cselect%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2Cselect%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A46px%3Bline%2Dheight%3A46px%7Dselect%5Bmultiple%5D%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%2Ctextarea%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2Ctextarea%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2Ctextarea%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3Aauto%7D%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2C%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A30px%3Bpadding%3A5px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A3px%7Dselect%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2Cselect%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2Cselect%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A30px%3Bline%2Dheight%3A30px%7Dselect%5Bmultiple%5D%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%2Ctextarea%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2Ctextarea%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2Ctextarea%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3Aauto%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%2C%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dbtn%7Bdisplay%3Atable%2Dcell%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%2C%2Einput%2Dgroup%2Daddon%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%2C%2Einput%2Dgroup%2Dbtn%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dradius%3A0%7D%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dbtn%7Bwidth%3A1%25%3Bwhite%2Dspace%3Anowrap%3Bvertical%2Dalign%3Amiddle%7D%2Einput%2Dgroup%2Daddon%7Bpadding%3A6px%2012px%3Bfont%2Dsize%3A14px%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%3Bcolor%3A%23555%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23eee%3Bborder%3A1px%20solid%20%23ccc%3Bborder%2Dradius%3A4px%7D%2Einput%2Dgroup%2Daddon%2Einput%2Dsm%7Bpadding%3A5px%2010px%3Bfont%2Dsize%3A12px%3Bborder%2Dradius%3A3px%7D%2Einput%2Dgroup%2Daddon%2Einput%2Dlg%7Bpadding%3A10px%2016px%3Bfont%2Dsize%3A18px%3Bborder%2Dradius%3A6px%7D%2Einput%2Dgroup%2Daddon%20input%5Btype%3Dcheckbox%5D%2C%2Einput%2Dgroup%2Daddon%20input%5Btype%3Dradio%5D%7Bmargin%2Dtop%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Afirst%2Dchild%2C%2Einput%2Dgroup%2Daddon%3Afirst%2Dchild%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2Dgroup%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Edropdown%2Dtoggle%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2Dgroup%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%3Anot%28%3Alast%2Dchild%29%3Anot%28%2Edropdown%2Dtoggle%29%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A0%7D%2Einput%2Dgroup%2Daddon%3Afirst%2Dchild%7Bborder%2Dright%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Alast%2Dchild%2C%2Einput%2Dgroup%2Daddon%3Alast%2Dchild%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2Dgroup%3Anot%28%3Afirst%2Dchild%29%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%3Anot%28%3Afirst%2Dchild%29%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2Dgroup%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Edropdown%2Dtoggle%7Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Einput%2Dgroup%2Daddon%3Alast%2Dchild%7Bborder%2Dleft%3A0%7D%2Einput%2Dgroup%2Dbtn%7Bposition%3Arelative%3Bfont%2Dsize%3A0%3Bwhite%2Dspace%3Anowrap%7D%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bposition%3Arelative%7D%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%2B%2Ebtn%7Bmargin%2Dleft%3A%2D1px%7D%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%3Aactive%2C%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%3Afocus%2C%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%3Ahover%7Bz%2Dindex%3A2%7D%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2Dgroup%7Bmargin%2Dright%3A%2D1px%7D%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2Dgroup%7Bz%2Dindex%3A2%3Bmargin%2Dleft%3A%2D1px%7D%2Enav%7Bpadding%2Dleft%3A0%3Bmargin%2Dbottom%3A0%3Blist%2Dstyle%3Anone%7D%2Enav%3Eli%7Bposition%3Arelative%3Bdisplay%3Ablock%7D%2Enav%3Eli%3Ea%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bpadding%3A10px%2015px%7D%2Enav%3Eli%3Ea%3Afocus%2C%2Enav%3Eli%3Ea%3Ahover%7Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23eee%7D%2Enav%3Eli%2Edisabled%3Ea%7Bcolor%3A%23777%7D%2Enav%3Eli%2Edisabled%3Ea%3Afocus%2C%2Enav%3Eli%2Edisabled%3Ea%3Ahover%7Bcolor%3A%23777%3Btext%2Ddecoration%3Anone%3Bcursor%3Anot%2Dallowed%3Bbackground%2Dcolor%3Atransparent%7D%2Enav%20%2Eopen%3Ea%2C%2Enav%20%2Eopen%3Ea%3Afocus%2C%2Enav%20%2Eopen%3Ea%3Ahover%7Bbackground%2Dcolor%3A%23eee%3Bborder%2Dcolor%3A%23337ab7%7D%2Enav%20%2Enav%2Ddivider%7Bheight%3A1px%3Bmargin%3A9px%200%3Boverflow%3Ahidden%3Bbackground%2Dcolor%3A%23e5e5e5%7D%2Enav%3Eli%3Ea%3Eimg%7Bmax%2Dwidth%3Anone%7D%2Enav%2Dtabs%7Bborder%2Dbottom%3A1px%20solid%20%23ddd%7D%2Enav%2Dtabs%3Eli%7Bfloat%3Aleft%3Bmargin%2Dbottom%3A%2D1px%7D%2Enav%2Dtabs%3Eli%3Ea%7Bmargin%2Dright%3A2px%3Bline%2Dheight%3A1%2E42857143%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Enav%2Dtabs%3Eli%3Ea%3Ahover%7Bborder%2Dcolor%3A%23eee%20%23eee%20%23ddd%7D%2Enav%2Dtabs%3Eli%2Eactive%3Ea%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Afocus%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Ahover%7Bcolor%3A%23555%3Bcursor%3Adefault%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23ddd%3Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Enav%2Dtabs%2Enav%2Djustified%7Bwidth%3A100%25%3Bborder%2Dbottom%3A0%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%7Bfloat%3Anone%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dbottom%3A5px%3Btext%2Dalign%3Acenter%7D%2Enav%2Dtabs%2Enav%2Djustified%3E%2Edropdown%20%2Edropdown%2Dmenu%7Btop%3Aauto%3Bleft%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Dtabs%2Enav%2Djustified%3Eli%7Bdisplay%3Atable%2Dcell%3Bwidth%3A1%25%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dbottom%3A0%7D%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dright%3A0%3Bborder%2Dradius%3A4px%7D%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Afocus%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Ahover%7Bborder%3A1px%20solid%20%23ddd%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bborder%2Dbottom%3A1px%20solid%20%23ddd%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Afocus%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Ahover%7Bborder%2Dbottom%2Dcolor%3A%23fff%7D%7D%2Enav%2Dpills%3Eli%7Bfloat%3Aleft%7D%2Enav%2Dpills%3Eli%3Ea%7Bborder%2Dradius%3A4px%7D%2Enav%2Dpills%3Eli%2Bli%7Bmargin%2Dleft%3A2px%7D%2Enav%2Dpills%3Eli%2Eactive%3Ea%2C%2Enav%2Dpills%3Eli%2Eactive%3Ea%3Afocus%2C%2Enav%2Dpills%3Eli%2Eactive%3Ea%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23337ab7%7D%2Enav%2Dstacked%3Eli%7Bfloat%3Anone%7D%2Enav%2Dstacked%3Eli%2Bli%7Bmargin%2Dtop%3A2px%3Bmargin%2Dleft%3A0%7D%2Enav%2Djustified%7Bwidth%3A100%25%7D%2Enav%2Djustified%3Eli%7Bfloat%3Anone%7D%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dbottom%3A5px%3Btext%2Dalign%3Acenter%7D%2Enav%2Djustified%3E%2Edropdown%20%2Edropdown%2Dmenu%7Btop%3Aauto%3Bleft%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Djustified%3Eli%7Bdisplay%3Atable%2Dcell%3Bwidth%3A1%25%7D%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dbottom%3A0%7D%7D%2Enav%2Dtabs%2Djustified%7Bborder%2Dbottom%3A0%7D%2Enav%2Dtabs%2Djustified%3Eli%3Ea%7Bmargin%2Dright%3A0%3Bborder%2Dradius%3A4px%7D%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Afocus%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Ahover%7Bborder%3A1px%20solid%20%23ddd%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Dtabs%2Djustified%3Eli%3Ea%7Bborder%2Dbottom%3A1px%20solid%20%23ddd%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Afocus%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Ahover%7Bborder%2Dbottom%2Dcolor%3A%23fff%7D%7D%2Etab%2Dcontent%3E%2Etab%2Dpane%7Bdisplay%3Anone%7D%2Etab%2Dcontent%3E%2Eactive%7Bdisplay%3Ablock%7D%2Enav%2Dtabs%20%2Edropdown%2Dmenu%7Bmargin%2Dtop%3A%2D1px%3Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Enavbar%7Bposition%3Arelative%3Bmin%2Dheight%3A50px%3Bmargin%2Dbottom%3A20px%3Bborder%3A1px%20solid%20transparent%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%7Bborder%2Dradius%3A4px%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dheader%7Bfloat%3Aleft%7D%7D%2Enavbar%2Dcollapse%7Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A15px%3Boverflow%2Dx%3Avisible%3B%2Dwebkit%2Doverflow%2Dscrolling%3Atouch%3Bborder%2Dtop%3A1px%20solid%20transparent%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C%2E1%29%3Bbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C%2E1%29%7D%2Enavbar%2Dcollapse%2Ein%7Boverflow%2Dy%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dcollapse%7Bwidth%3Aauto%3Bborder%2Dtop%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Enavbar%2Dcollapse%2Ecollapse%7Bdisplay%3Ablock%21important%3Bheight%3Aauto%21important%3Bpadding%2Dbottom%3A0%3Boverflow%3Avisible%21important%7D%2Enavbar%2Dcollapse%2Ein%7Boverflow%2Dy%3Avisible%7D%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dfixed%2Dtop%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dstatic%2Dtop%20%2Enavbar%2Dcollapse%7Bpadding%2Dright%3A0%3Bpadding%2Dleft%3A0%7D%7D%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dfixed%2Dtop%20%2Enavbar%2Dcollapse%7Bmax%2Dheight%3A340px%7D%40media%20%28max%2Ddevice%2Dwidth%3A480px%29%20and%20%28orientation%3Alandscape%29%7B%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dfixed%2Dtop%20%2Enavbar%2Dcollapse%7Bmax%2Dheight%3A200px%7D%7D%2Econtainer%2Dfluid%3E%2Enavbar%2Dcollapse%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dheader%2C%2Econtainer%3E%2Enavbar%2Dcollapse%2C%2Econtainer%3E%2Enavbar%2Dheader%7Bmargin%2Dright%3A%2D15px%3Bmargin%2Dleft%3A%2D15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Econtainer%2Dfluid%3E%2Enavbar%2Dcollapse%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dheader%2C%2Econtainer%3E%2Enavbar%2Dcollapse%2C%2Econtainer%3E%2Enavbar%2Dheader%7Bmargin%2Dright%3A0%3Bmargin%2Dleft%3A0%7D%7D%2Enavbar%2Dstatic%2Dtop%7Bz%2Dindex%3A1000%3Bborder%2Dwidth%3A0%200%201px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dstatic%2Dtop%7Bborder%2Dradius%3A0%7D%7D%2Enavbar%2Dfixed%2Dbottom%2C%2Enavbar%2Dfixed%2Dtop%7Bposition%3Afixed%3Bright%3A0%3Bleft%3A0%3Bz%2Dindex%3A1030%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dfixed%2Dbottom%2C%2Enavbar%2Dfixed%2Dtop%7Bborder%2Dradius%3A0%7D%7D%2Enavbar%2Dfixed%2Dtop%7Btop%3A0%3Bborder%2Dwidth%3A0%200%201px%7D%2Enavbar%2Dfixed%2Dbottom%7Bbottom%3A0%3Bmargin%2Dbottom%3A0%3Bborder%2Dwidth%3A1px%200%200%7D%2Enavbar%2Dbrand%7Bfloat%3Aleft%3Bheight%3A50px%3Bpadding%3A15px%2015px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A20px%7D%2Enavbar%2Dbrand%3Afocus%2C%2Enavbar%2Dbrand%3Ahover%7Btext%2Ddecoration%3Anone%7D%2Enavbar%2Dbrand%3Eimg%7Bdisplay%3Ablock%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%3E%2Econtainer%20%2Enavbar%2Dbrand%2C%2Enavbar%3E%2Econtainer%2Dfluid%20%2Enavbar%2Dbrand%7Bmargin%2Dleft%3A%2D15px%7D%7D%2Enavbar%2Dtoggle%7Bposition%3Arelative%3Bfloat%3Aright%3Bpadding%3A9px%2010px%3Bmargin%2Dtop%3A8px%3Bmargin%2Dright%3A15px%3Bmargin%2Dbottom%3A8px%3Bbackground%2Dcolor%3Atransparent%3Bbackground%2Dimage%3Anone%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%7D%2Enavbar%2Dtoggle%3Afocus%7Boutline%3A0%7D%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%7Bdisplay%3Ablock%3Bwidth%3A22px%3Bheight%3A2px%3Bborder%2Dradius%3A1px%7D%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%2B%2Eicon%2Dbar%7Bmargin%2Dtop%3A4px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dtoggle%7Bdisplay%3Anone%7D%7D%2Enavbar%2Dnav%7Bmargin%3A7%2E5px%20%2D15px%7D%2Enavbar%2Dnav%3Eli%3Ea%7Bpadding%2Dtop%3A10px%3Bpadding%2Dbottom%3A10px%3Bline%2Dheight%3A20px%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%7Bposition%3Astatic%3Bfloat%3Anone%3Bwidth%3Aauto%3Bmargin%2Dtop%3A0%3Bbackground%2Dcolor%3Atransparent%3Bborder%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%20%2Edropdown%2Dheader%2C%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bpadding%3A5px%2015px%205px%2025px%7D%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bline%2Dheight%3A20px%7D%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%2C%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%7Bbackground%2Dimage%3Anone%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dnav%7Bfloat%3Aleft%3Bmargin%3A0%7D%2Enavbar%2Dnav%3Eli%7Bfloat%3Aleft%7D%2Enavbar%2Dnav%3Eli%3Ea%7Bpadding%2Dtop%3A15px%3Bpadding%2Dbottom%3A15px%7D%7D%2Enavbar%2Dform%7Bpadding%3A10px%2015px%3Bmargin%2Dtop%3A8px%3Bmargin%2Dright%3A%2D15px%3Bmargin%2Dbottom%3A8px%3Bmargin%2Dleft%3A%2D15px%3Bborder%2Dtop%3A1px%20solid%20transparent%3Bborder%2Dbottom%3A1px%20solid%20transparent%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C%2E1%29%2C0%201px%200%20rgba%28255%2C255%2C255%2C%2E1%29%3Bbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C%2E1%29%2C0%201px%200%20rgba%28255%2C255%2C255%2C%2E1%29%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dform%20%2Eform%2Dgroup%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eform%2Dcontrol%7Bdisplay%3Ainline%2Dblock%3Bwidth%3Aauto%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eform%2Dcontrol%2Dstatic%7Bdisplay%3Ainline%2Dblock%7D%2Enavbar%2Dform%20%2Einput%2Dgroup%7Bdisplay%3Ainline%2Dtable%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Einput%2Dgroup%20%2Eform%2Dcontrol%2C%2Enavbar%2Dform%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Daddon%2C%2Enavbar%2Dform%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Dbtn%7Bwidth%3Aauto%7D%2Enavbar%2Dform%20%2Einput%2Dgroup%3E%2Eform%2Dcontrol%7Bwidth%3A100%25%7D%2Enavbar%2Dform%20%2Econtrol%2Dlabel%7Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Echeckbox%2C%2Enavbar%2Dform%20%2Eradio%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Echeckbox%20label%2C%2Enavbar%2Dform%20%2Eradio%20label%7Bpadding%2Dleft%3A0%7D%2Enavbar%2Dform%20%2Echeckbox%20input%5Btype%3Dcheckbox%5D%2C%2Enavbar%2Dform%20%2Eradio%20input%5Btype%3Dradio%5D%7Bposition%3Arelative%3Bmargin%2Dleft%3A0%7D%2Enavbar%2Dform%20%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%2Dfeedback%7Btop%3A0%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Dform%20%2Eform%2Dgroup%7Bmargin%2Dbottom%3A5px%7D%2Enavbar%2Dform%20%2Eform%2Dgroup%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dform%7Bwidth%3Aauto%3Bpadding%2Dtop%3A0%3Bpadding%2Dbottom%3A0%3Bmargin%2Dright%3A0%3Bmargin%2Dleft%3A0%3Bborder%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%7D%2Enavbar%2Dnav%3Eli%3E%2Edropdown%2Dmenu%7Bmargin%2Dtop%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dnav%3Eli%3E%2Edropdown%2Dmenu%7Bmargin%2Dbottom%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%3Bborder%2Dtop%2Dright%2Dradius%3A4px%3Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Enavbar%2Dbtn%7Bmargin%2Dtop%3A8px%3Bmargin%2Dbottom%3A8px%7D%2Enavbar%2Dbtn%2Ebtn%2Dsm%7Bmargin%2Dtop%3A10px%3Bmargin%2Dbottom%3A10px%7D%2Enavbar%2Dbtn%2Ebtn%2Dxs%7Bmargin%2Dtop%3A14px%3Bmargin%2Dbottom%3A14px%7D%2Enavbar%2Dtext%7Bmargin%2Dtop%3A15px%3Bmargin%2Dbottom%3A15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dtext%7Bfloat%3Aleft%3Bmargin%2Dright%3A15px%3Bmargin%2Dleft%3A15px%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dleft%7Bfloat%3Aleft%21important%7D%2Enavbar%2Dright%7Bfloat%3Aright%21important%3Bmargin%2Dright%3A%2D15px%7D%2Enavbar%2Dright%7E%2Enavbar%2Dright%7Bmargin%2Dright%3A0%7D%7D%2Enavbar%2Ddefault%7Bbackground%2Dcolor%3A%23f8f8f8%3Bborder%2Dcolor%3A%23e7e7e7%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dbrand%7Bcolor%3A%23777%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dbrand%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dbrand%3Ahover%7Bcolor%3A%235e5e5e%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtext%7Bcolor%3A%23777%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3Eli%3Ea%7Bcolor%3A%23777%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3Eli%3Ea%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3Eli%3Ea%3Ahover%7Bcolor%3A%23333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Ahover%7Bcolor%3A%23555%3Bbackground%2Dcolor%3A%23e7e7e7%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Ahover%7Bcolor%3A%23ccc%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%7Bborder%2Dcolor%3A%23ddd%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%3Ahover%7Bbackground%2Dcolor%3A%23ddd%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%7Bbackground%2Dcolor%3A%23888%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dform%7Bborder%2Dcolor%3A%23e7e7e7%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Ahover%7Bcolor%3A%23555%3Bbackground%2Dcolor%3A%23e7e7e7%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bcolor%3A%23777%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%7Bcolor%3A%23333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Ahover%7Bcolor%3A%23555%3Bbackground%2Dcolor%3A%23e7e7e7%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%7Bcolor%3A%23ccc%3Bbackground%2Dcolor%3Atransparent%7D%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dlink%7Bcolor%3A%23777%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dlink%3Ahover%7Bcolor%3A%23333%7D%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%7Bcolor%3A%23777%7D%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Afocus%2C%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Ahover%7Bcolor%3A%23333%7D%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%5Bdisabled%5D%3Afocus%2C%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Ahover%7Bcolor%3A%23ccc%7D%2Enavbar%2Dinverse%7Bbackground%2Dcolor%3A%23222%3Bborder%2Dcolor%3A%23080808%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dbrand%7Bcolor%3A%239d9d9d%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dbrand%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dbrand%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtext%7Bcolor%3A%239d9d9d%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3Eli%3Ea%7Bcolor%3A%239d9d9d%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3Eli%3Ea%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3Eli%3Ea%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23080808%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Ahover%7Bcolor%3A%23444%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%7Bborder%2Dcolor%3A%23333%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%3Ahover%7Bbackground%2Dcolor%3A%23333%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%7Bbackground%2Dcolor%3A%23fff%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dform%7Bborder%2Dcolor%3A%23101010%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23080808%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edropdown%2Dheader%7Bborder%2Dcolor%3A%23080808%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%20%2Edivider%7Bbackground%2Dcolor%3A%23080808%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bcolor%3A%239d9d9d%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23080808%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%7Bcolor%3A%23444%3Bbackground%2Dcolor%3Atransparent%7D%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dlink%7Bcolor%3A%239d9d9d%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dlink%3Ahover%7Bcolor%3A%23fff%7D%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%7Bcolor%3A%239d9d9d%7D%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Afocus%2C%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Ahover%7Bcolor%3A%23fff%7D%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%5Bdisabled%5D%3Afocus%2C%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Ahover%7Bcolor%3A%23444%7D%2Ebreadcrumb%7Bpadding%3A8px%2015px%3Bmargin%2Dbottom%3A20px%3Blist%2Dstyle%3Anone%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%2Dradius%3A4px%7D%2Ebreadcrumb%3Eli%7Bdisplay%3Ainline%2Dblock%7D%2Ebreadcrumb%3Eli%2Bli%3Abefore%7Bpadding%3A0%205px%3Bcolor%3A%23ccc%3Bcontent%3A%22%2F%5C00a0%22%7D%2Ebreadcrumb%3E%2Eactive%7Bcolor%3A%23777%7D%2Epagination%7Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A0%3Bmargin%3A20px%200%3Bborder%2Dradius%3A4px%7D%2Epagination%3Eli%7Bdisplay%3Ainline%7D%2Epagination%3Eli%3Ea%2C%2Epagination%3Eli%3Espan%7Bposition%3Arelative%3Bfloat%3Aleft%3Bpadding%3A6px%2012px%3Bmargin%2Dleft%3A%2D1px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23337ab7%3Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23ddd%7D%2Epagination%3Eli%3Afirst%2Dchild%3Ea%2C%2Epagination%3Eli%3Afirst%2Dchild%3Espan%7Bmargin%2Dleft%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%3Bborder%2Dbottom%2Dleft%2Dradius%3A4px%7D%2Epagination%3Eli%3Alast%2Dchild%3Ea%2C%2Epagination%3Eli%3Alast%2Dchild%3Espan%7Bborder%2Dtop%2Dright%2Dradius%3A4px%3Bborder%2Dbottom%2Dright%2Dradius%3A4px%7D%2Epagination%3Eli%3Ea%3Afocus%2C%2Epagination%3Eli%3Ea%3Ahover%2C%2Epagination%3Eli%3Espan%3Afocus%2C%2Epagination%3Eli%3Espan%3Ahover%7Bz%2Dindex%3A3%3Bcolor%3A%2323527c%3Bbackground%2Dcolor%3A%23eee%3Bborder%2Dcolor%3A%23ddd%7D%2Epagination%3E%2Eactive%3Ea%2C%2Epagination%3E%2Eactive%3Ea%3Afocus%2C%2Epagination%3E%2Eactive%3Ea%3Ahover%2C%2Epagination%3E%2Eactive%3Espan%2C%2Epagination%3E%2Eactive%3Espan%3Afocus%2C%2Epagination%3E%2Eactive%3Espan%3Ahover%7Bz%2Dindex%3A2%3Bcolor%3A%23fff%3Bcursor%3Adefault%3Bbackground%2Dcolor%3A%23337ab7%3Bborder%2Dcolor%3A%23337ab7%7D%2Epagination%3E%2Edisabled%3Ea%2C%2Epagination%3E%2Edisabled%3Ea%3Afocus%2C%2Epagination%3E%2Edisabled%3Ea%3Ahover%2C%2Epagination%3E%2Edisabled%3Espan%2C%2Epagination%3E%2Edisabled%3Espan%3Afocus%2C%2Epagination%3E%2Edisabled%3Espan%3Ahover%7Bcolor%3A%23777%3Bcursor%3Anot%2Dallowed%3Bbackground%2Dcolor%3A%23fff%3Bborder%2Dcolor%3A%23ddd%7D%2Epagination%2Dlg%3Eli%3Ea%2C%2Epagination%2Dlg%3Eli%3Espan%7Bpadding%3A10px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%7D%2Epagination%2Dlg%3Eli%3Afirst%2Dchild%3Ea%2C%2Epagination%2Dlg%3Eli%3Afirst%2Dchild%3Espan%7Bborder%2Dtop%2Dleft%2Dradius%3A6px%3Bborder%2Dbottom%2Dleft%2Dradius%3A6px%7D%2Epagination%2Dlg%3Eli%3Alast%2Dchild%3Ea%2C%2Epagination%2Dlg%3Eli%3Alast%2Dchild%3Espan%7Bborder%2Dtop%2Dright%2Dradius%3A6px%3Bborder%2Dbottom%2Dright%2Dradius%3A6px%7D%2Epagination%2Dsm%3Eli%3Ea%2C%2Epagination%2Dsm%3Eli%3Espan%7Bpadding%3A5px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%7D%2Epagination%2Dsm%3Eli%3Afirst%2Dchild%3Ea%2C%2Epagination%2Dsm%3Eli%3Afirst%2Dchild%3Espan%7Bborder%2Dtop%2Dleft%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epagination%2Dsm%3Eli%3Alast%2Dchild%3Ea%2C%2Epagination%2Dsm%3Eli%3Alast%2Dchild%3Espan%7Bborder%2Dtop%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dright%2Dradius%3A3px%7D%2Epager%7Bpadding%2Dleft%3A0%3Bmargin%3A20px%200%3Btext%2Dalign%3Acenter%3Blist%2Dstyle%3Anone%7D%2Epager%20li%7Bdisplay%3Ainline%7D%2Epager%20li%3Ea%2C%2Epager%20li%3Espan%7Bdisplay%3Ainline%2Dblock%3Bpadding%3A5px%2014px%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23ddd%3Bborder%2Dradius%3A15px%7D%2Epager%20li%3Ea%3Afocus%2C%2Epager%20li%3Ea%3Ahover%7Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23eee%7D%2Epager%20%2Enext%3Ea%2C%2Epager%20%2Enext%3Espan%7Bfloat%3Aright%7D%2Epager%20%2Eprevious%3Ea%2C%2Epager%20%2Eprevious%3Espan%7Bfloat%3Aleft%7D%2Epager%20%2Edisabled%3Ea%2C%2Epager%20%2Edisabled%3Ea%3Afocus%2C%2Epager%20%2Edisabled%3Ea%3Ahover%2C%2Epager%20%2Edisabled%3Espan%7Bcolor%3A%23777%3Bcursor%3Anot%2Dallowed%3Bbackground%2Dcolor%3A%23fff%7D%2Elabel%7Bdisplay%3Ainline%3Bpadding%3A%2E2em%20%2E6em%20%2E3em%3Bfont%2Dsize%3A75%25%3Bfont%2Dweight%3A700%3Bline%2Dheight%3A1%3Bcolor%3A%23fff%3Btext%2Dalign%3Acenter%3Bwhite%2Dspace%3Anowrap%3Bvertical%2Dalign%3Abaseline%3Bborder%2Dradius%3A%2E25em%7Da%2Elabel%3Afocus%2Ca%2Elabel%3Ahover%7Bcolor%3A%23fff%3Btext%2Ddecoration%3Anone%3Bcursor%3Apointer%7D%2Elabel%3Aempty%7Bdisplay%3Anone%7D%2Ebtn%20%2Elabel%7Bposition%3Arelative%3Btop%3A%2D1px%7D%2Elabel%2Ddefault%7Bbackground%2Dcolor%3A%23777%7D%2Elabel%2Ddefault%5Bhref%5D%3Afocus%2C%2Elabel%2Ddefault%5Bhref%5D%3Ahover%7Bbackground%2Dcolor%3A%235e5e5e%7D%2Elabel%2Dprimary%7Bbackground%2Dcolor%3A%23337ab7%7D%2Elabel%2Dprimary%5Bhref%5D%3Afocus%2C%2Elabel%2Dprimary%5Bhref%5D%3Ahover%7Bbackground%2Dcolor%3A%23286090%7D%2Elabel%2Dsuccess%7Bbackground%2Dcolor%3A%235cb85c%7D%2Elabel%2Dsuccess%5Bhref%5D%3Afocus%2C%2Elabel%2Dsuccess%5Bhref%5D%3Ahover%7Bbackground%2Dcolor%3A%23449d44%7D%2Elabel%2Dinfo%7Bbackground%2Dcolor%3A%235bc0de%7D%2Elabel%2Dinfo%5Bhref%5D%3Afocus%2C%2Elabel%2Dinfo%5Bhref%5D%3Ahover%7Bbackground%2Dcolor%3A%2331b0d5%7D%2Elabel%2Dwarning%7Bbackground%2Dcolor%3A%23f0ad4e%7D%2Elabel%2Dwarning%5Bhref%5D%3Afocus%2C%2Elabel%2Dwarning%5Bhref%5D%3Ahover%7Bbackground%2Dcolor%3A%23ec971f%7D%2Elabel%2Ddanger%7Bbackground%2Dcolor%3A%23d9534f%7D%2Elabel%2Ddanger%5Bhref%5D%3Afocus%2C%2Elabel%2Ddanger%5Bhref%5D%3Ahover%7Bbackground%2Dcolor%3A%23c9302c%7D%2Ebadge%7Bdisplay%3Ainline%2Dblock%3Bmin%2Dwidth%3A10px%3Bpadding%3A3px%207px%3Bfont%2Dsize%3A12px%3Bfont%2Dweight%3A700%3Bline%2Dheight%3A1%3Bcolor%3A%23fff%3Btext%2Dalign%3Acenter%3Bwhite%2Dspace%3Anowrap%3Bvertical%2Dalign%3Amiddle%3Bbackground%2Dcolor%3A%23777%3Bborder%2Dradius%3A10px%7D%2Ebadge%3Aempty%7Bdisplay%3Anone%7D%2Ebtn%20%2Ebadge%7Bposition%3Arelative%3Btop%3A%2D1px%7D%2Ebtn%2Dgroup%2Dxs%3E%2Ebtn%20%2Ebadge%2C%2Ebtn%2Dxs%20%2Ebadge%7Btop%3A0%3Bpadding%3A1px%205px%7Da%2Ebadge%3Afocus%2Ca%2Ebadge%3Ahover%7Bcolor%3A%23fff%3Btext%2Ddecoration%3Anone%3Bcursor%3Apointer%7D%2Elist%2Dgroup%2Ditem%2Eactive%3E%2Ebadge%2C%2Enav%2Dpills%3E%2Eactive%3Ea%3E%2Ebadge%7Bcolor%3A%23337ab7%3Bbackground%2Dcolor%3A%23fff%7D%2Elist%2Dgroup%2Ditem%3E%2Ebadge%7Bfloat%3Aright%7D%2Elist%2Dgroup%2Ditem%3E%2Ebadge%2B%2Ebadge%7Bmargin%2Dright%3A5px%7D%2Enav%2Dpills%3Eli%3Ea%3E%2Ebadge%7Bmargin%2Dleft%3A3px%7D%2Ejumbotron%7Bpadding%2Dtop%3A30px%3Bpadding%2Dbottom%3A30px%3Bmargin%2Dbottom%3A30px%3Bcolor%3Ainherit%3Bbackground%2Dcolor%3A%23eee%7D%2Ejumbotron%20%2Eh1%2C%2Ejumbotron%20h1%7Bcolor%3Ainherit%7D%2Ejumbotron%20p%7Bmargin%2Dbottom%3A15px%3Bfont%2Dsize%3A21px%3Bfont%2Dweight%3A200%7D%2Ejumbotron%3Ehr%7Bborder%2Dtop%2Dcolor%3A%23d5d5d5%7D%2Econtainer%20%2Ejumbotron%2C%2Econtainer%2Dfluid%20%2Ejumbotron%7Bborder%2Dradius%3A6px%7D%2Ejumbotron%20%2Econtainer%7Bmax%2Dwidth%3A100%25%7D%40media%20screen%20and%20%28min%2Dwidth%3A768px%29%7B%2Ejumbotron%7Bpadding%2Dtop%3A48px%3Bpadding%2Dbottom%3A48px%7D%2Econtainer%20%2Ejumbotron%2C%2Econtainer%2Dfluid%20%2Ejumbotron%7Bpadding%2Dright%3A60px%3Bpadding%2Dleft%3A60px%7D%2Ejumbotron%20%2Eh1%2C%2Ejumbotron%20h1%7Bfont%2Dsize%3A63px%7D%7D%2Ethumbnail%7Bdisplay%3Ablock%3Bpadding%3A4px%3Bmargin%2Dbottom%3A20px%3Bline%2Dheight%3A1%2E42857143%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23ddd%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dtransition%3Aborder%20%2E2s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3Aborder%20%2E2s%20ease%2Din%2Dout%3Btransition%3Aborder%20%2E2s%20ease%2Din%2Dout%7D%2Ethumbnail%20a%3Eimg%2C%2Ethumbnail%3Eimg%7Bmargin%2Dright%3Aauto%3Bmargin%2Dleft%3Aauto%7Da%2Ethumbnail%2Eactive%2Ca%2Ethumbnail%3Afocus%2Ca%2Ethumbnail%3Ahover%7Bborder%2Dcolor%3A%23337ab7%7D%2Ethumbnail%20%2Ecaption%7Bpadding%3A9px%3Bcolor%3A%23333%7D%2Ealert%7Bpadding%3A15px%3Bmargin%2Dbottom%3A20px%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%7D%2Ealert%20h4%7Bmargin%2Dtop%3A0%3Bcolor%3Ainherit%7D%2Ealert%20%2Ealert%2Dlink%7Bfont%2Dweight%3A700%7D%2Ealert%3Ep%2C%2Ealert%3Eul%7Bmargin%2Dbottom%3A0%7D%2Ealert%3Ep%2Bp%7Bmargin%2Dtop%3A5px%7D%2Ealert%2Ddismissable%2C%2Ealert%2Ddismissible%7Bpadding%2Dright%3A35px%7D%2Ealert%2Ddismissable%20%2Eclose%2C%2Ealert%2Ddismissible%20%2Eclose%7Bposition%3Arelative%3Btop%3A%2D2px%3Bright%3A%2D21px%3Bcolor%3Ainherit%7D%2Ealert%2Dsuccess%7Bcolor%3A%233c763d%3Bbackground%2Dcolor%3A%23dff0d8%3Bborder%2Dcolor%3A%23d6e9c6%7D%2Ealert%2Dsuccess%20hr%7Bborder%2Dtop%2Dcolor%3A%23c9e2b3%7D%2Ealert%2Dsuccess%20%2Ealert%2Dlink%7Bcolor%3A%232b542c%7D%2Ealert%2Dinfo%7Bcolor%3A%2331708f%3Bbackground%2Dcolor%3A%23d9edf7%3Bborder%2Dcolor%3A%23bce8f1%7D%2Ealert%2Dinfo%20hr%7Bborder%2Dtop%2Dcolor%3A%23a6e1ec%7D%2Ealert%2Dinfo%20%2Ealert%2Dlink%7Bcolor%3A%23245269%7D%2Ealert%2Dwarning%7Bcolor%3A%238a6d3b%3Bbackground%2Dcolor%3A%23fcf8e3%3Bborder%2Dcolor%3A%23faebcc%7D%2Ealert%2Dwarning%20hr%7Bborder%2Dtop%2Dcolor%3A%23f7e1b5%7D%2Ealert%2Dwarning%20%2Ealert%2Dlink%7Bcolor%3A%2366512c%7D%2Ealert%2Ddanger%7Bcolor%3A%23a94442%3Bbackground%2Dcolor%3A%23f2dede%3Bborder%2Dcolor%3A%23ebccd1%7D%2Ealert%2Ddanger%20hr%7Bborder%2Dtop%2Dcolor%3A%23e4b9c0%7D%2Ealert%2Ddanger%20%2Ealert%2Dlink%7Bcolor%3A%23843534%7D%40%2Dwebkit%2Dkeyframes%20progress%2Dbar%2Dstripes%7Bfrom%7Bbackground%2Dposition%3A40px%200%7Dto%7Bbackground%2Dposition%3A0%200%7D%7D%40%2Do%2Dkeyframes%20progress%2Dbar%2Dstripes%7Bfrom%7Bbackground%2Dposition%3A40px%200%7Dto%7Bbackground%2Dposition%3A0%200%7D%7D%40keyframes%20progress%2Dbar%2Dstripes%7Bfrom%7Bbackground%2Dposition%3A40px%200%7Dto%7Bbackground%2Dposition%3A0%200%7D%7D%2Eprogress%7Bheight%3A20px%3Bmargin%2Dbottom%3A20px%3Boverflow%3Ahidden%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%202px%20rgba%280%2C0%2C0%2C%2E1%29%3Bbox%2Dshadow%3Ainset%200%201px%202px%20rgba%280%2C0%2C0%2C%2E1%29%7D%2Eprogress%2Dbar%7Bfloat%3Aleft%3Bwidth%3A0%3Bheight%3A100%25%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A20px%3Bcolor%3A%23fff%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23337ab7%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C%2E15%29%3Bbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C%2E15%29%3B%2Dwebkit%2Dtransition%3Awidth%20%2E6s%20ease%3B%2Do%2Dtransition%3Awidth%20%2E6s%20ease%3Btransition%3Awidth%20%2E6s%20ease%7D%2Eprogress%2Dbar%2Dstriped%2C%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3B%2Dwebkit%2Dbackground%2Dsize%3A40px%2040px%3Bbackground%2Dsize%3A40px%2040px%7D%2Eprogress%2Dbar%2Eactive%2C%2Eprogress%2Eactive%20%2Eprogress%2Dbar%7B%2Dwebkit%2Danimation%3Aprogress%2Dbar%2Dstripes%202s%20linear%20infinite%3B%2Do%2Danimation%3Aprogress%2Dbar%2Dstripes%202s%20linear%20infinite%3Banimation%3Aprogress%2Dbar%2Dstripes%202s%20linear%20infinite%7D%2Eprogress%2Dbar%2Dsuccess%7Bbackground%2Dcolor%3A%235cb85c%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Dsuccess%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%7D%2Eprogress%2Dbar%2Dinfo%7Bbackground%2Dcolor%3A%235bc0de%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Dinfo%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%7D%2Eprogress%2Dbar%2Dwarning%7Bbackground%2Dcolor%3A%23f0ad4e%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Dwarning%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%7D%2Eprogress%2Dbar%2Ddanger%7Bbackground%2Dcolor%3A%23d9534f%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Ddanger%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2Crgba%28255%2C255%2C255%2C%2E15%29%2025%25%2Ctransparent%2025%25%2Ctransparent%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2050%25%2Crgba%28255%2C255%2C255%2C%2E15%29%2075%25%2Ctransparent%2075%25%2Ctransparent%29%7D%2Emedia%7Bmargin%2Dtop%3A15px%7D%2Emedia%3Afirst%2Dchild%7Bmargin%2Dtop%3A0%7D%2Emedia%2C%2Emedia%2Dbody%7Boverflow%3Ahidden%3Bzoom%3A1%7D%2Emedia%2Dbody%7Bwidth%3A10000px%7D%2Emedia%2Dobject%7Bdisplay%3Ablock%7D%2Emedia%2Dobject%2Eimg%2Dthumbnail%7Bmax%2Dwidth%3Anone%7D%2Emedia%2Dright%2C%2Emedia%3E%2Epull%2Dright%7Bpadding%2Dleft%3A10px%7D%2Emedia%2Dleft%2C%2Emedia%3E%2Epull%2Dleft%7Bpadding%2Dright%3A10px%7D%2Emedia%2Dbody%2C%2Emedia%2Dleft%2C%2Emedia%2Dright%7Bdisplay%3Atable%2Dcell%3Bvertical%2Dalign%3Atop%7D%2Emedia%2Dmiddle%7Bvertical%2Dalign%3Amiddle%7D%2Emedia%2Dbottom%7Bvertical%2Dalign%3Abottom%7D%2Emedia%2Dheading%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A5px%7D%2Emedia%2Dlist%7Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%7D%2Elist%2Dgroup%7Bpadding%2Dleft%3A0%3Bmargin%2Dbottom%3A20px%7D%2Elist%2Dgroup%2Ditem%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bpadding%3A10px%2015px%3Bmargin%2Dbottom%3A%2D1px%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23ddd%7D%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A4px%3Bborder%2Dtop%2Dright%2Dradius%3A4px%7D%2Elist%2Dgroup%2Ditem%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A4px%3Bborder%2Dbottom%2Dleft%2Dradius%3A4px%7Da%2Elist%2Dgroup%2Ditem%2Cbutton%2Elist%2Dgroup%2Ditem%7Bcolor%3A%23555%7Da%2Elist%2Dgroup%2Ditem%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3A%23333%7Da%2Elist%2Dgroup%2Ditem%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%3Ahover%7Bcolor%3A%23555%3Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23f5f5f5%7Dbutton%2Elist%2Dgroup%2Ditem%7Bwidth%3A100%25%3Btext%2Dalign%3Aleft%7D%2Elist%2Dgroup%2Ditem%2Edisabled%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Afocus%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Ahover%7Bcolor%3A%23777%3Bcursor%3Anot%2Dallowed%3Bbackground%2Dcolor%3A%23eee%7D%2Elist%2Dgroup%2Ditem%2Edisabled%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7D%2Elist%2Dgroup%2Ditem%2Edisabled%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dtext%7Bcolor%3A%23777%7D%2Elist%2Dgroup%2Ditem%2Eactive%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%7Bz%2Dindex%3A2%3Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23337ab7%3Bborder%2Dcolor%3A%23337ab7%7D%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dheading%3E%2Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dheading%3Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%3E%2Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%3Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%3E%2Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%3Esmall%7Bcolor%3Ainherit%7D%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dtext%7Bcolor%3A%23c7ddef%7D%2Elist%2Dgroup%2Ditem%2Dsuccess%7Bcolor%3A%233c763d%3Bbackground%2Dcolor%3A%23dff0d8%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%7Bcolor%3A%233c763d%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%3Ahover%7Bcolor%3A%233c763d%3Bbackground%2Dcolor%3A%23d0e9c6%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%233c763d%3Bborder%2Dcolor%3A%233c763d%7D%2Elist%2Dgroup%2Ditem%2Dinfo%7Bcolor%3A%2331708f%3Bbackground%2Dcolor%3A%23d9edf7%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%7Bcolor%3A%2331708f%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Dinfo%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%3Ahover%7Bcolor%3A%2331708f%3Bbackground%2Dcolor%3A%23c4e3f3%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%2331708f%3Bborder%2Dcolor%3A%2331708f%7D%2Elist%2Dgroup%2Ditem%2Dwarning%7Bcolor%3A%238a6d3b%3Bbackground%2Dcolor%3A%23fcf8e3%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%7Bcolor%3A%238a6d3b%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%3Ahover%7Bcolor%3A%238a6d3b%3Bbackground%2Dcolor%3A%23faf2cc%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%238a6d3b%3Bborder%2Dcolor%3A%238a6d3b%7D%2Elist%2Dgroup%2Ditem%2Ddanger%7Bcolor%3A%23a94442%3Bbackground%2Dcolor%3A%23f2dede%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%7Bcolor%3A%23a94442%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%3Ahover%7Bcolor%3A%23a94442%3Bbackground%2Dcolor%3A%23ebcccc%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Afocus%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Ahover%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23a94442%3Bborder%2Dcolor%3A%23a94442%7D%2Elist%2Dgroup%2Ditem%2Dheading%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A5px%7D%2Elist%2Dgroup%2Ditem%2Dtext%7Bmargin%2Dbottom%3A0%3Bline%2Dheight%3A1%2E3%7D%2Epanel%7Bmargin%2Dbottom%3A20px%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%201px%201px%20rgba%280%2C0%2C0%2C%2E05%29%3Bbox%2Dshadow%3A0%201px%201px%20rgba%280%2C0%2C0%2C%2E05%29%7D%2Epanel%2Dbody%7Bpadding%3A15px%7D%2Epanel%2Dheading%7Bpadding%3A10px%2015px%3Bborder%2Dbottom%3A1px%20solid%20transparent%3Bborder%2Dtop%2Dleft%2Dradius%3A3px%3Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%2Dheading%3E%2Edropdown%20%2Edropdown%2Dtoggle%7Bcolor%3Ainherit%7D%2Epanel%2Dtitle%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bfont%2Dsize%3A16px%3Bcolor%3Ainherit%7D%2Epanel%2Dtitle%3E%2Esmall%2C%2Epanel%2Dtitle%3E%2Esmall%3Ea%2C%2Epanel%2Dtitle%3Ea%2C%2Epanel%2Dtitle%3Esmall%2C%2Epanel%2Dtitle%3Esmall%3Ea%7Bcolor%3Ainherit%7D%2Epanel%2Dfooter%7Bpadding%3A10px%2015px%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%2Dtop%3A1px%20solid%20%23ddd%3Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Elist%2Dgroup%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%7Bmargin%2Dbottom%3A0%7D%2Epanel%3E%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%7Bborder%2Dwidth%3A1px%200%3Bborder%2Dradius%3A0%7D%2Epanel%3E%2Elist%2Dgroup%3Afirst%2Dchild%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%3Afirst%2Dchild%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A3px%3Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Elist%2Dgroup%3Alast%2Dchild%20%2Elist%2Dgroup%2Ditem%3Alast%2Dchild%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%3Alast%2Dchild%20%2Elist%2Dgroup%2Ditem%3Alast%2Dchild%7Bborder%2Dbottom%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Epanel%2Dheading%2B%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%2Dwidth%3A0%7D%2Elist%2Dgroup%2B%2Epanel%2Dfooter%7Bborder%2Dtop%2Dwidth%3A0%7D%2Epanel%3E%2Epanel%2Dcollapse%3E%2Etable%2C%2Epanel%3E%2Etable%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%7Bmargin%2Dbottom%3A0%7D%2Epanel%3E%2Epanel%2Dcollapse%3E%2Etable%20caption%2C%2Epanel%3E%2Etable%20caption%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%20caption%7Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A15px%7D%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A3px%3Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A3px%3Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%7Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%7Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%7Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%7Bborder%2Dbottom%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Epanel%2Dbody%2B%2Etable%2C%2Epanel%3E%2Epanel%2Dbody%2B%2Etable%2Dresponsive%2C%2Epanel%3E%2Etable%2B%2Epanel%2Dbody%2C%2Epanel%3E%2Etable%2Dresponsive%2B%2Epanel%2Dbody%7Bborder%2Dtop%3A1px%20solid%20%23ddd%7D%2Epanel%3E%2Etable%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%2C%2Epanel%3E%2Etable%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%7Bborder%2Dtop%3A0%7D%2Epanel%3E%2Etable%2Dbordered%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%7Bborder%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Afirst%2Dchild%7Bborder%2Dleft%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Alast%2Dchild%7Bborder%2Dright%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Eth%7Bborder%2Dbottom%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Eth%7Bborder%2Dbottom%3A0%7D%2Epanel%3E%2Etable%2Dresponsive%7Bmargin%2Dbottom%3A0%3Bborder%3A0%7D%2Epanel%2Dgroup%7Bmargin%2Dbottom%3A20px%7D%2Epanel%2Dgroup%20%2Epanel%7Bmargin%2Dbottom%3A0%3Bborder%2Dradius%3A4px%7D%2Epanel%2Dgroup%20%2Epanel%2B%2Epanel%7Bmargin%2Dtop%3A5px%7D%2Epanel%2Dgroup%20%2Epanel%2Dheading%7Bborder%2Dbottom%3A0%7D%2Epanel%2Dgroup%20%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%2C%2Epanel%2Dgroup%20%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%3A1px%20solid%20%23ddd%7D%2Epanel%2Dgroup%20%2Epanel%2Dfooter%7Bborder%2Dtop%3A0%7D%2Epanel%2Dgroup%20%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%20%2Epanel%2Dbody%7Bborder%2Dbottom%3A1px%20solid%20%23ddd%7D%2Epanel%2Ddefault%7Bborder%2Dcolor%3A%23ddd%7D%2Epanel%2Ddefault%3E%2Epanel%2Dheading%7Bcolor%3A%23333%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%2Dcolor%3A%23ddd%7D%2Epanel%2Ddefault%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3A%23ddd%7D%2Epanel%2Ddefault%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23f5f5f5%3Bbackground%2Dcolor%3A%23333%7D%2Epanel%2Ddefault%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3A%23ddd%7D%2Epanel%2Dprimary%7Bborder%2Dcolor%3A%23337ab7%7D%2Epanel%2Dprimary%3E%2Epanel%2Dheading%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23337ab7%3Bborder%2Dcolor%3A%23337ab7%7D%2Epanel%2Dprimary%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3A%23337ab7%7D%2Epanel%2Dprimary%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23337ab7%3Bbackground%2Dcolor%3A%23fff%7D%2Epanel%2Dprimary%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3A%23337ab7%7D%2Epanel%2Dsuccess%7Bborder%2Dcolor%3A%23d6e9c6%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dheading%7Bcolor%3A%233c763d%3Bbackground%2Dcolor%3A%23dff0d8%3Bborder%2Dcolor%3A%23d6e9c6%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3A%23d6e9c6%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23dff0d8%3Bbackground%2Dcolor%3A%233c763d%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3A%23d6e9c6%7D%2Epanel%2Dinfo%7Bborder%2Dcolor%3A%23bce8f1%7D%2Epanel%2Dinfo%3E%2Epanel%2Dheading%7Bcolor%3A%2331708f%3Bbackground%2Dcolor%3A%23d9edf7%3Bborder%2Dcolor%3A%23bce8f1%7D%2Epanel%2Dinfo%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3A%23bce8f1%7D%2Epanel%2Dinfo%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23d9edf7%3Bbackground%2Dcolor%3A%2331708f%7D%2Epanel%2Dinfo%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3A%23bce8f1%7D%2Epanel%2Dwarning%7Bborder%2Dcolor%3A%23faebcc%7D%2Epanel%2Dwarning%3E%2Epanel%2Dheading%7Bcolor%3A%238a6d3b%3Bbackground%2Dcolor%3A%23fcf8e3%3Bborder%2Dcolor%3A%23faebcc%7D%2Epanel%2Dwarning%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3A%23faebcc%7D%2Epanel%2Dwarning%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23fcf8e3%3Bbackground%2Dcolor%3A%238a6d3b%7D%2Epanel%2Dwarning%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3A%23faebcc%7D%2Epanel%2Ddanger%7Bborder%2Dcolor%3A%23ebccd1%7D%2Epanel%2Ddanger%3E%2Epanel%2Dheading%7Bcolor%3A%23a94442%3Bbackground%2Dcolor%3A%23f2dede%3Bborder%2Dcolor%3A%23ebccd1%7D%2Epanel%2Ddanger%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3A%23ebccd1%7D%2Epanel%2Ddanger%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23f2dede%3Bbackground%2Dcolor%3A%23a94442%7D%2Epanel%2Ddanger%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3A%23ebccd1%7D%2Eembed%2Dresponsive%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bheight%3A0%3Bpadding%3A0%3Boverflow%3Ahidden%7D%2Eembed%2Dresponsive%20%2Eembed%2Dresponsive%2Ditem%2C%2Eembed%2Dresponsive%20embed%2C%2Eembed%2Dresponsive%20iframe%2C%2Eembed%2Dresponsive%20object%2C%2Eembed%2Dresponsive%20video%7Bposition%3Aabsolute%3Btop%3A0%3Bbottom%3A0%3Bleft%3A0%3Bwidth%3A100%25%3Bheight%3A100%25%3Bborder%3A0%7D%2Eembed%2Dresponsive%2D16by9%7Bpadding%2Dbottom%3A56%2E25%25%7D%2Eembed%2Dresponsive%2D4by3%7Bpadding%2Dbottom%3A75%25%7D%2Ewell%7Bmin%2Dheight%3A20px%3Bpadding%3A19px%3Bmargin%2Dbottom%3A20px%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%3A1px%20solid%20%23e3e3e3%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E05%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C%2E05%29%7D%2Ewell%20blockquote%7Bborder%2Dcolor%3A%23ddd%3Bborder%2Dcolor%3Argba%280%2C0%2C0%2C%2E15%29%7D%2Ewell%2Dlg%7Bpadding%3A24px%3Bborder%2Dradius%3A6px%7D%2Ewell%2Dsm%7Bpadding%3A9px%3Bborder%2Dradius%3A3px%7D%2Eclose%7Bfloat%3Aright%3Bfont%2Dsize%3A21px%3Bfont%2Dweight%3A700%3Bline%2Dheight%3A1%3Bcolor%3A%23000%3Btext%2Dshadow%3A0%201px%200%20%23fff%3Bfilter%3Aalpha%28opacity%3D20%29%3Bopacity%3A%2E2%7D%2Eclose%3Afocus%2C%2Eclose%3Ahover%7Bcolor%3A%23000%3Btext%2Ddecoration%3Anone%3Bcursor%3Apointer%3Bfilter%3Aalpha%28opacity%3D50%29%3Bopacity%3A%2E5%7Dbutton%2Eclose%7B%2Dwebkit%2Dappearance%3Anone%3Bpadding%3A0%3Bcursor%3Apointer%3Bbackground%3A0%200%3Bborder%3A0%7D%2Emodal%2Dopen%7Boverflow%3Ahidden%7D%2Emodal%7Bposition%3Afixed%3Btop%3A0%3Bright%3A0%3Bbottom%3A0%3Bleft%3A0%3Bz%2Dindex%3A1050%3Bdisplay%3Anone%3Boverflow%3Ahidden%3B%2Dwebkit%2Doverflow%2Dscrolling%3Atouch%3Boutline%3A0%7D%2Emodal%2Efade%20%2Emodal%2Ddialog%7B%2Dwebkit%2Dtransition%3A%2Dwebkit%2Dtransform%20%2E3s%20ease%2Dout%3B%2Do%2Dtransition%3A%2Do%2Dtransform%20%2E3s%20ease%2Dout%3Btransition%3Atransform%20%2E3s%20ease%2Dout%3B%2Dwebkit%2Dtransform%3Atranslate%280%2C%2D25%25%29%3B%2Dms%2Dtransform%3Atranslate%280%2C%2D25%25%29%3B%2Do%2Dtransform%3Atranslate%280%2C%2D25%25%29%3Btransform%3Atranslate%280%2C%2D25%25%29%7D%2Emodal%2Ein%20%2Emodal%2Ddialog%7B%2Dwebkit%2Dtransform%3Atranslate%280%2C0%29%3B%2Dms%2Dtransform%3Atranslate%280%2C0%29%3B%2Do%2Dtransform%3Atranslate%280%2C0%29%3Btransform%3Atranslate%280%2C0%29%7D%2Emodal%2Dopen%20%2Emodal%7Boverflow%2Dx%3Ahidden%3Boverflow%2Dy%3Aauto%7D%2Emodal%2Ddialog%7Bposition%3Arelative%3Bwidth%3Aauto%3Bmargin%3A10px%7D%2Emodal%2Dcontent%7Bposition%3Arelative%3Bbackground%2Dcolor%3A%23fff%3B%2Dwebkit%2Dbackground%2Dclip%3Apadding%2Dbox%3Bbackground%2Dclip%3Apadding%2Dbox%3Bborder%3A1px%20solid%20%23999%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C%2E2%29%3Bborder%2Dradius%3A6px%3Boutline%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3A0%203px%209px%20rgba%280%2C0%2C0%2C%2E5%29%3Bbox%2Dshadow%3A0%203px%209px%20rgba%280%2C0%2C0%2C%2E5%29%7D%2Emodal%2Dbackdrop%7Bposition%3Afixed%3Btop%3A0%3Bright%3A0%3Bbottom%3A0%3Bleft%3A0%3Bz%2Dindex%3A1040%3Bbackground%2Dcolor%3A%23000%7D%2Emodal%2Dbackdrop%2Efade%7Bfilter%3Aalpha%28opacity%3D0%29%3Bopacity%3A0%7D%2Emodal%2Dbackdrop%2Ein%7Bfilter%3Aalpha%28opacity%3D50%29%3Bopacity%3A%2E5%7D%2Emodal%2Dheader%7Bmin%2Dheight%3A16%2E43px%3Bpadding%3A15px%3Bborder%2Dbottom%3A1px%20solid%20%23e5e5e5%7D%2Emodal%2Dheader%20%2Eclose%7Bmargin%2Dtop%3A%2D2px%7D%2Emodal%2Dtitle%7Bmargin%3A0%3Bline%2Dheight%3A1%2E42857143%7D%2Emodal%2Dbody%7Bposition%3Arelative%3Bpadding%3A15px%7D%2Emodal%2Dfooter%7Bpadding%3A15px%3Btext%2Dalign%3Aright%3Bborder%2Dtop%3A1px%20solid%20%23e5e5e5%7D%2Emodal%2Dfooter%20%2Ebtn%2B%2Ebtn%7Bmargin%2Dbottom%3A0%3Bmargin%2Dleft%3A5px%7D%2Emodal%2Dfooter%20%2Ebtn%2Dgroup%20%2Ebtn%2B%2Ebtn%7Bmargin%2Dleft%3A%2D1px%7D%2Emodal%2Dfooter%20%2Ebtn%2Dblock%2B%2Ebtn%2Dblock%7Bmargin%2Dleft%3A0%7D%2Emodal%2Dscrollbar%2Dmeasure%7Bposition%3Aabsolute%3Btop%3A%2D9999px%3Bwidth%3A50px%3Bheight%3A50px%3Boverflow%3Ascroll%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Emodal%2Ddialog%7Bwidth%3A600px%3Bmargin%3A30px%20auto%7D%2Emodal%2Dcontent%7B%2Dwebkit%2Dbox%2Dshadow%3A0%205px%2015px%20rgba%280%2C0%2C0%2C%2E5%29%3Bbox%2Dshadow%3A0%205px%2015px%20rgba%280%2C0%2C0%2C%2E5%29%7D%2Emodal%2Dsm%7Bwidth%3A300px%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Emodal%2Dlg%7Bwidth%3A900px%7D%7D%2Etooltip%7Bposition%3Aabsolute%3Bz%2Dindex%3A1070%3Bdisplay%3Ablock%3Bfont%2Dfamily%3A%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3Bfont%2Dsize%3A12px%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%2E42857143%3Btext%2Dalign%3Aleft%3Btext%2Dalign%3Astart%3Btext%2Ddecoration%3Anone%3Btext%2Dshadow%3Anone%3Btext%2Dtransform%3Anone%3Bletter%2Dspacing%3Anormal%3Bword%2Dbreak%3Anormal%3Bword%2Dspacing%3Anormal%3Bword%2Dwrap%3Anormal%3Bwhite%2Dspace%3Anormal%3Bfilter%3Aalpha%28opacity%3D0%29%3Bopacity%3A0%3Bline%2Dbreak%3Aauto%7D%2Etooltip%2Ein%7Bfilter%3Aalpha%28opacity%3D90%29%3Bopacity%3A%2E9%7D%2Etooltip%2Etop%7Bpadding%3A5px%200%3Bmargin%2Dtop%3A%2D3px%7D%2Etooltip%2Eright%7Bpadding%3A0%205px%3Bmargin%2Dleft%3A3px%7D%2Etooltip%2Ebottom%7Bpadding%3A5px%200%3Bmargin%2Dtop%3A3px%7D%2Etooltip%2Eleft%7Bpadding%3A0%205px%3Bmargin%2Dleft%3A%2D3px%7D%2Etooltip%2Dinner%7Bmax%2Dwidth%3A200px%3Bpadding%3A3px%208px%3Bcolor%3A%23fff%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23000%3Bborder%2Dradius%3A4px%7D%2Etooltip%2Darrow%7Bposition%3Aabsolute%3Bwidth%3A0%3Bheight%3A0%3Bborder%2Dcolor%3Atransparent%3Bborder%2Dstyle%3Asolid%7D%2Etooltip%2Etop%20%2Etooltip%2Darrow%7Bbottom%3A0%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dtop%2Dcolor%3A%23000%7D%2Etooltip%2Etop%2Dleft%20%2Etooltip%2Darrow%7Bright%3A5px%3Bbottom%3A0%3Bmargin%2Dbottom%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dtop%2Dcolor%3A%23000%7D%2Etooltip%2Etop%2Dright%20%2Etooltip%2Darrow%7Bbottom%3A0%3Bleft%3A5px%3Bmargin%2Dbottom%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dtop%2Dcolor%3A%23000%7D%2Etooltip%2Eright%20%2Etooltip%2Darrow%7Btop%3A50%25%3Bleft%3A0%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%205px%200%3Bborder%2Dright%2Dcolor%3A%23000%7D%2Etooltip%2Eleft%20%2Etooltip%2Darrow%7Btop%3A50%25%3Bright%3A0%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A5px%200%205px%205px%3Bborder%2Dleft%2Dcolor%3A%23000%7D%2Etooltip%2Ebottom%20%2Etooltip%2Darrow%7Btop%3A0%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D5px%3Bborder%2Dwidth%3A0%205px%205px%3Bborder%2Dbottom%2Dcolor%3A%23000%7D%2Etooltip%2Ebottom%2Dleft%20%2Etooltip%2Darrow%7Btop%3A0%3Bright%3A5px%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A0%205px%205px%3Bborder%2Dbottom%2Dcolor%3A%23000%7D%2Etooltip%2Ebottom%2Dright%20%2Etooltip%2Darrow%7Btop%3A0%3Bleft%3A5px%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A0%205px%205px%3Bborder%2Dbottom%2Dcolor%3A%23000%7D%2Epopover%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bz%2Dindex%3A1060%3Bdisplay%3Anone%3Bmax%2Dwidth%3A276px%3Bpadding%3A1px%3Bfont%2Dfamily%3A%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3Bfont%2Dsize%3A14px%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%2E42857143%3Btext%2Dalign%3Aleft%3Btext%2Dalign%3Astart%3Btext%2Ddecoration%3Anone%3Btext%2Dshadow%3Anone%3Btext%2Dtransform%3Anone%3Bletter%2Dspacing%3Anormal%3Bword%2Dbreak%3Anormal%3Bword%2Dspacing%3Anormal%3Bword%2Dwrap%3Anormal%3Bwhite%2Dspace%3Anormal%3Bbackground%2Dcolor%3A%23fff%3B%2Dwebkit%2Dbackground%2Dclip%3Apadding%2Dbox%3Bbackground%2Dclip%3Apadding%2Dbox%3Bborder%3A1px%20solid%20%23ccc%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C%2E2%29%3Bborder%2Dradius%3A6px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%205px%2010px%20rgba%280%2C0%2C0%2C%2E2%29%3Bbox%2Dshadow%3A0%205px%2010px%20rgba%280%2C0%2C0%2C%2E2%29%3Bline%2Dbreak%3Aauto%7D%2Epopover%2Etop%7Bmargin%2Dtop%3A%2D10px%7D%2Epopover%2Eright%7Bmargin%2Dleft%3A10px%7D%2Epopover%2Ebottom%7Bmargin%2Dtop%3A10px%7D%2Epopover%2Eleft%7Bmargin%2Dleft%3A%2D10px%7D%2Epopover%2Dtitle%7Bpadding%3A8px%2014px%3Bmargin%3A0%3Bfont%2Dsize%3A14px%3Bbackground%2Dcolor%3A%23f7f7f7%3Bborder%2Dbottom%3A1px%20solid%20%23ebebeb%3Bborder%2Dradius%3A5px%205px%200%200%7D%2Epopover%2Dcontent%7Bpadding%3A9px%2014px%7D%2Epopover%3E%2Earrow%2C%2Epopover%3E%2Earrow%3Aafter%7Bposition%3Aabsolute%3Bdisplay%3Ablock%3Bwidth%3A0%3Bheight%3A0%3Bborder%2Dcolor%3Atransparent%3Bborder%2Dstyle%3Asolid%7D%2Epopover%3E%2Earrow%7Bborder%2Dwidth%3A11px%7D%2Epopover%3E%2Earrow%3Aafter%7Bcontent%3A%22%22%3Bborder%2Dwidth%3A10px%7D%2Epopover%2Etop%3E%2Earrow%7Bbottom%3A%2D11px%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D11px%3Bborder%2Dtop%2Dcolor%3A%23999%3Bborder%2Dtop%2Dcolor%3Argba%280%2C0%2C0%2C%2E25%29%3Bborder%2Dbottom%2Dwidth%3A0%7D%2Epopover%2Etop%3E%2Earrow%3Aafter%7Bbottom%3A1px%3Bmargin%2Dleft%3A%2D10px%3Bcontent%3A%22%20%22%3Bborder%2Dtop%2Dcolor%3A%23fff%3Bborder%2Dbottom%2Dwidth%3A0%7D%2Epopover%2Eright%3E%2Earrow%7Btop%3A50%25%3Bleft%3A%2D11px%3Bmargin%2Dtop%3A%2D11px%3Bborder%2Dright%2Dcolor%3A%23999%3Bborder%2Dright%2Dcolor%3Argba%280%2C0%2C0%2C%2E25%29%3Bborder%2Dleft%2Dwidth%3A0%7D%2Epopover%2Eright%3E%2Earrow%3Aafter%7Bbottom%3A%2D10px%3Bleft%3A1px%3Bcontent%3A%22%20%22%3Bborder%2Dright%2Dcolor%3A%23fff%3Bborder%2Dleft%2Dwidth%3A0%7D%2Epopover%2Ebottom%3E%2Earrow%7Btop%3A%2D11px%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D11px%3Bborder%2Dtop%2Dwidth%3A0%3Bborder%2Dbottom%2Dcolor%3A%23999%3Bborder%2Dbottom%2Dcolor%3Argba%280%2C0%2C0%2C%2E25%29%7D%2Epopover%2Ebottom%3E%2Earrow%3Aafter%7Btop%3A1px%3Bmargin%2Dleft%3A%2D10px%3Bcontent%3A%22%20%22%3Bborder%2Dtop%2Dwidth%3A0%3Bborder%2Dbottom%2Dcolor%3A%23fff%7D%2Epopover%2Eleft%3E%2Earrow%7Btop%3A50%25%3Bright%3A%2D11px%3Bmargin%2Dtop%3A%2D11px%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dleft%2Dcolor%3A%23999%3Bborder%2Dleft%2Dcolor%3Argba%280%2C0%2C0%2C%2E25%29%7D%2Epopover%2Eleft%3E%2Earrow%3Aafter%7Bright%3A1px%3Bbottom%3A%2D10px%3Bcontent%3A%22%20%22%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dleft%2Dcolor%3A%23fff%7D%2Ecarousel%7Bposition%3Arelative%7D%2Ecarousel%2Dinner%7Bposition%3Arelative%3Bwidth%3A100%25%3Boverflow%3Ahidden%7D%2Ecarousel%2Dinner%3E%2Eitem%7Bposition%3Arelative%3Bdisplay%3Anone%3B%2Dwebkit%2Dtransition%3A%2E6s%20ease%2Din%2Dout%20left%3B%2Do%2Dtransition%3A%2E6s%20ease%2Din%2Dout%20left%3Btransition%3A%2E6s%20ease%2Din%2Dout%20left%7D%2Ecarousel%2Dinner%3E%2Eitem%3Ea%3Eimg%2C%2Ecarousel%2Dinner%3E%2Eitem%3Eimg%7Bline%2Dheight%3A1%7D%40media%20all%20and%20%28transform%2D3d%29%2C%28%2Dwebkit%2Dtransform%2D3d%29%7B%2Ecarousel%2Dinner%3E%2Eitem%7B%2Dwebkit%2Dtransition%3A%2Dwebkit%2Dtransform%20%2E6s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3A%2Do%2Dtransform%20%2E6s%20ease%2Din%2Dout%3Btransition%3Atransform%20%2E6s%20ease%2Din%2Dout%3B%2Dwebkit%2Dbackface%2Dvisibility%3Ahidden%3Bbackface%2Dvisibility%3Ahidden%3B%2Dwebkit%2Dperspective%3A1000px%3Bperspective%3A1000px%7D%2Ecarousel%2Dinner%3E%2Eitem%2Eactive%2Eright%2C%2Ecarousel%2Dinner%3E%2Eitem%2Enext%7Bleft%3A0%3B%2Dwebkit%2Dtransform%3Atranslate3d%28100%25%2C0%2C0%29%3Btransform%3Atranslate3d%28100%25%2C0%2C0%29%7D%2Ecarousel%2Dinner%3E%2Eitem%2Eactive%2Eleft%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eprev%7Bleft%3A0%3B%2Dwebkit%2Dtransform%3Atranslate3d%28%2D100%25%2C0%2C0%29%3Btransform%3Atranslate3d%28%2D100%25%2C0%2C0%29%7D%2Ecarousel%2Dinner%3E%2Eitem%2Eactive%2C%2Ecarousel%2Dinner%3E%2Eitem%2Enext%2Eleft%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eprev%2Eright%7Bleft%3A0%3B%2Dwebkit%2Dtransform%3Atranslate3d%280%2C0%2C0%29%3Btransform%3Atranslate3d%280%2C0%2C0%29%7D%7D%2Ecarousel%2Dinner%3E%2Eactive%2C%2Ecarousel%2Dinner%3E%2Enext%2C%2Ecarousel%2Dinner%3E%2Eprev%7Bdisplay%3Ablock%7D%2Ecarousel%2Dinner%3E%2Eactive%7Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Enext%2C%2Ecarousel%2Dinner%3E%2Eprev%7Bposition%3Aabsolute%3Btop%3A0%3Bwidth%3A100%25%7D%2Ecarousel%2Dinner%3E%2Enext%7Bleft%3A100%25%7D%2Ecarousel%2Dinner%3E%2Eprev%7Bleft%3A%2D100%25%7D%2Ecarousel%2Dinner%3E%2Enext%2Eleft%2C%2Ecarousel%2Dinner%3E%2Eprev%2Eright%7Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Eactive%2Eleft%7Bleft%3A%2D100%25%7D%2Ecarousel%2Dinner%3E%2Eactive%2Eright%7Bleft%3A100%25%7D%2Ecarousel%2Dcontrol%7Bposition%3Aabsolute%3Btop%3A0%3Bbottom%3A0%3Bleft%3A0%3Bwidth%3A15%25%3Bfont%2Dsize%3A20px%3Bcolor%3A%23fff%3Btext%2Dalign%3Acenter%3Btext%2Dshadow%3A0%201px%202px%20rgba%280%2C0%2C0%2C%2E6%29%3Bfilter%3Aalpha%28opacity%3D50%29%3Bopacity%3A%2E5%7D%2Ecarousel%2Dcontrol%2Eleft%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28left%2Crgba%280%2C0%2C0%2C%2E5%29%200%2Crgba%280%2C0%2C0%2C%2E0001%29%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28left%2Crgba%280%2C0%2C0%2C%2E5%29%200%2Crgba%280%2C0%2C0%2C%2E0001%29%20100%25%29%3Bbackground%2Dimage%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cright%20top%2Cfrom%28rgba%280%2C0%2C0%2C%2E5%29%29%2Cto%28rgba%280%2C0%2C0%2C%2E0001%29%29%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20right%2Crgba%280%2C0%2C0%2C%2E5%29%200%2Crgba%280%2C0%2C0%2C%2E0001%29%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28startColorstr%3D%27%2380000000%27%2C%20endColorstr%3D%27%2300000000%27%2C%20GradientType%3D1%29%3Bbackground%2Drepeat%3Arepeat%2Dx%7D%2Ecarousel%2Dcontrol%2Eright%7Bright%3A0%3Bleft%3Aauto%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28left%2Crgba%280%2C0%2C0%2C%2E0001%29%200%2Crgba%280%2C0%2C0%2C%2E5%29%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28left%2Crgba%280%2C0%2C0%2C%2E0001%29%200%2Crgba%280%2C0%2C0%2C%2E5%29%20100%25%29%3Bbackground%2Dimage%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cright%20top%2Cfrom%28rgba%280%2C0%2C0%2C%2E0001%29%29%2Cto%28rgba%280%2C0%2C0%2C%2E5%29%29%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20right%2Crgba%280%2C0%2C0%2C%2E0001%29%200%2Crgba%280%2C0%2C0%2C%2E5%29%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28startColorstr%3D%27%2300000000%27%2C%20endColorstr%3D%27%2380000000%27%2C%20GradientType%3D1%29%3Bbackground%2Drepeat%3Arepeat%2Dx%7D%2Ecarousel%2Dcontrol%3Afocus%2C%2Ecarousel%2Dcontrol%3Ahover%7Bcolor%3A%23fff%3Btext%2Ddecoration%3Anone%3Bfilter%3Aalpha%28opacity%3D90%29%3Boutline%3A0%3Bopacity%3A%2E9%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%7Bposition%3Aabsolute%3Btop%3A50%25%3Bz%2Dindex%3A5%3Bdisplay%3Ainline%2Dblock%3Bmargin%2Dtop%3A%2D10px%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%7Bleft%3A50%25%3Bmargin%2Dleft%3A%2D10px%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%7Bright%3A50%25%3Bmargin%2Dright%3A%2D10px%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%7Bwidth%3A20px%3Bheight%3A20px%3Bfont%2Dfamily%3Aserif%3Bline%2Dheight%3A1%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%3Abefore%7Bcontent%3A%27%5C2039%27%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%3Abefore%7Bcontent%3A%27%5C203a%27%7D%2Ecarousel%2Dindicators%7Bposition%3Aabsolute%3Bbottom%3A10px%3Bleft%3A50%25%3Bz%2Dindex%3A15%3Bwidth%3A60%25%3Bpadding%2Dleft%3A0%3Bmargin%2Dleft%3A%2D30%25%3Btext%2Dalign%3Acenter%3Blist%2Dstyle%3Anone%7D%2Ecarousel%2Dindicators%20li%7Bdisplay%3Ainline%2Dblock%3Bwidth%3A10px%3Bheight%3A10px%3Bmargin%3A1px%3Btext%2Dindent%3A%2D999px%3Bcursor%3Apointer%3Bbackground%2Dcolor%3A%23000%5C9%3Bbackground%2Dcolor%3Argba%280%2C0%2C0%2C0%29%3Bborder%3A1px%20solid%20%23fff%3Bborder%2Dradius%3A10px%7D%2Ecarousel%2Dindicators%20%2Eactive%7Bwidth%3A12px%3Bheight%3A12px%3Bmargin%3A0%3Bbackground%2Dcolor%3A%23fff%7D%2Ecarousel%2Dcaption%7Bposition%3Aabsolute%3Bright%3A15%25%3Bbottom%3A20px%3Bleft%3A15%25%3Bz%2Dindex%3A10%3Bpadding%2Dtop%3A20px%3Bpadding%2Dbottom%3A20px%3Bcolor%3A%23fff%3Btext%2Dalign%3Acenter%3Btext%2Dshadow%3A0%201px%202px%20rgba%280%2C0%2C0%2C%2E6%29%7D%2Ecarousel%2Dcaption%20%2Ebtn%7Btext%2Dshadow%3Anone%7D%40media%20screen%20and%20%28min%2Dwidth%3A768px%29%7B%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%7Bwidth%3A30px%3Bheight%3A30px%3Bmargin%2Dtop%3A%2D15px%3Bfont%2Dsize%3A30px%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%7Bmargin%2Dleft%3A%2D15px%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%7Bmargin%2Dright%3A%2D15px%7D%2Ecarousel%2Dcaption%7Bright%3A20%25%3Bleft%3A20%25%3Bpadding%2Dbottom%3A30px%7D%2Ecarousel%2Dindicators%7Bbottom%3A20px%7D%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Aafter%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Abefore%2C%2Ebtn%2Dtoolbar%3Aafter%2C%2Ebtn%2Dtoolbar%3Abefore%2C%2Eclearfix%3Aafter%2C%2Eclearfix%3Abefore%2C%2Econtainer%2Dfluid%3Aafter%2C%2Econtainer%2Dfluid%3Abefore%2C%2Econtainer%3Aafter%2C%2Econtainer%3Abefore%2C%2Edl%2Dhorizontal%20dd%3Aafter%2C%2Edl%2Dhorizontal%20dd%3Abefore%2C%2Eform%2Dhorizontal%20%2Eform%2Dgroup%3Aafter%2C%2Eform%2Dhorizontal%20%2Eform%2Dgroup%3Abefore%2C%2Emodal%2Dfooter%3Aafter%2C%2Emodal%2Dfooter%3Abefore%2C%2Enav%3Aafter%2C%2Enav%3Abefore%2C%2Enavbar%2Dcollapse%3Aafter%2C%2Enavbar%2Dcollapse%3Abefore%2C%2Enavbar%2Dheader%3Aafter%2C%2Enavbar%2Dheader%3Abefore%2C%2Enavbar%3Aafter%2C%2Enavbar%3Abefore%2C%2Epager%3Aafter%2C%2Epager%3Abefore%2C%2Epanel%2Dbody%3Aafter%2C%2Epanel%2Dbody%3Abefore%2C%2Erow%3Aafter%2C%2Erow%3Abefore%7Bdisplay%3Atable%3Bcontent%3A%22%20%22%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Aafter%2C%2Ebtn%2Dtoolbar%3Aafter%2C%2Eclearfix%3Aafter%2C%2Econtainer%2Dfluid%3Aafter%2C%2Econtainer%3Aafter%2C%2Edl%2Dhorizontal%20dd%3Aafter%2C%2Eform%2Dhorizontal%20%2Eform%2Dgroup%3Aafter%2C%2Emodal%2Dfooter%3Aafter%2C%2Enav%3Aafter%2C%2Enavbar%2Dcollapse%3Aafter%2C%2Enavbar%2Dheader%3Aafter%2C%2Enavbar%3Aafter%2C%2Epager%3Aafter%2C%2Epanel%2Dbody%3Aafter%2C%2Erow%3Aafter%7Bclear%3Aboth%7D%2Ecenter%2Dblock%7Bdisplay%3Ablock%3Bmargin%2Dright%3Aauto%3Bmargin%2Dleft%3Aauto%7D%2Epull%2Dright%7Bfloat%3Aright%21important%7D%2Epull%2Dleft%7Bfloat%3Aleft%21important%7D%2Ehide%7Bdisplay%3Anone%21important%7D%2Eshow%7Bdisplay%3Ablock%21important%7D%2Einvisible%7Bvisibility%3Ahidden%7D%2Etext%2Dhide%7Bfont%3A0%2F0%20a%3Bcolor%3Atransparent%3Btext%2Dshadow%3Anone%3Bbackground%2Dcolor%3Atransparent%3Bborder%3A0%7D%2Ehidden%7Bdisplay%3Anone%21important%7D%2Eaffix%7Bposition%3Afixed%7D%40%2Dms%2Dviewport%7Bwidth%3Adevice%2Dwidth%7D%2Evisible%2Dlg%2C%2Evisible%2Dmd%2C%2Evisible%2Dsm%2C%2Evisible%2Dxs%7Bdisplay%3Anone%21important%7D%2Evisible%2Dlg%2Dblock%2C%2Evisible%2Dlg%2Dinline%2C%2Evisible%2Dlg%2Dinline%2Dblock%2C%2Evisible%2Dmd%2Dblock%2C%2Evisible%2Dmd%2Dinline%2C%2Evisible%2Dmd%2Dinline%2Dblock%2C%2Evisible%2Dsm%2Dblock%2C%2Evisible%2Dsm%2Dinline%2C%2Evisible%2Dsm%2Dinline%2Dblock%2C%2Evisible%2Dxs%2Dblock%2C%2Evisible%2Dxs%2Dinline%2C%2Evisible%2Dxs%2Dinline%2Dblock%7Bdisplay%3Anone%21important%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%7Bdisplay%3Ablock%21important%7Dtable%2Evisible%2Dxs%7Bdisplay%3Atable%21important%7Dtr%2Evisible%2Dxs%7Bdisplay%3Atable%2Drow%21important%7Dtd%2Evisible%2Dxs%2Cth%2Evisible%2Dxs%7Bdisplay%3Atable%2Dcell%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%2Dblock%7Bdisplay%3Ablock%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%2Dinline%7Bdisplay%3Ainline%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%7Bdisplay%3Ablock%21important%7Dtable%2Evisible%2Dsm%7Bdisplay%3Atable%21important%7Dtr%2Evisible%2Dsm%7Bdisplay%3Atable%2Drow%21important%7Dtd%2Evisible%2Dsm%2Cth%2Evisible%2Dsm%7Bdisplay%3Atable%2Dcell%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%2Dblock%7Bdisplay%3Ablock%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%2Dinline%7Bdisplay%3Ainline%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%7Bdisplay%3Ablock%21important%7Dtable%2Evisible%2Dmd%7Bdisplay%3Atable%21important%7Dtr%2Evisible%2Dmd%7Bdisplay%3Atable%2Drow%21important%7Dtd%2Evisible%2Dmd%2Cth%2Evisible%2Dmd%7Bdisplay%3Atable%2Dcell%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%2Dblock%7Bdisplay%3Ablock%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%2Dinline%7Bdisplay%3Ainline%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%7Bdisplay%3Ablock%21important%7Dtable%2Evisible%2Dlg%7Bdisplay%3Atable%21important%7Dtr%2Evisible%2Dlg%7Bdisplay%3Atable%2Drow%21important%7Dtd%2Evisible%2Dlg%2Cth%2Evisible%2Dlg%7Bdisplay%3Atable%2Dcell%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%2Dblock%7Bdisplay%3Ablock%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%2Dinline%7Bdisplay%3Ainline%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Ehidden%2Dxs%7Bdisplay%3Anone%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Ehidden%2Dsm%7Bdisplay%3Anone%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Ehidden%2Dmd%7Bdisplay%3Anone%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Ehidden%2Dlg%7Bdisplay%3Anone%21important%7D%7D%2Evisible%2Dprint%7Bdisplay%3Anone%21important%7D%40media%20print%7B%2Evisible%2Dprint%7Bdisplay%3Ablock%21important%7Dtable%2Evisible%2Dprint%7Bdisplay%3Atable%21important%7Dtr%2Evisible%2Dprint%7Bdisplay%3Atable%2Drow%21important%7Dtd%2Evisible%2Dprint%2Cth%2Evisible%2Dprint%7Bdisplay%3Atable%2Dcell%21important%7D%7D%2Evisible%2Dprint%2Dblock%7Bdisplay%3Anone%21important%7D%40media%20print%7B%2Evisible%2Dprint%2Dblock%7Bdisplay%3Ablock%21important%7D%7D%2Evisible%2Dprint%2Dinline%7Bdisplay%3Anone%21important%7D%40media%20print%7B%2Evisible%2Dprint%2Dinline%7Bdisplay%3Ainline%21important%7D%7D%2Evisible%2Dprint%2Dinline%2Dblock%7Bdisplay%3Anone%21important%7D%40media%20print%7B%2Evisible%2Dprint%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%21important%7D%7D%40media%20print%7B%2Ehidden%2Dprint%7Bdisplay%3Anone%21important%7D%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,LyohCiAqIEJvb3RzdHJhcCB2My4zLjUgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE1IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiAqLwppZigidW5kZWZpbmVkIj09dHlwZW9mIGpRdWVyeSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5Iik7K2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1hLmZuLmpxdWVyeS5zcGxpdCgiICIpWzBdLnNwbGl0KCIuIik7aWYoYlswXTwyJiZiWzFdPDl8fDE9PWJbMF0mJjk9PWJbMV0mJmJbMl08MSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5IHZlcnNpb24gMS45LjEgb3IgaGlnaGVyIil9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYm9vdHN0cmFwIiksYj17V2Via2l0VHJhbnNpdGlvbjoid2Via2l0VHJhbnNpdGlvbkVuZCIsTW96VHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCIsT1RyYW5zaXRpb246Im9UcmFuc2l0aW9uRW5kIG90cmFuc2l0aW9uZW5kIix0cmFuc2l0aW9uOiJ0cmFuc2l0aW9uZW5kIn07Zm9yKHZhciBjIGluIGIpaWYodm9pZCAwIT09YS5zdHlsZVtjXSlyZXR1cm57ZW5kOmJbY119O3JldHVybiExfWEuZm4uZW11bGF0ZVRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24oYil7dmFyIGM9ITEsZD10aGlzO2EodGhpcykub25lKCJic1RyYW5zaXRpb25FbmQiLGZ1bmN0aW9uKCl7Yz0hMH0pO3ZhciBlPWZ1bmN0aW9uKCl7Y3x8YShkKS50cmlnZ2VyKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCl9O3JldHVybiBzZXRUaW1lb3V0KGUsYiksdGhpc30sYShmdW5jdGlvbigpe2Euc3VwcG9ydC50cmFuc2l0aW9uPWIoKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGEuZXZlbnQuc3BlY2lhbC5ic1RyYW5zaXRpb25FbmQ9e2JpbmRUeXBlOmEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxkZWxlZ2F0ZVR5cGU6YS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGhhbmRsZTpmdW5jdGlvbihiKXtyZXR1cm4gYShiLnRhcmdldCkuaXModGhpcyk/Yi5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGU9Yy5kYXRhKCJicy5hbGVydCIpO2V8fGMuZGF0YSgiYnMuYWxlcnQiLGU9bmV3IGQodGhpcykpLCJzdHJpbmciPT10eXBlb2YgYiYmZVtiXS5jYWxsKGMpfSl9dmFyIGM9J1tkYXRhLWRpc21pc3M9ImFsZXJ0Il0nLGQ9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2siLGMsdGhpcy5jbG9zZSl9O2QuVkVSU0lPTj0iMy4zLjUiLGQuVFJBTlNJVElPTl9EVVJBVElPTj0xNTAsZC5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYygpe2cuZGV0YWNoKCkudHJpZ2dlcigiY2xvc2VkLmJzLmFsZXJ0IikucmVtb3ZlKCl9dmFyIGU9YSh0aGlzKSxmPWUuYXR0cigiZGF0YS10YXJnZXQiKTtmfHwoZj1lLmF0dHIoImhyZWYiKSxmPWYmJmYucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGc9YShmKTtiJiZiLnByZXZlbnREZWZhdWx0KCksZy5sZW5ndGh8fChnPWUuY2xvc2VzdCgiLmFsZXJ0IikpLGcudHJpZ2dlcihiPWEuRXZlbnQoImNsb3NlLmJzLmFsZXJ0IikpLGIuaXNEZWZhdWx0UHJldmVudGVkKCl8fChnLnJlbW92ZUNsYXNzKCJpbiIpLGEuc3VwcG9ydC50cmFuc2l0aW9uJiZnLmhhc0NsYXNzKCJmYWRlIik/Zy5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYykuZW11bGF0ZVRyYW5zaXRpb25FbmQoZC5UUkFOU0lUSU9OX0RVUkFUSU9OKTpjKCkpfTt2YXIgZT1hLmZuLmFsZXJ0O2EuZm4uYWxlcnQ9YixhLmZuLmFsZXJ0LkNvbnN0cnVjdG9yPWQsYS5mbi5hbGVydC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYWxlcnQ9ZSx0aGlzfSxhKGRvY3VtZW50KS5vbigiY2xpY2suYnMuYWxlcnQuZGF0YS1hcGkiLGMsZC5wcm90b3R5cGUuY2xvc2UpfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMuYnV0dG9uIiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5idXR0b24iLGU9bmV3IGModGhpcyxmKSksInRvZ2dsZSI9PWI/ZS50b2dnbGUoKTpiJiZlLnNldFN0YXRlKGIpfSl9dmFyIGM9ZnVuY3Rpb24oYixkKXt0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy5pc0xvYWRpbmc9ITF9O2MuVkVSU0lPTj0iMy4zLjUiLGMuREVGQVVMVFM9e2xvYWRpbmdUZXh0OiJsb2FkaW5nLi4uIn0sYy5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oYil7dmFyIGM9ImRpc2FibGVkIixkPXRoaXMuJGVsZW1lbnQsZT1kLmlzKCJpbnB1dCIpPyJ2YWwiOiJodG1sIixmPWQuZGF0YSgpO2IrPSJUZXh0IixudWxsPT1mLnJlc2V0VGV4dCYmZC5kYXRhKCJyZXNldFRleHQiLGRbZV0oKSksc2V0VGltZW91dChhLnByb3h5KGZ1bmN0aW9uKCl7ZFtlXShudWxsPT1mW2JdP3RoaXMub3B0aW9uc1tiXTpmW2JdKSwibG9hZGluZ1RleHQiPT1iPyh0aGlzLmlzTG9hZGluZz0hMCxkLmFkZENsYXNzKGMpLmF0dHIoYyxjKSk6dGhpcy5pc0xvYWRpbmcmJih0aGlzLmlzTG9hZGluZz0hMSxkLnJlbW92ZUNsYXNzKGMpLnJlbW92ZUF0dHIoYykpfSx0aGlzKSwwKX0sYy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKCl7dmFyIGE9ITAsYj10aGlzLiRlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdJyk7aWYoYi5sZW5ndGgpe3ZhciBjPXRoaXMuJGVsZW1lbnQuZmluZCgiaW5wdXQiKTsicmFkaW8iPT1jLnByb3AoInR5cGUiKT8oYy5wcm9wKCJjaGVja2VkIikmJihhPSExKSxiLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksdGhpcy4kZWxlbWVudC5hZGRDbGFzcygiYWN0aXZlIikpOiJjaGVja2JveCI9PWMucHJvcCgidHlwZSIpJiYoYy5wcm9wKCJjaGVja2VkIikhPT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSYmKGE9ITEpLHRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpKSxjLnByb3AoImNoZWNrZWQiLHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImFjdGl2ZSIpKSxhJiZjLnRyaWdnZXIoImNoYW5nZSIpfWVsc2UgdGhpcy4kZWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLCF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSksdGhpcy4kZWxlbWVudC50b2dnbGVDbGFzcygiYWN0aXZlIil9O3ZhciBkPWEuZm4uYnV0dG9uO2EuZm4uYnV0dG9uPWIsYS5mbi5idXR0b24uQ29uc3RydWN0b3I9YyxhLmZuLmJ1dHRvbi5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYnV0dG9uPWQsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmJ1dHRvbi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZV49ImJ1dHRvbiJdJyxmdW5jdGlvbihjKXt2YXIgZD1hKGMudGFyZ2V0KTtkLmhhc0NsYXNzKCJidG4iKXx8KGQ9ZC5jbG9zZXN0KCIuYnRuIikpLGIuY2FsbChkLCJ0b2dnbGUiKSxhKGMudGFyZ2V0KS5pcygnaW5wdXRbdHlwZT0icmFkaW8iXScpfHxhKGMudGFyZ2V0KS5pcygnaW5wdXRbdHlwZT0iY2hlY2tib3giXScpfHxjLnByZXZlbnREZWZhdWx0KCl9KS5vbigiZm9jdXMuYnMuYnV0dG9uLmRhdGEtYXBpIGJsdXIuYnMuYnV0dG9uLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlXj0iYnV0dG9uIl0nLGZ1bmN0aW9uKGIpe2EoYi50YXJnZXQpLmNsb3Nlc3QoIi5idG4iKS50b2dnbGVDbGFzcygiZm9jdXMiLC9eZm9jdXMoaW4pPyQvLnRlc3QoYi50eXBlKSl9KX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmNhcm91c2VsIiksZj1hLmV4dGVuZCh7fSxjLkRFRkFVTFRTLGQuZGF0YSgpLCJvYmplY3QiPT10eXBlb2YgYiYmYiksZz0ic3RyaW5nIj09dHlwZW9mIGI/YjpmLnNsaWRlO2V8fGQuZGF0YSgiYnMuY2Fyb3VzZWwiLGU9bmV3IGModGhpcyxmKSksIm51bWJlciI9PXR5cGVvZiBiP2UudG8oYik6Zz9lW2ddKCk6Zi5pbnRlcnZhbCYmZS5wYXVzZSgpLmN5Y2xlKCl9KX12YXIgYz1mdW5jdGlvbihiLGMpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLiRpbmRpY2F0b3JzPXRoaXMuJGVsZW1lbnQuZmluZCgiLmNhcm91c2VsLWluZGljYXRvcnMiKSx0aGlzLm9wdGlvbnM9Yyx0aGlzLnBhdXNlZD1udWxsLHRoaXMuc2xpZGluZz1udWxsLHRoaXMuaW50ZXJ2YWw9bnVsbCx0aGlzLiRhY3RpdmU9bnVsbCx0aGlzLiRpdGVtcz1udWxsLHRoaXMub3B0aW9ucy5rZXlib2FyZCYmdGhpcy4kZWxlbWVudC5vbigia2V5ZG93bi5icy5jYXJvdXNlbCIsYS5wcm94eSh0aGlzLmtleWRvd24sdGhpcykpLCJob3ZlciI9PXRoaXMub3B0aW9ucy5wYXVzZSYmISgib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkmJnRoaXMuJGVsZW1lbnQub24oIm1vdXNlZW50ZXIuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5wYXVzZSx0aGlzKSkub24oIm1vdXNlbGVhdmUuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5jeWNsZSx0aGlzKSl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuVFJBTlNJVElPTl9EVVJBVElPTj02MDAsYy5ERUZBVUxUUz17aW50ZXJ2YWw6NWUzLHBhdXNlOiJob3ZlciIsd3JhcDohMCxrZXlib2FyZDohMH0sYy5wcm90b3R5cGUua2V5ZG93bj1mdW5jdGlvbihhKXtpZighL2lucHV0fHRleHRhcmVhL2kudGVzdChhLnRhcmdldC50YWdOYW1lKSl7c3dpdGNoKGEud2hpY2gpe2Nhc2UgMzc6dGhpcy5wcmV2KCk7YnJlYWs7Y2FzZSAzOTp0aGlzLm5leHQoKTticmVhaztkZWZhdWx0OnJldHVybn1hLnByZXZlbnREZWZhdWx0KCl9fSxjLnByb3RvdHlwZS5jeWNsZT1mdW5jdGlvbihiKXtyZXR1cm4gYnx8KHRoaXMucGF1c2VkPSExKSx0aGlzLmludGVydmFsJiZjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpLHRoaXMub3B0aW9ucy5pbnRlcnZhbCYmIXRoaXMucGF1c2VkJiYodGhpcy5pbnRlcnZhbD1zZXRJbnRlcnZhbChhLnByb3h5KHRoaXMubmV4dCx0aGlzKSx0aGlzLm9wdGlvbnMuaW50ZXJ2YWwpKSx0aGlzfSxjLnByb3RvdHlwZS5nZXRJdGVtSW5kZXg9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuJGl0ZW1zPWEucGFyZW50KCkuY2hpbGRyZW4oIi5pdGVtIiksdGhpcy4kaXRlbXMuaW5kZXgoYXx8dGhpcy4kYWN0aXZlKX0sYy5wcm90b3R5cGUuZ2V0SXRlbUZvckRpcmVjdGlvbj1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZ2V0SXRlbUluZGV4KGIpLGQ9InByZXYiPT1hJiYwPT09Y3x8Im5leHQiPT1hJiZjPT10aGlzLiRpdGVtcy5sZW5ndGgtMTtpZihkJiYhdGhpcy5vcHRpb25zLndyYXApcmV0dXJuIGI7dmFyIGU9InByZXYiPT1hPy0xOjEsZj0oYytlKSV0aGlzLiRpdGVtcy5sZW5ndGg7cmV0dXJuIHRoaXMuJGl0ZW1zLmVxKGYpfSxjLnByb3RvdHlwZS50bz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9dGhpcy5nZXRJdGVtSW5kZXgodGhpcy4kYWN0aXZlPXRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIikpO3JldHVybiBhPnRoaXMuJGl0ZW1zLmxlbmd0aC0xfHwwPmE/dm9pZCAwOnRoaXMuc2xpZGluZz90aGlzLiRlbGVtZW50Lm9uZSgic2xpZC5icy5jYXJvdXNlbCIsZnVuY3Rpb24oKXtiLnRvKGEpfSk6Yz09YT90aGlzLnBhdXNlKCkuY3ljbGUoKTp0aGlzLnNsaWRlKGE+Yz8ibmV4dCI6InByZXYiLHRoaXMuJGl0ZW1zLmVxKGEpKX0sYy5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oYil7cmV0dXJuIGJ8fCh0aGlzLnBhdXNlZD0hMCksdGhpcy4kZWxlbWVudC5maW5kKCIubmV4dCwgLnByZXYiKS5sZW5ndGgmJmEuc3VwcG9ydC50cmFuc2l0aW9uJiYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCksdGhpcy5jeWNsZSghMCkpLHRoaXMuaW50ZXJ2YWw9Y2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKSx0aGlzfSxjLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpZGluZz92b2lkIDA6dGhpcy5zbGlkZSgibmV4dCIpfSxjLnByb3RvdHlwZS5wcmV2PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpZGluZz92b2lkIDA6dGhpcy5zbGlkZSgicHJldiIpfSxjLnByb3RvdHlwZS5zbGlkZT1mdW5jdGlvbihiLGQpe3ZhciBlPXRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIiksZj1kfHx0aGlzLmdldEl0ZW1Gb3JEaXJlY3Rpb24oYixlKSxnPXRoaXMuaW50ZXJ2YWwsaD0ibmV4dCI9PWI/ImxlZnQiOiJyaWdodCIsaT10aGlzO2lmKGYuaGFzQ2xhc3MoImFjdGl2ZSIpKXJldHVybiB0aGlzLnNsaWRpbmc9ITE7dmFyIGo9ZlswXSxrPWEuRXZlbnQoInNsaWRlLmJzLmNhcm91c2VsIix7cmVsYXRlZFRhcmdldDpqLGRpcmVjdGlvbjpofSk7aWYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGspLCFrLmlzRGVmYXVsdFByZXZlbnRlZCgpKXtpZih0aGlzLnNsaWRpbmc9ITAsZyYmdGhpcy5wYXVzZSgpLHRoaXMuJGluZGljYXRvcnMubGVuZ3RoKXt0aGlzLiRpbmRpY2F0b3JzLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7dmFyIGw9YSh0aGlzLiRpbmRpY2F0b3JzLmNoaWxkcmVuKClbdGhpcy5nZXRJdGVtSW5kZXgoZildKTtsJiZsLmFkZENsYXNzKCJhY3RpdmUiKX12YXIgbT1hLkV2ZW50KCJzbGlkLmJzLmNhcm91c2VsIix7cmVsYXRlZFRhcmdldDpqLGRpcmVjdGlvbjpofSk7cmV0dXJuIGEuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJzbGlkZSIpPyhmLmFkZENsYXNzKGIpLGZbMF0ub2Zmc2V0V2lkdGgsZS5hZGRDbGFzcyhoKSxmLmFkZENsYXNzKGgpLGUub25lKCJic1RyYW5zaXRpb25FbmQiLGZ1bmN0aW9uKCl7Zi5yZW1vdmVDbGFzcyhbYixoXS5qb2luKCIgIikpLmFkZENsYXNzKCJhY3RpdmUiKSxlLnJlbW92ZUNsYXNzKFsiYWN0aXZlIixoXS5qb2luKCIgIikpLGkuc2xpZGluZz0hMSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS4kZWxlbWVudC50cmlnZ2VyKG0pfSwwKX0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTikpOihlLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxmLmFkZENsYXNzKCJhY3RpdmUiKSx0aGlzLnNsaWRpbmc9ITEsdGhpcy4kZWxlbWVudC50cmlnZ2VyKG0pKSxnJiZ0aGlzLmN5Y2xlKCksdGhpc319O3ZhciBkPWEuZm4uY2Fyb3VzZWw7YS5mbi5jYXJvdXNlbD1iLGEuZm4uY2Fyb3VzZWwuQ29uc3RydWN0b3I9YyxhLmZuLmNhcm91c2VsLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5jYXJvdXNlbD1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe3ZhciBkLGU9YSh0aGlzKSxmPWEoZS5hdHRyKCJkYXRhLXRhcmdldCIpfHwoZD1lLmF0dHIoImhyZWYiKSkmJmQucmVwbGFjZSgvLiooPz0jW15cc10rJCkvLCIiKSk7aWYoZi5oYXNDbGFzcygiY2Fyb3VzZWwiKSl7dmFyIGc9YS5leHRlbmQoe30sZi5kYXRhKCksZS5kYXRhKCkpLGg9ZS5hdHRyKCJkYXRhLXNsaWRlLXRvIik7aCYmKGcuaW50ZXJ2YWw9ITEpLGIuY2FsbChmLGcpLGgmJmYuZGF0YSgiYnMuY2Fyb3VzZWwiKS50byhoKSxjLnByZXZlbnREZWZhdWx0KCl9fTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMuY2Fyb3VzZWwuZGF0YS1hcGkiLCJbZGF0YS1zbGlkZV0iLGUpLm9uKCJjbGljay5icy5jYXJvdXNlbC5kYXRhLWFwaSIsIltkYXRhLXNsaWRlLXRvXSIsZSksYSh3aW5kb3cpLm9uKCJsb2FkIixmdW5jdGlvbigpe2EoJ1tkYXRhLXJpZGU9ImNhcm91c2VsIl0nKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKTtiLmNhbGwoYyxjLmRhdGEoKSl9KX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXt2YXIgYyxkPWIuYXR0cigiZGF0YS10YXJnZXQiKXx8KGM9Yi5hdHRyKCJocmVmIikpJiZjLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIik7cmV0dXJuIGEoZCl9ZnVuY3Rpb24gYyhiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKSxlPWMuZGF0YSgiYnMuY29sbGFwc2UiKSxmPWEuZXh0ZW5kKHt9LGQuREVGQVVMVFMsYy5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBiJiZiKTshZSYmZi50b2dnbGUmJi9zaG93fGhpZGUvLnRlc3QoYikmJihmLnRvZ2dsZT0hMSksZXx8Yy5kYXRhKCJicy5jb2xsYXBzZSIsZT1uZXcgZCh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBkPWZ1bmN0aW9uKGIsYyl7dGhpcy4kZWxlbWVudD1hKGIpLHRoaXMub3B0aW9ucz1hLmV4dGVuZCh7fSxkLkRFRkFVTFRTLGMpLHRoaXMuJHRyaWdnZXI9YSgnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2hyZWY9IiMnK2IuaWQrJyJdLFtkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXVtkYXRhLXRhcmdldD0iIycrYi5pZCsnIl0nKSx0aGlzLnRyYW5zaXRpb25pbmc9bnVsbCx0aGlzLm9wdGlvbnMucGFyZW50P3RoaXMuJHBhcmVudD10aGlzLmdldFBhcmVudCgpOnRoaXMuYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHRoaXMuJGVsZW1lbnQsdGhpcy4kdHJpZ2dlciksdGhpcy5vcHRpb25zLnRvZ2dsZSYmdGhpcy50b2dnbGUoKX07ZC5WRVJTSU9OPSIzLjMuNSIsZC5UUkFOU0lUSU9OX0RVUkFUSU9OPTM1MCxkLkRFRkFVTFRTPXt0b2dnbGU6ITB9LGQucHJvdG90eXBlLmRpbWVuc2lvbj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoIndpZHRoIik7cmV0dXJuIGE/IndpZHRoIjoiaGVpZ2h0In0sZC5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe2lmKCF0aGlzLnRyYW5zaXRpb25pbmcmJiF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJpbiIpKXt2YXIgYixlPXRoaXMuJHBhcmVudCYmdGhpcy4kcGFyZW50LmNoaWxkcmVuKCIucGFuZWwiKS5jaGlsZHJlbigiLmluLCAuY29sbGFwc2luZyIpO2lmKCEoZSYmZS5sZW5ndGgmJihiPWUuZGF0YSgiYnMuY29sbGFwc2UiKSxiJiZiLnRyYW5zaXRpb25pbmcpKSl7dmFyIGY9YS5FdmVudCgic2hvdy5icy5jb2xsYXBzZSIpO2lmKHRoaXMuJGVsZW1lbnQudHJpZ2dlcihmKSwhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7ZSYmZS5sZW5ndGgmJihjLmNhbGwoZSwiaGlkZSIpLGJ8fGUuZGF0YSgiYnMuY29sbGFwc2UiLG51bGwpKTt2YXIgZz10aGlzLmRpbWVuc2lvbigpO3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNlIikuYWRkQ2xhc3MoImNvbGxhcHNpbmciKVtnXSgwKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksdGhpcy4kdHJpZ2dlci5yZW1vdmVDbGFzcygiY29sbGFwc2VkIikuYXR0cigiYXJpYS1leHBhbmRlZCIsITApLHRoaXMudHJhbnNpdGlvbmluZz0xO3ZhciBoPWZ1bmN0aW9uKCl7dGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiY29sbGFwc2luZyIpLmFkZENsYXNzKCJjb2xsYXBzZSBpbiIpW2ddKCIiKSx0aGlzLnRyYW5zaXRpb25pbmc9MCx0aGlzLiRlbGVtZW50LnRyaWdnZXIoInNob3duLmJzLmNvbGxhcHNlIil9O2lmKCFhLnN1cHBvcnQudHJhbnNpdGlvbilyZXR1cm4gaC5jYWxsKHRoaXMpO3ZhciBpPWEuY2FtZWxDYXNlKFsic2Nyb2xsIixnXS5qb2luKCItIikpO3RoaXMuJGVsZW1lbnQub25lKCJic1RyYW5zaXRpb25FbmQiLGEucHJveHkoaCx0aGlzKSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoZC5UUkFOU0lUSU9OX0RVUkFUSU9OKVtnXSh0aGlzLiRlbGVtZW50WzBdW2ldKX19fX0sZC5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbigpe2lmKCF0aGlzLnRyYW5zaXRpb25pbmcmJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIikpe3ZhciBiPWEuRXZlbnQoImhpZGUuYnMuY29sbGFwc2UiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoYiksIWIuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBjPXRoaXMuZGltZW5zaW9uKCk7dGhpcy4kZWxlbWVudFtjXSh0aGlzLiRlbGVtZW50W2NdKCkpWzBdLm9mZnNldEhlaWdodCx0aGlzLiRlbGVtZW50LmFkZENsYXNzKCJjb2xsYXBzaW5nIikucmVtb3ZlQ2xhc3MoImNvbGxhcHNlIGluIikuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLHRoaXMuJHRyaWdnZXIuYWRkQ2xhc3MoImNvbGxhcHNlZCIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCExKSx0aGlzLnRyYW5zaXRpb25pbmc9MTt2YXIgZT1mdW5jdGlvbigpe3RoaXMudHJhbnNpdGlvbmluZz0wLHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNpbmciKS5hZGRDbGFzcygiY29sbGFwc2UiKS50cmlnZ2VyKCJoaWRkZW4uYnMuY29sbGFwc2UiKX07cmV0dXJuIGEuc3VwcG9ydC50cmFuc2l0aW9uP3ZvaWQgdGhpcy4kZWxlbWVudFtjXSgwKS5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYS5wcm94eShlLHRoaXMpKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChkLlRSQU5TSVRJT05fRFVSQVRJT04pOmUuY2FsbCh0aGlzKX19fSxkLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oKXt0aGlzW3RoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIik/ImhpZGUiOiJzaG93Il0oKX0sZC5wcm90b3R5cGUuZ2V0UGFyZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcy5vcHRpb25zLnBhcmVudCkuZmluZCgnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2RhdGEtcGFyZW50PSInK3RoaXMub3B0aW9ucy5wYXJlbnQrJyJdJykuZWFjaChhLnByb3h5KGZ1bmN0aW9uKGMsZCl7dmFyIGU9YShkKTt0aGlzLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyhiKGUpLGUpfSx0aGlzKSkuZW5kKCl9LGQucHJvdG90eXBlLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcz1mdW5jdGlvbihhLGIpe3ZhciBjPWEuaGFzQ2xhc3MoImluIik7YS5hdHRyKCJhcmlhLWV4cGFuZGVkIixjKSxiLnRvZ2dsZUNsYXNzKCJjb2xsYXBzZWQiLCFjKS5hdHRyKCJhcmlhLWV4cGFuZGVkIixjKX07dmFyIGU9YS5mbi5jb2xsYXBzZTthLmZuLmNvbGxhcHNlPWMsYS5mbi5jb2xsYXBzZS5Db25zdHJ1Y3Rvcj1kLGEuZm4uY29sbGFwc2Uubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmNvbGxhcHNlPWUsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmNvbGxhcHNlLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdJyxmdW5jdGlvbihkKXt2YXIgZT1hKHRoaXMpO2UuYXR0cigiZGF0YS10YXJnZXQiKXx8ZC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBmPWIoZSksZz1mLmRhdGEoImJzLmNvbGxhcHNlIiksaD1nPyJ0b2dnbGUiOmUuZGF0YSgpO2MuY2FsbChmLGgpfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3ZhciBjPWIuYXR0cigiZGF0YS10YXJnZXQiKTtjfHwoYz1iLmF0dHIoImhyZWYiKSxjPWMmJi8jW0EtWmEtel0vLnRlc3QoYykmJmMucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGQ9YyYmYShjKTtyZXR1cm4gZCYmZC5sZW5ndGg/ZDpiLnBhcmVudCgpfWZ1bmN0aW9uIGMoYyl7YyYmMz09PWMud2hpY2h8fChhKGUpLnJlbW92ZSgpLGEoZikuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1iKGQpLGY9e3JlbGF0ZWRUYXJnZXQ6dGhpc307ZS5oYXNDbGFzcygib3BlbiIpJiYoYyYmImNsaWNrIj09Yy50eXBlJiYvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGMudGFyZ2V0LnRhZ05hbWUpJiZhLmNvbnRhaW5zKGVbMF0sYy50YXJnZXQpfHwoZS50cmlnZ2VyKGM9YS5FdmVudCgiaGlkZS5icy5kcm9wZG93biIsZikpLGMuaXNEZWZhdWx0UHJldmVudGVkKCl8fChkLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLGUucmVtb3ZlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJoaWRkZW4uYnMuZHJvcGRvd24iLGYpKSkpfSkpfWZ1bmN0aW9uIGQoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLmRhdGEoImJzLmRyb3Bkb3duIik7ZHx8Yy5kYXRhKCJicy5kcm9wZG93biIsZD1uZXcgZyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZkW2JdLmNhbGwoYyl9KX12YXIgZT0iLmRyb3Bkb3duLWJhY2tkcm9wIixmPSdbZGF0YS10b2dnbGU9ImRyb3Bkb3duIl0nLGc9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2suYnMuZHJvcGRvd24iLHRoaXMudG9nZ2xlKX07Zy5WRVJTSU9OPSIzLjMuNSIsZy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKGQpe3ZhciBlPWEodGhpcyk7aWYoIWUuaXMoIi5kaXNhYmxlZCwgOmRpc2FibGVkIikpe3ZhciBmPWIoZSksZz1mLmhhc0NsYXNzKCJvcGVuIik7aWYoYygpLCFnKXsib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmIWYuY2xvc2VzdCgiLm5hdmJhci1uYXYiKS5sZW5ndGgmJmEoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmFkZENsYXNzKCJkcm9wZG93bi1iYWNrZHJvcCIpLmluc2VydEFmdGVyKGEodGhpcykpLm9uKCJjbGljayIsYyk7dmFyIGg9e3JlbGF0ZWRUYXJnZXQ6dGhpc307aWYoZi50cmlnZ2VyKGQ9YS5FdmVudCgic2hvdy5icy5kcm9wZG93biIsaCkpLGQuaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO2UudHJpZ2dlcigiZm9jdXMiKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwidHJ1ZSIpLGYudG9nZ2xlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJzaG93bi5icy5kcm9wZG93biIsaCl9cmV0dXJuITF9fSxnLnByb3RvdHlwZS5rZXlkb3duPWZ1bmN0aW9uKGMpe2lmKC8oMzh8NDB8Mjd8MzIpLy50ZXN0KGMud2hpY2gpJiYhL2lucHV0fHRleHRhcmVhL2kudGVzdChjLnRhcmdldC50YWdOYW1lKSl7dmFyIGQ9YSh0aGlzKTtpZihjLnByZXZlbnREZWZhdWx0KCksYy5zdG9wUHJvcGFnYXRpb24oKSwhZC5pcygiLmRpc2FibGVkLCA6ZGlzYWJsZWQiKSl7dmFyIGU9YihkKSxnPWUuaGFzQ2xhc3MoIm9wZW4iKTtpZighZyYmMjchPWMud2hpY2h8fGcmJjI3PT1jLndoaWNoKXJldHVybiAyNz09Yy53aGljaCYmZS5maW5kKGYpLnRyaWdnZXIoImZvY3VzIiksZC50cmlnZ2VyKCJjbGljayIpO3ZhciBoPSIgbGk6bm90KC5kaXNhYmxlZCk6dmlzaWJsZSBhIixpPWUuZmluZCgiLmRyb3Bkb3duLW1lbnUiK2gpO2lmKGkubGVuZ3RoKXt2YXIgaj1pLmluZGV4KGMudGFyZ2V0KTszOD09Yy53aGljaCYmaj4wJiZqLS0sNDA9PWMud2hpY2gmJmo8aS5sZW5ndGgtMSYmaisrLH5qfHwoaj0wKSxpLmVxKGopLnRyaWdnZXIoImZvY3VzIil9fX19O3ZhciBoPWEuZm4uZHJvcGRvd247YS5mbi5kcm9wZG93bj1kLGEuZm4uZHJvcGRvd24uQ29uc3RydWN0b3I9ZyxhLmZuLmRyb3Bkb3duLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5kcm9wZG93bj1oLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSIsYykub24oImNsaWNrLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwiLmRyb3Bkb3duIGZvcm0iLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiY2xpY2suYnMuZHJvcGRvd24uZGF0YS1hcGkiLGYsZy5wcm90b3R5cGUudG9nZ2xlKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsZixnLnByb3RvdHlwZS5rZXlkb3duKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsIi5kcm9wZG93bi1tZW51IixnLnByb3RvdHlwZS5rZXlkb3duKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYixkKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9YSh0aGlzKSxmPWUuZGF0YSgiYnMubW9kYWwiKSxnPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZS5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBiJiZiKTtmfHxlLmRhdGEoImJzLm1vZGFsIixmPW5ldyBjKHRoaXMsZykpLCJzdHJpbmciPT10eXBlb2YgYj9mW2JdKGQpOmcuc2hvdyYmZi5zaG93KGQpfSl9dmFyIGM9ZnVuY3Rpb24oYixjKXt0aGlzLm9wdGlvbnM9Yyx0aGlzLiRib2R5PWEoZG9jdW1lbnQuYm9keSksdGhpcy4kZWxlbWVudD1hKGIpLHRoaXMuJGRpYWxvZz10aGlzLiRlbGVtZW50LmZpbmQoIi5tb2RhbC1kaWFsb2ciKSx0aGlzLiRiYWNrZHJvcD1udWxsLHRoaXMuaXNTaG93bj1udWxsLHRoaXMub3JpZ2luYWxCb2R5UGFkPW51bGwsdGhpcy5zY3JvbGxiYXJXaWR0aD0wLHRoaXMuaWdub3JlQmFja2Ryb3BDbGljaz0hMSx0aGlzLm9wdGlvbnMucmVtb3RlJiZ0aGlzLiRlbGVtZW50LmZpbmQoIi5tb2RhbC1jb250ZW50IikubG9hZCh0aGlzLm9wdGlvbnMucmVtb3RlLGEucHJveHkoZnVuY3Rpb24oKXt0aGlzLiRlbGVtZW50LnRyaWdnZXIoImxvYWRlZC5icy5tb2RhbCIpfSx0aGlzKSl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuVFJBTlNJVElPTl9EVVJBVElPTj0zMDAsYy5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLkRFRkFVTFRTPXtiYWNrZHJvcDohMCxrZXlib2FyZDohMCxzaG93OiEwfSxjLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXNTaG93bj90aGlzLmhpZGUoKTp0aGlzLnNob3coYSl9LGMucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcyxlPWEuRXZlbnQoInNob3cuYnMubW9kYWwiLHtyZWxhdGVkVGFyZ2V0OmJ9KTt0aGlzLiRlbGVtZW50LnRyaWdnZXIoZSksdGhpcy5pc1Nob3dufHxlLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwodGhpcy5pc1Nob3duPSEwLHRoaXMuY2hlY2tTY3JvbGxiYXIoKSx0aGlzLnNldFNjcm9sbGJhcigpLHRoaXMuJGJvZHkuYWRkQ2xhc3MoIm1vZGFsLW9wZW4iKSx0aGlzLmVzY2FwZSgpLHRoaXMucmVzaXplKCksdGhpcy4kZWxlbWVudC5vbigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIsJ1tkYXRhLWRpc21pc3M9Im1vZGFsIl0nLGEucHJveHkodGhpcy5oaWRlLHRoaXMpKSx0aGlzLiRkaWFsb2cub24oIm1vdXNlZG93bi5kaXNtaXNzLmJzLm1vZGFsIixmdW5jdGlvbigpe2QuJGVsZW1lbnQub25lKCJtb3VzZXVwLmRpc21pc3MuYnMubW9kYWwiLGZ1bmN0aW9uKGIpe2EoYi50YXJnZXQpLmlzKGQuJGVsZW1lbnQpJiYoZC5pZ25vcmVCYWNrZHJvcENsaWNrPSEwKX0pfSksdGhpcy5iYWNrZHJvcChmdW5jdGlvbigpe3ZhciBlPWEuc3VwcG9ydC50cmFuc2l0aW9uJiZkLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik7ZC4kZWxlbWVudC5wYXJlbnQoKS5sZW5ndGh8fGQuJGVsZW1lbnQuYXBwZW5kVG8oZC4kYm9keSksZC4kZWxlbWVudC5zaG93KCkuc2Nyb2xsVG9wKDApLGQuYWRqdXN0RGlhbG9nKCksZSYmZC4kZWxlbWVudFswXS5vZmZzZXRXaWR0aCxkLiRlbGVtZW50LmFkZENsYXNzKCJpbiIpLGQuZW5mb3JjZUZvY3VzKCk7dmFyIGY9YS5FdmVudCgic2hvd24uYnMubW9kYWwiLHtyZWxhdGVkVGFyZ2V0OmJ9KTtlP2QuJGRpYWxvZy5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZnVuY3Rpb24oKXtkLiRlbGVtZW50LnRyaWdnZXIoImZvY3VzIikudHJpZ2dlcihmKX0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6ZC4kZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpLnRyaWdnZXIoZil9KSl9LGMucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oYil7YiYmYi5wcmV2ZW50RGVmYXVsdCgpLGI9YS5FdmVudCgiaGlkZS5icy5tb2RhbCIpLHRoaXMuJGVsZW1lbnQudHJpZ2dlcihiKSx0aGlzLmlzU2hvd24mJiFiLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYodGhpcy5pc1Nob3duPSExLHRoaXMuZXNjYXBlKCksdGhpcy5yZXNpemUoKSxhKGRvY3VtZW50KS5vZmYoImZvY3VzaW4uYnMubW9kYWwiKSx0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJpbiIpLm9mZigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIpLm9mZigibW91c2V1cC5kaXNtaXNzLmJzLm1vZGFsIiksdGhpcy4kZGlhbG9nLm9mZigibW91c2Vkb3duLmRpc21pc3MuYnMubW9kYWwiKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpP3RoaXMuJGVsZW1lbnQub25lKCJic1RyYW5zaXRpb25FbmQiLGEucHJveHkodGhpcy5oaWRlTW9kYWwsdGhpcykpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6dGhpcy5oaWRlTW9kYWwoKSl9LGMucHJvdG90eXBlLmVuZm9yY2VGb2N1cz1mdW5jdGlvbigpe2EoZG9jdW1lbnQpLm9mZigiZm9jdXNpbi5icy5tb2RhbCIpLm9uKCJmb2N1c2luLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpe3RoaXMuJGVsZW1lbnRbMF09PT1hLnRhcmdldHx8dGhpcy4kZWxlbWVudC5oYXMoYS50YXJnZXQpLmxlbmd0aHx8dGhpcy4kZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpfSx0aGlzKSl9LGMucHJvdG90eXBlLmVzY2FwZT1mdW5jdGlvbigpe3RoaXMuaXNTaG93biYmdGhpcy5vcHRpb25zLmtleWJvYXJkP3RoaXMuJGVsZW1lbnQub24oImtleWRvd24uZGlzbWlzcy5icy5tb2RhbCIsYS5wcm94eShmdW5jdGlvbihhKXsyNz09YS53aGljaCYmdGhpcy5oaWRlKCl9LHRoaXMpKTp0aGlzLmlzU2hvd258fHRoaXMuJGVsZW1lbnQub2ZmKCJrZXlkb3duLmRpc21pc3MuYnMubW9kYWwiKX0sYy5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKCl7dGhpcy5pc1Nob3duP2Eod2luZG93KS5vbigicmVzaXplLmJzLm1vZGFsIixhLnByb3h5KHRoaXMuaGFuZGxlVXBkYXRlLHRoaXMpKTphKHdpbmRvdykub2ZmKCJyZXNpemUuYnMubW9kYWwiKX0sYy5wcm90b3R5cGUuaGlkZU1vZGFsPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLiRlbGVtZW50LmhpZGUoKSx0aGlzLmJhY2tkcm9wKGZ1bmN0aW9uKCl7YS4kYm9keS5yZW1vdmVDbGFzcygibW9kYWwtb3BlbiIpLGEucmVzZXRBZGp1c3RtZW50cygpLGEucmVzZXRTY3JvbGxiYXIoKSxhLiRlbGVtZW50LnRyaWdnZXIoImhpZGRlbi5icy5tb2RhbCIpfSl9LGMucHJvdG90eXBlLnJlbW92ZUJhY2tkcm9wPWZ1bmN0aW9uKCl7dGhpcy4kYmFja2Ryb3AmJnRoaXMuJGJhY2tkcm9wLnJlbW92ZSgpLHRoaXMuJGJhY2tkcm9wPW51bGx9LGMucHJvdG90eXBlLmJhY2tkcm9wPWZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMsZT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik/ImZhZGUiOiIiO2lmKHRoaXMuaXNTaG93biYmdGhpcy5vcHRpb25zLmJhY2tkcm9wKXt2YXIgZj1hLnN1cHBvcnQudHJhbnNpdGlvbiYmZTtpZih0aGlzLiRiYWNrZHJvcD1hKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5hZGRDbGFzcygibW9kYWwtYmFja2Ryb3AgIitlKS5hcHBlbmRUbyh0aGlzLiRib2R5KSx0aGlzLiRlbGVtZW50Lm9uKCJjbGljay5kaXNtaXNzLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmlnbm9yZUJhY2tkcm9wQ2xpY2s/dm9pZCh0aGlzLmlnbm9yZUJhY2tkcm9wQ2xpY2s9ITEpOnZvaWQoYS50YXJnZXQ9PT1hLmN1cnJlbnRUYXJnZXQmJigic3RhdGljIj09dGhpcy5vcHRpb25zLmJhY2tkcm9wP3RoaXMuJGVsZW1lbnRbMF0uZm9jdXMoKTp0aGlzLmhpZGUoKSkpfSx0aGlzKSksZiYmdGhpcy4kYmFja2Ryb3BbMF0ub2Zmc2V0V2lkdGgsdGhpcy4kYmFja2Ryb3AuYWRkQ2xhc3MoImluIiksIWIpcmV0dXJuO2Y/dGhpcy4kYmFja2Ryb3Aub25lKCJic1RyYW5zaXRpb25FbmQiLGIpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuQkFDS0RST1BfVFJBTlNJVElPTl9EVVJBVElPTik6YigpfWVsc2UgaWYoIXRoaXMuaXNTaG93biYmdGhpcy4kYmFja2Ryb3Ape3RoaXMuJGJhY2tkcm9wLnJlbW92ZUNsYXNzKCJpbiIpO3ZhciBnPWZ1bmN0aW9uKCl7ZC5yZW1vdmVCYWNrZHJvcCgpLGImJmIoKX07YS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKT90aGlzLiRiYWNrZHJvcC5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZykuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OKTpnKCl9ZWxzZSBiJiZiKCl9LGMucHJvdG90eXBlLmhhbmRsZVVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuYWRqdXN0RGlhbG9nKCl9LGMucHJvdG90eXBlLmFkanVzdERpYWxvZz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnRbMF0uc2Nyb2xsSGVpZ2h0PmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7dGhpcy4kZWxlbWVudC5jc3Moe3BhZGRpbmdMZWZ0OiF0aGlzLmJvZHlJc092ZXJmbG93aW5nJiZhP3RoaXMuc2Nyb2xsYmFyV2lkdGg6IiIscGFkZGluZ1JpZ2h0OnRoaXMuYm9keUlzT3ZlcmZsb3dpbmcmJiFhP3RoaXMuc2Nyb2xsYmFyV2lkdGg6IiJ9KX0sYy5wcm90b3R5cGUucmVzZXRBZGp1c3RtZW50cz1mdW5jdGlvbigpe3RoaXMuJGVsZW1lbnQuY3NzKHtwYWRkaW5nTGVmdDoiIixwYWRkaW5nUmlnaHQ6IiJ9KX0sYy5wcm90b3R5cGUuY2hlY2tTY3JvbGxiYXI9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cuaW5uZXJXaWR0aDtpZighYSl7dmFyIGI9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2E9Yi5yaWdodC1NYXRoLmFicyhiLmxlZnQpfXRoaXMuYm9keUlzT3ZlcmZsb3dpbmc9ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDxhLHRoaXMuc2Nyb2xsYmFyV2lkdGg9dGhpcy5tZWFzdXJlU2Nyb2xsYmFyKCl9LGMucHJvdG90eXBlLnNldFNjcm9sbGJhcj1mdW5jdGlvbigpe3ZhciBhPXBhcnNlSW50KHRoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0Iil8fDAsMTApO3RoaXMub3JpZ2luYWxCb2R5UGFkPWRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0fHwiIix0aGlzLmJvZHlJc092ZXJmbG93aW5nJiZ0aGlzLiRib2R5LmNzcygicGFkZGluZy1yaWdodCIsYSt0aGlzLnNjcm9sbGJhcldpZHRoKX0sYy5wcm90b3R5cGUucmVzZXRTY3JvbGxiYXI9ZnVuY3Rpb24oKXt0aGlzLiRib2R5LmNzcygicGFkZGluZy1yaWdodCIsdGhpcy5vcmlnaW5hbEJvZHlQYWQpfSxjLnByb3RvdHlwZS5tZWFzdXJlU2Nyb2xsYmFyPWZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5jbGFzc05hbWU9Im1vZGFsLXNjcm9sbGJhci1tZWFzdXJlIix0aGlzLiRib2R5LmFwcGVuZChhKTt2YXIgYj1hLm9mZnNldFdpZHRoLWEuY2xpZW50V2lkdGg7cmV0dXJuIHRoaXMuJGJvZHlbMF0ucmVtb3ZlQ2hpbGQoYSksYn07dmFyIGQ9YS5mbi5tb2RhbDthLmZuLm1vZGFsPWIsYS5mbi5tb2RhbC5Db25zdHJ1Y3Rvcj1jLGEuZm4ubW9kYWwubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLm1vZGFsPWQsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLm1vZGFsLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJtb2RhbCJdJyxmdW5jdGlvbihjKXt2YXIgZD1hKHRoaXMpLGU9ZC5hdHRyKCJocmVmIiksZj1hKGQuYXR0cigiZGF0YS10YXJnZXQiKXx8ZSYmZS5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpKSxnPWYuZGF0YSgiYnMubW9kYWwiKT8idG9nZ2xlIjphLmV4dGVuZCh7cmVtb3RlOiEvIy8udGVzdChlKSYmZX0sZi5kYXRhKCksZC5kYXRhKCkpO2QuaXMoImEiKSYmYy5wcmV2ZW50RGVmYXVsdCgpLGYub25lKCJzaG93LmJzLm1vZGFsIixmdW5jdGlvbihhKXthLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxmLm9uZSgiaGlkZGVuLmJzLm1vZGFsIixmdW5jdGlvbigpe2QuaXMoIjp2aXNpYmxlIikmJmQudHJpZ2dlcigiZm9jdXMiKX0pfSksYi5jYWxsKGYsZyx0aGlzKX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMudG9vbHRpcCIpLGY9Im9iamVjdCI9PXR5cGVvZiBiJiZiOyhlfHwhL2Rlc3Ryb3l8aGlkZS8udGVzdChiKSkmJihlfHxkLmRhdGEoImJzLnRvb2x0aXAiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLnR5cGU9bnVsbCx0aGlzLm9wdGlvbnM9bnVsbCx0aGlzLmVuYWJsZWQ9bnVsbCx0aGlzLnRpbWVvdXQ9bnVsbCx0aGlzLmhvdmVyU3RhdGU9bnVsbCx0aGlzLiRlbGVtZW50PW51bGwsdGhpcy5pblN0YXRlPW51bGwsdGhpcy5pbml0KCJ0b29sdGlwIixhLGIpfTtjLlZFUlNJT049IjMuMy41IixjLlRSQU5TSVRJT05fRFVSQVRJT049MTUwLGMuREVGQVVMVFM9e2FuaW1hdGlvbjohMCxwbGFjZW1lbnQ6InRvcCIsc2VsZWN0b3I6ITEsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InRvb2x0aXAtYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXAtaW5uZXIiPjwvZGl2PjwvZGl2PicsdHJpZ2dlcjoiaG92ZXIgZm9jdXMiLHRpdGxlOiIiLGRlbGF5OjAsaHRtbDohMSxjb250YWluZXI6ITEsdmlld3BvcnQ6e3NlbGVjdG9yOiJib2R5IixwYWRkaW5nOjB9fSxjLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGIsYyxkKXtpZih0aGlzLmVuYWJsZWQ9ITAsdGhpcy50eXBlPWIsdGhpcy4kZWxlbWVudD1hKGMpLHRoaXMub3B0aW9ucz10aGlzLmdldE9wdGlvbnMoZCksdGhpcy4kdmlld3BvcnQ9dGhpcy5vcHRpb25zLnZpZXdwb3J0JiZhKGEuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMudmlld3BvcnQpP3RoaXMub3B0aW9ucy52aWV3cG9ydC5jYWxsKHRoaXMsdGhpcy4kZWxlbWVudCk6dGhpcy5vcHRpb25zLnZpZXdwb3J0LnNlbGVjdG9yfHx0aGlzLm9wdGlvbnMudmlld3BvcnQpLHRoaXMuaW5TdGF0ZT17Y2xpY2s6ITEsaG92ZXI6ITEsZm9jdXM6ITF9LHRoaXMuJGVsZW1lbnRbMF1pbnN0YW5jZW9mIGRvY3VtZW50LmNvbnN0cnVjdG9yJiYhdGhpcy5vcHRpb25zLnNlbGVjdG9yKXRocm93IG5ldyBFcnJvcigiYHNlbGVjdG9yYCBvcHRpb24gbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBpbml0aWFsaXppbmcgIit0aGlzLnR5cGUrIiBvbiB0aGUgd2luZG93LmRvY3VtZW50IG9iamVjdCEiKTtmb3IodmFyIGU9dGhpcy5vcHRpb25zLnRyaWdnZXIuc3BsaXQoIiAiKSxmPWUubGVuZ3RoO2YtLTspe3ZhciBnPWVbZl07aWYoImNsaWNrIj09Zyl0aGlzLiRlbGVtZW50Lm9uKCJjbGljay4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLnRvZ2dsZSx0aGlzKSk7ZWxzZSBpZigibWFudWFsIiE9Zyl7dmFyIGg9ImhvdmVyIj09Zz8ibW91c2VlbnRlciI6ImZvY3VzaW4iLGk9ImhvdmVyIj09Zz8ibW91c2VsZWF2ZSI6ImZvY3Vzb3V0Ijt0aGlzLiRlbGVtZW50Lm9uKGgrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmVudGVyLHRoaXMpKSx0aGlzLiRlbGVtZW50Lm9uKGkrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmxlYXZlLHRoaXMpKX19dGhpcy5vcHRpb25zLnNlbGVjdG9yP3RoaXMuX29wdGlvbnM9YS5leHRlbmQoe30sdGhpcy5vcHRpb25zLHt0cmlnZ2VyOiJtYW51YWwiLHNlbGVjdG9yOiIifSk6dGhpcy5maXhUaXRsZSgpfSxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5nZXRPcHRpb25zPWZ1bmN0aW9uKGIpe3JldHVybiBiPWEuZXh0ZW5kKHt9LHRoaXMuZ2V0RGVmYXVsdHMoKSx0aGlzLiRlbGVtZW50LmRhdGEoKSxiKSxiLmRlbGF5JiYibnVtYmVyIj09dHlwZW9mIGIuZGVsYXkmJihiLmRlbGF5PXtzaG93OmIuZGVsYXksaGlkZTpiLmRlbGF5fSksYn0sYy5wcm90b3R5cGUuZ2V0RGVsZWdhdGVPcHRpb25zPWZ1bmN0aW9uKCl7dmFyIGI9e30sYz10aGlzLmdldERlZmF1bHRzKCk7cmV0dXJuIHRoaXMuX29wdGlvbnMmJmEuZWFjaCh0aGlzLl9vcHRpb25zLGZ1bmN0aW9uKGEsZCl7Y1thXSE9ZCYmKGJbYV09ZCl9KSxifSxjLnByb3RvdHlwZS5lbnRlcj1mdW5jdGlvbihiKXt2YXIgYz1iIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9iOmEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSk7cmV0dXJuIGN8fChjPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGIuY3VycmVudFRhcmdldCx0aGlzLmdldERlbGVnYXRlT3B0aW9ucygpKSxhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsYykpLGIgaW5zdGFuY2VvZiBhLkV2ZW50JiYoYy5pblN0YXRlWyJmb2N1c2luIj09Yi50eXBlPyJmb2N1cyI6ImhvdmVyIl09ITApLGMudGlwKCkuaGFzQ2xhc3MoImluIil8fCJpbiI9PWMuaG92ZXJTdGF0ZT92b2lkKGMuaG92ZXJTdGF0ZT0iaW4iKTooY2xlYXJUaW1lb3V0KGMudGltZW91dCksYy5ob3ZlclN0YXRlPSJpbiIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuc2hvdz92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ImluIj09Yy5ob3ZlclN0YXRlJiZjLnNob3coKX0sYy5vcHRpb25zLmRlbGF5LnNob3cpKTpjLnNob3coKSl9LGMucHJvdG90eXBlLmlzSW5TdGF0ZVRydWU9ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gdGhpcy5pblN0YXRlKWlmKHRoaXMuaW5TdGF0ZVthXSlyZXR1cm4hMDtyZXR1cm4hMX0sYy5wcm90b3R5cGUubGVhdmU9ZnVuY3Rpb24oYil7dmFyIGM9YiBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I/YjphKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUpO3JldHVybiBjfHwoYz1uZXcgdGhpcy5jb25zdHJ1Y3RvcihiLmN1cnJlbnRUYXJnZXQsdGhpcy5nZXREZWxlZ2F0ZU9wdGlvbnMoKSksYShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIrdGhpcy50eXBlLGMpKSxiIGluc3RhbmNlb2YgYS5FdmVudCYmKGMuaW5TdGF0ZVsiZm9jdXNvdXQiPT1iLnR5cGU/ImZvY3VzIjoiaG92ZXIiXT0hMSksYy5pc0luU3RhdGVUcnVlKCk/dm9pZCAwOihjbGVhclRpbWVvdXQoYy50aW1lb3V0KSxjLmhvdmVyU3RhdGU9Im91dCIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuaGlkZT92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Im91dCI9PWMuaG92ZXJTdGF0ZSYmYy5oaWRlKCl9LGMub3B0aW9ucy5kZWxheS5oaWRlKSk6Yy5oaWRlKCkpfSxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9YS5FdmVudCgic2hvdy5icy4iK3RoaXMudHlwZSk7aWYodGhpcy5oYXNDb250ZW50KCkmJnRoaXMuZW5hYmxlZCl7dGhpcy4kZWxlbWVudC50cmlnZ2VyKGIpO3ZhciBkPWEuY29udGFpbnModGhpcy4kZWxlbWVudFswXS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0aGlzLiRlbGVtZW50WzBdKTtpZihiLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwhZClyZXR1cm47dmFyIGU9dGhpcyxmPXRoaXMudGlwKCksZz10aGlzLmdldFVJRCh0aGlzLnR5cGUpO3RoaXMuc2V0Q29udGVudCgpLGYuYXR0cigiaWQiLGcpLHRoaXMuJGVsZW1lbnQuYXR0cigiYXJpYS1kZXNjcmliZWRieSIsZyksdGhpcy5vcHRpb25zLmFuaW1hdGlvbiYmZi5hZGRDbGFzcygiZmFkZSIpO3ZhciBoPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMucGxhY2VtZW50P3RoaXMub3B0aW9ucy5wbGFjZW1lbnQuY2FsbCh0aGlzLGZbMF0sdGhpcy4kZWxlbWVudFswXSk6dGhpcy5vcHRpb25zLnBsYWNlbWVudCxpPS9ccz9hdXRvP1xzPy9pLGo9aS50ZXN0KGgpO2omJihoPWgucmVwbGFjZShpLCIiKXx8InRvcCIpLGYuZGV0YWNoKCkuY3NzKHt0b3A6MCxsZWZ0OjAsZGlzcGxheToiYmxvY2sifSkuYWRkQ2xhc3MoaCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsdGhpcyksdGhpcy5vcHRpb25zLmNvbnRhaW5lcj9mLmFwcGVuZFRvKHRoaXMub3B0aW9ucy5jb250YWluZXIpOmYuaW5zZXJ0QWZ0ZXIodGhpcy4kZWxlbWVudCksdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJpbnNlcnRlZC5icy4iK3RoaXMudHlwZSk7dmFyIGs9dGhpcy5nZXRQb3NpdGlvbigpLGw9ZlswXS5vZmZzZXRXaWR0aCxtPWZbMF0ub2Zmc2V0SGVpZ2h0O2lmKGope3ZhciBuPWgsbz10aGlzLmdldFBvc2l0aW9uKHRoaXMuJHZpZXdwb3J0KTtoPSJib3R0b20iPT1oJiZrLmJvdHRvbSttPm8uYm90dG9tPyJ0b3AiOiJ0b3AiPT1oJiZrLnRvcC1tPG8udG9wPyJib3R0b20iOiJyaWdodCI9PWgmJmsucmlnaHQrbD5vLndpZHRoPyJsZWZ0IjoibGVmdCI9PWgmJmsubGVmdC1sPG8ubGVmdD8icmlnaHQiOmgsZi5yZW1vdmVDbGFzcyhuKS5hZGRDbGFzcyhoKX12YXIgcD10aGlzLmdldENhbGN1bGF0ZWRPZmZzZXQoaCxrLGwsbSk7dGhpcy5hcHBseVBsYWNlbWVudChwLGgpO3ZhciBxPWZ1bmN0aW9uKCl7dmFyIGE9ZS5ob3ZlclN0YXRlO2UuJGVsZW1lbnQudHJpZ2dlcigic2hvd24uYnMuIitlLnR5cGUpLGUuaG92ZXJTdGF0ZT1udWxsLCJvdXQiPT1hJiZlLmxlYXZlKGUpfTthLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kdGlwLmhhc0NsYXNzKCJmYWRlIik/Zi5vbmUoImJzVHJhbnNpdGlvbkVuZCIscSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTpxKCl9fSxjLnByb3RvdHlwZS5hcHBseVBsYWNlbWVudD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMudGlwKCksZT1kWzBdLm9mZnNldFdpZHRoLGY9ZFswXS5vZmZzZXRIZWlnaHQsZz1wYXJzZUludChkLmNzcygibWFyZ2luLXRvcCIpLDEwKSxoPXBhcnNlSW50KGQuY3NzKCJtYXJnaW4tbGVmdCIpLDEwKTtpc05hTihnKSYmKGc9MCksaXNOYU4oaCkmJihoPTApLGIudG9wKz1nLGIubGVmdCs9aCxhLm9mZnNldC5zZXRPZmZzZXQoZFswXSxhLmV4dGVuZCh7dXNpbmc6ZnVuY3Rpb24oYSl7ZC5jc3Moe3RvcDpNYXRoLnJvdW5kKGEudG9wKSxsZWZ0Ok1hdGgucm91bmQoYS5sZWZ0KX0pfX0sYiksMCksZC5hZGRDbGFzcygiaW4iKTt2YXIgaT1kWzBdLm9mZnNldFdpZHRoLGo9ZFswXS5vZmZzZXRIZWlnaHQ7InRvcCI9PWMmJmohPWYmJihiLnRvcD1iLnRvcCtmLWopO3ZhciBrPXRoaXMuZ2V0Vmlld3BvcnRBZGp1c3RlZERlbHRhKGMsYixpLGopO2subGVmdD9iLmxlZnQrPWsubGVmdDpiLnRvcCs9ay50b3A7dmFyIGw9L3RvcHxib3R0b20vLnRlc3QoYyksbT1sPzIqay5sZWZ0LWUraToyKmsudG9wLWYraixuPWw/Im9mZnNldFdpZHRoIjoib2Zmc2V0SGVpZ2h0IjtkLm9mZnNldChiKSx0aGlzLnJlcGxhY2VBcnJvdyhtLGRbMF1bbl0sbCl9LGMucHJvdG90eXBlLnJlcGxhY2VBcnJvdz1mdW5jdGlvbihhLGIsYyl7dGhpcy5hcnJvdygpLmNzcyhjPyJsZWZ0IjoidG9wIiw1MCooMS1hL2IpKyIlIikuY3NzKGM/InRvcCI6ImxlZnQiLCIiKX0sYy5wcm90b3R5cGUuc2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMudGlwKCksYj10aGlzLmdldFRpdGxlKCk7YS5maW5kKCIudG9vbHRpcC1pbm5lciIpW3RoaXMub3B0aW9ucy5odG1sPyJodG1sIjoidGV4dCJdKGIpLGEucmVtb3ZlQ2xhc3MoImZhZGUgaW4gdG9wIGJvdHRvbSBsZWZ0IHJpZ2h0Iil9LGMucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gZCgpeyJpbiIhPWUuaG92ZXJTdGF0ZSYmZi5kZXRhY2goKSxlLiRlbGVtZW50LnJlbW92ZUF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKS50cmlnZ2VyKCJoaWRkZW4uYnMuIitlLnR5cGUpLGImJmIoKX12YXIgZT10aGlzLGY9YSh0aGlzLiR0aXApLGc9YS5FdmVudCgiaGlkZS5icy4iK3RoaXMudHlwZSk7cmV0dXJuIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihnKSxnLmlzRGVmYXVsdFByZXZlbnRlZCgpP3ZvaWQgMDooZi5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmZi5oYXNDbGFzcygiZmFkZSIpP2Yub25lKCJic1RyYW5zaXRpb25FbmQiLGQpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6ZCgpLHRoaXMuaG92ZXJTdGF0ZT1udWxsLHRoaXMpfSxjLnByb3RvdHlwZS5maXhUaXRsZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQ7KGEuYXR0cigidGl0bGUiKXx8InN0cmluZyIhPXR5cGVvZiBhLmF0dHIoImRhdGEtb3JpZ2luYWwtdGl0bGUiKSkmJmEuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIsYS5hdHRyKCJ0aXRsZSIpfHwiIikuYXR0cigidGl0bGUiLCIiKX0sYy5wcm90b3R5cGUuaGFzQ29udGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRpdGxlKCl9LGMucHJvdG90eXBlLmdldFBvc2l0aW9uPWZ1bmN0aW9uKGIpe2I9Ynx8dGhpcy4kZWxlbWVudDt2YXIgYz1iWzBdLGQ9IkJPRFkiPT1jLnRhZ05hbWUsZT1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO251bGw9PWUud2lkdGgmJihlPWEuZXh0ZW5kKHt9LGUse3dpZHRoOmUucmlnaHQtZS5sZWZ0LGhlaWdodDplLmJvdHRvbS1lLnRvcH0pKTt2YXIgZj1kP3t0b3A6MCxsZWZ0OjB9OmIub2Zmc2V0KCksZz17c2Nyb2xsOmQ/ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A6Yi5zY3JvbGxUb3AoKX0saD1kP3t3aWR0aDphKHdpbmRvdykud2lkdGgoKSxoZWlnaHQ6YSh3aW5kb3cpLmhlaWdodCgpfTpudWxsO3JldHVybiBhLmV4dGVuZCh7fSxlLGcsaCxmKX0sYy5wcm90b3R5cGUuZ2V0Q2FsY3VsYXRlZE9mZnNldD1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4iYm90dG9tIj09YT97dG9wOmIudG9wK2IuaGVpZ2h0LGxlZnQ6Yi5sZWZ0K2Iud2lkdGgvMi1jLzJ9OiJ0b3AiPT1hP3t0b3A6Yi50b3AtZCxsZWZ0OmIubGVmdCtiLndpZHRoLzItYy8yfToibGVmdCI9PWE/e3RvcDpiLnRvcCtiLmhlaWdodC8yLWQvMixsZWZ0OmIubGVmdC1jfTp7dG9wOmIudG9wK2IuaGVpZ2h0LzItZC8yLGxlZnQ6Yi5sZWZ0K2Iud2lkdGh9fSxjLnByb3RvdHlwZS5nZXRWaWV3cG9ydEFkanVzdGVkRGVsdGE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9e3RvcDowLGxlZnQ6MH07aWYoIXRoaXMuJHZpZXdwb3J0KXJldHVybiBlO3ZhciBmPXRoaXMub3B0aW9ucy52aWV3cG9ydCYmdGhpcy5vcHRpb25zLnZpZXdwb3J0LnBhZGRpbmd8fDAsZz10aGlzLmdldFBvc2l0aW9uKHRoaXMuJHZpZXdwb3J0KTtpZigvcmlnaHR8bGVmdC8udGVzdChhKSl7dmFyIGg9Yi50b3AtZi1nLnNjcm9sbCxpPWIudG9wK2YtZy5zY3JvbGwrZDtoPGcudG9wP2UudG9wPWcudG9wLWg6aT5nLnRvcCtnLmhlaWdodCYmKGUudG9wPWcudG9wK2cuaGVpZ2h0LWkpfWVsc2V7dmFyIGo9Yi5sZWZ0LWYsaz1iLmxlZnQrZitjO2o8Zy5sZWZ0P2UubGVmdD1nLmxlZnQtajprPmcucmlnaHQmJihlLmxlZnQ9Zy5sZWZ0K2cud2lkdGgtayl9cmV0dXJuIGV9LGMucHJvdG90eXBlLmdldFRpdGxlPWZ1bmN0aW9uKCl7dmFyIGEsYj10aGlzLiRlbGVtZW50LGM9dGhpcy5vcHRpb25zO3JldHVybiBhPWIuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIpfHwoImZ1bmN0aW9uIj09dHlwZW9mIGMudGl0bGU/Yy50aXRsZS5jYWxsKGJbMF0pOmMudGl0bGUpfSxjLnByb3RvdHlwZS5nZXRVSUQ9ZnVuY3Rpb24oYSl7ZG8gYSs9fn4oMWU2Kk1hdGgucmFuZG9tKCkpO3doaWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpKTtyZXR1cm4gYX0sYy5wcm90b3R5cGUudGlwPWZ1bmN0aW9uKCl7aWYoIXRoaXMuJHRpcCYmKHRoaXMuJHRpcD1hKHRoaXMub3B0aW9ucy50ZW1wbGF0ZSksMSE9dGhpcy4kdGlwLmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKHRoaXMudHlwZSsiIGB0ZW1wbGF0ZWAgb3B0aW9uIG11c3QgY29uc2lzdCBvZiBleGFjdGx5IDEgdG9wLWxldmVsIGVsZW1lbnQhIik7cmV0dXJuIHRoaXMuJHRpcH0sYy5wcm90b3R5cGUuYXJyb3c9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kYXJyb3c9dGhpcy4kYXJyb3d8fHRoaXMudGlwKCkuZmluZCgiLnRvb2x0aXAtYXJyb3ciKX0sYy5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSEwfSxjLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSExfSxjLnByb3RvdHlwZS50b2dnbGVFbmFibGVkPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSF0aGlzLmVuYWJsZWR9LGMucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzO2ImJihjPWEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSksY3x8KGM9bmV3IHRoaXMuY29uc3RydWN0b3IoYi5jdXJyZW50VGFyZ2V0LHRoaXMuZ2V0RGVsZWdhdGVPcHRpb25zKCkpLGEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSxjKSkpLGI/KGMuaW5TdGF0ZS5jbGljaz0hYy5pblN0YXRlLmNsaWNrLGMuaXNJblN0YXRlVHJ1ZSgpP2MuZW50ZXIoYyk6Yy5sZWF2ZShjKSk6Yy50aXAoKS5oYXNDbGFzcygiaW4iKT9jLmxlYXZlKGMpOmMuZW50ZXIoYyl9LGMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2NsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpLHRoaXMuaGlkZShmdW5jdGlvbigpe2EuJGVsZW1lbnQub2ZmKCIuIithLnR5cGUpLnJlbW92ZURhdGEoImJzLiIrYS50eXBlKSxhLiR0aXAmJmEuJHRpcC5kZXRhY2goKSxhLiR0aXA9bnVsbCxhLiRhcnJvdz1udWxsLGEuJHZpZXdwb3J0PW51bGx9KX07dmFyIGQ9YS5mbi50b29sdGlwO2EuZm4udG9vbHRpcD1iLGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvcj1jLGEuZm4udG9vbHRpcC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4udG9vbHRpcD1kLHRoaXN9fShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMucG9wb3ZlciIpLGY9Im9iamVjdCI9PXR5cGVvZiBiJiZiOyhlfHwhL2Rlc3Ryb3l8aGlkZS8udGVzdChiKSkmJihlfHxkLmRhdGEoImJzLnBvcG92ZXIiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLmluaXQoInBvcG92ZXIiLGEsYil9O2lmKCFhLmZuLnRvb2x0aXApdGhyb3cgbmV3IEVycm9yKCJQb3BvdmVyIHJlcXVpcmVzIHRvb2x0aXAuanMiKTtjLlZFUlNJT049IjMuMy41IixjLkRFRkFVTFRTPWEuZXh0ZW5kKHt9LGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvci5ERUZBVUxUUyx7cGxhY2VtZW50OiJyaWdodCIsdHJpZ2dlcjoiY2xpY2siLGNvbnRlbnQ6IiIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InBvcG92ZXIiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48aDMgY2xhc3M9InBvcG92ZXItdGl0bGUiPjwvaDM+PGRpdiBjbGFzcz0icG9wb3Zlci1jb250ZW50Ij48L2Rpdj48L2Rpdj4nfSksYy5wcm90b3R5cGU9YS5leHRlbmQoe30sYS5mbi50b29sdGlwLkNvbnN0cnVjdG9yLnByb3RvdHlwZSksYy5wcm90b3R5cGUuY29uc3RydWN0b3I9YyxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5zZXRDb250ZW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50aXAoKSxiPXRoaXMuZ2V0VGl0bGUoKSxjPXRoaXMuZ2V0Q29udGVudCgpO2EuZmluZCgiLnBvcG92ZXItdGl0bGUiKVt0aGlzLm9wdGlvbnMuaHRtbD8iaHRtbCI6InRleHQiXShiKSxhLmZpbmQoIi5wb3BvdmVyLWNvbnRlbnQiKS5jaGlsZHJlbigpLmRldGFjaCgpLmVuZCgpW3RoaXMub3B0aW9ucy5odG1sPyJzdHJpbmciPT10eXBlb2YgYz8iaHRtbCI6ImFwcGVuZCI6InRleHQiXShjKSxhLnJlbW92ZUNsYXNzKCJmYWRlIHRvcCBib3R0b20gbGVmdCByaWdodCBpbiIpLGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5odG1sKCl8fGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5oaWRlKCl9LGMucHJvdG90eXBlLmhhc0NvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUaXRsZSgpfHx0aGlzLmdldENvbnRlbnQoKX0sYy5wcm90b3R5cGUuZ2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQsYj10aGlzLm9wdGlvbnM7cmV0dXJuIGEuYXR0cigiZGF0YS1jb250ZW50Iil8fCgiZnVuY3Rpb24iPT10eXBlb2YgYi5jb250ZW50P2IuY29udGVudC5jYWxsKGFbMF0pOmIuY29udGVudCl9LGMucHJvdG90eXBlLmFycm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGFycm93PXRoaXMuJGFycm93fHx0aGlzLnRpcCgpLmZpbmQoIi5hcnJvdyIpfTt2YXIgZD1hLmZuLnBvcG92ZXI7YS5mbi5wb3BvdmVyPWIsYS5mbi5wb3BvdmVyLkNvbnN0cnVjdG9yPWMsYS5mbi5wb3BvdmVyLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5wb3BvdmVyPWQsdGhpc319KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGMsZCl7dGhpcy4kYm9keT1hKGRvY3VtZW50LmJvZHkpLHRoaXMuJHNjcm9sbEVsZW1lbnQ9YShhKGMpLmlzKGRvY3VtZW50LmJvZHkpP3dpbmRvdzpjKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sYi5ERUZBVUxUUyxkKSx0aGlzLnNlbGVjdG9yPSh0aGlzLm9wdGlvbnMudGFyZ2V0fHwiIikrIiAubmF2IGxpID4gYSIsdGhpcy5vZmZzZXRzPVtdLHRoaXMudGFyZ2V0cz1bXSx0aGlzLmFjdGl2ZVRhcmdldD1udWxsLHRoaXMuc2Nyb2xsSGVpZ2h0PTAsdGhpcy4kc2Nyb2xsRWxlbWVudC5vbigic2Nyb2xsLmJzLnNjcm9sbHNweSIsYS5wcm94eSh0aGlzLnByb2Nlc3MsdGhpcykpLHRoaXMucmVmcmVzaCgpLHRoaXMucHJvY2VzcygpfWZ1bmN0aW9uIGMoYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLnNjcm9sbHNweSIpLGY9Im9iamVjdCI9PXR5cGVvZiBjJiZjO2V8fGQuZGF0YSgiYnMuc2Nyb2xsc3B5IixlPW5ldyBiKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYyYmZVtjXSgpfSl9Yi5WRVJTSU9OPSIzLjMuNSIsYi5ERUZBVUxUUz17b2Zmc2V0OjEwfSxiLnByb3RvdHlwZS5nZXRTY3JvbGxIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2Nyb2xsRWxlbWVudFswXS5zY3JvbGxIZWlnaHR8fE1hdGgubWF4KHRoaXMuJGJvZHlbMF0uc2Nyb2xsSGVpZ2h0LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpfSxiLnByb3RvdHlwZS5yZWZyZXNoPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPSJvZmZzZXQiLGQ9MDt0aGlzLm9mZnNldHM9W10sdGhpcy50YXJnZXRzPVtdLHRoaXMuc2Nyb2xsSGVpZ2h0PXRoaXMuZ2V0U2Nyb2xsSGVpZ2h0KCksYS5pc1dpbmRvdyh0aGlzLiRzY3JvbGxFbGVtZW50WzBdKXx8KGM9InBvc2l0aW9uIixkPXRoaXMuJHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9wKCkpLHRoaXMuJGJvZHkuZmluZCh0aGlzLnNlbGVjdG9yKS5tYXAoZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLGU9Yi5kYXRhKCJ0YXJnZXQiKXx8Yi5hdHRyKCJocmVmIiksZj0vXiMuLy50ZXN0KGUpJiZhKGUpO3JldHVybiBmJiZmLmxlbmd0aCYmZi5pcygiOnZpc2libGUiKSYmW1tmW2NdKCkudG9wK2QsZV1dfHxudWxsfSkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhWzBdLWJbMF19KS5lYWNoKGZ1bmN0aW9uKCl7Yi5vZmZzZXRzLnB1c2godGhpc1swXSksYi50YXJnZXRzLnB1c2godGhpc1sxXSl9KX0sYi5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbigpe3ZhciBhLGI9dGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSt0aGlzLm9wdGlvbnMub2Zmc2V0LGM9dGhpcy5nZXRTY3JvbGxIZWlnaHQoKSxkPXRoaXMub3B0aW9ucy5vZmZzZXQrYy10aGlzLiRzY3JvbGxFbGVtZW50LmhlaWdodCgpLGU9dGhpcy5vZmZzZXRzLGY9dGhpcy50YXJnZXRzLGc9dGhpcy5hY3RpdmVUYXJnZXQ7aWYodGhpcy5zY3JvbGxIZWlnaHQhPWMmJnRoaXMucmVmcmVzaCgpLGI+PWQpcmV0dXJuIGchPShhPWZbZi5sZW5ndGgtMV0pJiZ0aGlzLmFjdGl2YXRlKGEpO2lmKGcmJmI8ZVswXSlyZXR1cm4gdGhpcy5hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLmNsZWFyKCk7Zm9yKGE9ZS5sZW5ndGg7YS0tOylnIT1mW2FdJiZiPj1lW2FdJiYodm9pZCAwPT09ZVthKzFdfHxiPGVbYSsxXSkmJnRoaXMuYWN0aXZhdGUoZlthXSl9LGIucHJvdG90eXBlLmFjdGl2YXRlPWZ1bmN0aW9uKGIpe3RoaXMuYWN0aXZlVGFyZ2V0PWIsdGhpcy5jbGVhcigpO3ZhciBjPXRoaXMuc2VsZWN0b3IrJ1tkYXRhLXRhcmdldD0iJytiKyciXSwnK3RoaXMuc2VsZWN0b3IrJ1tocmVmPSInK2IrJyJdJyxkPWEoYykucGFyZW50cygibGkiKS5hZGRDbGFzcygiYWN0aXZlIik7ZC5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikubGVuZ3RoJiYoZD1kLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpKSwKZC50cmlnZ2VyKCJhY3RpdmF0ZS5icy5zY3JvbGxzcHkiKX0sYi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXthKHRoaXMuc2VsZWN0b3IpLnBhcmVudHNVbnRpbCh0aGlzLm9wdGlvbnMudGFyZ2V0LCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpfTt2YXIgZD1hLmZuLnNjcm9sbHNweTthLmZuLnNjcm9sbHNweT1jLGEuZm4uc2Nyb2xsc3B5LkNvbnN0cnVjdG9yPWIsYS5mbi5zY3JvbGxzcHkubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnNjcm9sbHNweT1kLHRoaXN9LGEod2luZG93KS5vbigibG9hZC5icy5zY3JvbGxzcHkuZGF0YS1hcGkiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJzY3JvbGwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpO2MuY2FsbChiLGIuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50YWIiKTtlfHxkLmRhdGEoImJzLnRhYiIsZT1uZXcgYyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCl9KX12YXIgYz1mdW5jdGlvbihiKXt0aGlzLmVsZW1lbnQ9YShiKX07Yy5WRVJTSU9OPSIzLjMuNSIsYy5UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5lbGVtZW50LGM9Yi5jbG9zZXN0KCJ1bDpub3QoLmRyb3Bkb3duLW1lbnUpIiksZD1iLmRhdGEoInRhcmdldCIpO2lmKGR8fChkPWIuYXR0cigiaHJlZiIpLGQ9ZCYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sIiIpKSwhYi5wYXJlbnQoImxpIikuaGFzQ2xhc3MoImFjdGl2ZSIpKXt2YXIgZT1jLmZpbmQoIi5hY3RpdmU6bGFzdCBhIiksZj1hLkV2ZW50KCJoaWRlLmJzLnRhYiIse3JlbGF0ZWRUYXJnZXQ6YlswXX0pLGc9YS5FdmVudCgic2hvdy5icy50YWIiLHtyZWxhdGVkVGFyZ2V0OmVbMF19KTtpZihlLnRyaWdnZXIoZiksYi50cmlnZ2VyKGcpLCFnLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGg9YShkKTt0aGlzLmFjdGl2YXRlKGIuY2xvc2VzdCgibGkiKSxjKSx0aGlzLmFjdGl2YXRlKGgsaC5wYXJlbnQoKSxmdW5jdGlvbigpe2UudHJpZ2dlcih7dHlwZToiaGlkZGVuLmJzLnRhYiIscmVsYXRlZFRhcmdldDpiWzBdfSksYi50cmlnZ2VyKHt0eXBlOiJzaG93bi5icy50YWIiLHJlbGF0ZWRUYXJnZXQ6ZVswXX0pfSl9fX0sYy5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24oYixkLGUpe2Z1bmN0aW9uIGYoKXtnLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5maW5kKCI+IC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5lbmQoKS5maW5kKCdbZGF0YS10b2dnbGU9InRhYiJdJykuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLGIuYWRkQ2xhc3MoImFjdGl2ZSIpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksaD8oYlswXS5vZmZzZXRXaWR0aCxiLmFkZENsYXNzKCJpbiIpKTpiLnJlbW92ZUNsYXNzKCJmYWRlIiksYi5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikubGVuZ3RoJiZiLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpLmVuZCgpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksZSYmZSgpfXZhciBnPWQuZmluZCgiPiAuYWN0aXZlIiksaD1lJiZhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGcubGVuZ3RoJiZnLmhhc0NsYXNzKCJmYWRlIil8fCEhZC5maW5kKCI+IC5mYWRlIikubGVuZ3RoKTtnLmxlbmd0aCYmaD9nLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLlRSQU5TSVRJT05fRFVSQVRJT04pOmYoKSxnLnJlbW92ZUNsYXNzKCJpbiIpfTt2YXIgZD1hLmZuLnRhYjthLmZuLnRhYj1iLGEuZm4udGFiLkNvbnN0cnVjdG9yPWMsYS5mbi50YWIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnRhYj1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKSxiLmNhbGwoYSh0aGlzKSwic2hvdyIpfTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMudGFiLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJ0YWIiXScsZSkub24oImNsaWNrLmJzLnRhYi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0icGlsbCJdJyxlKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmFmZml4IiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5hZmZpeCIsZT1uZXcgYyh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBjPWZ1bmN0aW9uKGIsZCl7dGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy4kdGFyZ2V0PWEodGhpcy5vcHRpb25zLnRhcmdldCkub24oInNjcm9sbC5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb24sdGhpcykpLm9uKCJjbGljay5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb25XaXRoRXZlbnRMb29wLHRoaXMpKSx0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5hZmZpeGVkPW51bGwsdGhpcy51bnBpbj1udWxsLHRoaXMucGlubmVkT2Zmc2V0PW51bGwsdGhpcy5jaGVja1Bvc2l0aW9uKCl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuUkVTRVQ9ImFmZml4IGFmZml4LXRvcCBhZmZpeC1ib3R0b20iLGMuREVGQVVMVFM9e29mZnNldDowLHRhcmdldDp3aW5kb3d9LGMucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMuJHRhcmdldC5zY3JvbGxUb3AoKSxmPXRoaXMuJGVsZW1lbnQub2Zmc2V0KCksZz10aGlzLiR0YXJnZXQuaGVpZ2h0KCk7aWYobnVsbCE9YyYmInRvcCI9PXRoaXMuYWZmaXhlZClyZXR1cm4gYz5lPyJ0b3AiOiExO2lmKCJib3R0b20iPT10aGlzLmFmZml4ZWQpcmV0dXJuIG51bGwhPWM/ZSt0aGlzLnVucGluPD1mLnRvcD8hMToiYm90dG9tIjphLWQ+PWUrZz8hMToiYm90dG9tIjt2YXIgaD1udWxsPT10aGlzLmFmZml4ZWQsaT1oP2U6Zi50b3Asaj1oP2c6YjtyZXR1cm4gbnVsbCE9YyYmYz49ZT8idG9wIjpudWxsIT1kJiZpK2o+PWEtZD8iYm90dG9tIjohMX0sYy5wcm90b3R5cGUuZ2V0UGlubmVkT2Zmc2V0PWZ1bmN0aW9uKCl7aWYodGhpcy5waW5uZWRPZmZzZXQpcmV0dXJuIHRoaXMucGlubmVkT2Zmc2V0O3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoYy5SRVNFVCkuYWRkQ2xhc3MoImFmZml4Iik7dmFyIGE9dGhpcy4kdGFyZ2V0LnNjcm9sbFRvcCgpLGI9dGhpcy4kZWxlbWVudC5vZmZzZXQoKTtyZXR1cm4gdGhpcy5waW5uZWRPZmZzZXQ9Yi50b3AtYX0sYy5wcm90b3R5cGUuY2hlY2tQb3NpdGlvbldpdGhFdmVudExvb3A9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGEucHJveHkodGhpcy5jaGVja1Bvc2l0aW9uLHRoaXMpLDEpfSxjLnByb3RvdHlwZS5jaGVja1Bvc2l0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy4kZWxlbWVudC5pcygiOnZpc2libGUiKSl7dmFyIGI9dGhpcy4kZWxlbWVudC5oZWlnaHQoKSxkPXRoaXMub3B0aW9ucy5vZmZzZXQsZT1kLnRvcCxmPWQuYm90dG9tLGc9TWF0aC5tYXgoYShkb2N1bWVudCkuaGVpZ2h0KCksYShkb2N1bWVudC5ib2R5KS5oZWlnaHQoKSk7Im9iamVjdCIhPXR5cGVvZiBkJiYoZj1lPWQpLCJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1kLnRvcCh0aGlzLiRlbGVtZW50KSksImZ1bmN0aW9uIj09dHlwZW9mIGYmJihmPWQuYm90dG9tKHRoaXMuJGVsZW1lbnQpKTt2YXIgaD10aGlzLmdldFN0YXRlKGcsYixlLGYpO2lmKHRoaXMuYWZmaXhlZCE9aCl7bnVsbCE9dGhpcy51bnBpbiYmdGhpcy4kZWxlbWVudC5jc3MoInRvcCIsIiIpO3ZhciBpPSJhZmZpeCIrKGg/Ii0iK2g6IiIpLGo9YS5FdmVudChpKyIuYnMuYWZmaXgiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoaiksai5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47dGhpcy5hZmZpeGVkPWgsdGhpcy51bnBpbj0iYm90dG9tIj09aD90aGlzLmdldFBpbm5lZE9mZnNldCgpOm51bGwsdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhjLlJFU0VUKS5hZGRDbGFzcyhpKS50cmlnZ2VyKGkucmVwbGFjZSgiYWZmaXgiLCJhZmZpeGVkIikrIi5icy5hZmZpeCIpfSJib3R0b20iPT1oJiZ0aGlzLiRlbGVtZW50Lm9mZnNldCh7dG9wOmctYi1mfSl9fTt2YXIgZD1hLmZuLmFmZml4O2EuZm4uYWZmaXg9YixhLmZuLmFmZml4LkNvbnN0cnVjdG9yPWMsYS5mbi5hZmZpeC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYWZmaXg9ZCx0aGlzfSxhKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJhZmZpeCJdJykuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLmRhdGEoKTtkLm9mZnNldD1kLm9mZnNldHx8e30sbnVsbCE9ZC5vZmZzZXRCb3R0b20mJihkLm9mZnNldC5ib3R0b209ZC5vZmZzZXRCb3R0b20pLG51bGwhPWQub2Zmc2V0VG9wJiYoZC5vZmZzZXQudG9wPWQub2Zmc2V0VG9wKSxiLmNhbGwoYyxkKX0pfSl9KGpRdWVyeSk7"></script>
<script src="data:application/javascript;base64,LyoqCiogQHByZXNlcnZlIEhUTUw1IFNoaXYgMy43LjIgfCBAYWZhcmthcyBAamRhbHRvbiBAam9uX25lYWwgQHJlbSB8IE1JVC9HUEwyIExpY2Vuc2VkCiovCi8vIE9ubHkgcnVuIHRoaXMgY29kZSBpbiBJRSA4CmlmICghIXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKCJNU0lFIDgiKSkgewohZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7dmFyIGM9YS5jcmVhdGVFbGVtZW50KCJwIiksZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGEuZG9jdW1lbnRFbGVtZW50O3JldHVybiBjLmlubmVySFRNTD0ieDxzdHlsZT4iK2IrIjwvc3R5bGU+IixkLmluc2VydEJlZm9yZShjLmxhc3RDaGlsZCxkLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGQoKXt2YXIgYT10LmVsZW1lbnRzO3JldHVybiJzdHJpbmciPT10eXBlb2YgYT9hLnNwbGl0KCIgIik6YX1mdW5jdGlvbiBlKGEsYil7dmFyIGM9dC5lbGVtZW50czsic3RyaW5nIiE9dHlwZW9mIGMmJihjPWMuam9pbigiICIpKSwic3RyaW5nIiE9dHlwZW9mIGEmJihhPWEuam9pbigiICIpKSx0LmVsZW1lbnRzPWMrIiAiK2EsaihiKX1mdW5jdGlvbiBmKGEpe3ZhciBiPXNbYVtxXV07cmV0dXJuIGJ8fChiPXt9LHIrKyxhW3FdPXIsc1tyXT1iKSxifWZ1bmN0aW9uIGcoYSxjLGQpe2lmKGN8fChjPWIpLGwpcmV0dXJuIGMuY3JlYXRlRWxlbWVudChhKTtkfHwoZD1mKGMpKTt2YXIgZTtyZXR1cm4gZT1kLmNhY2hlW2FdP2QuY2FjaGVbYV0uY2xvbmVOb2RlKCk6cC50ZXN0KGEpPyhkLmNhY2hlW2FdPWQuY3JlYXRlRWxlbShhKSkuY2xvbmVOb2RlKCk6ZC5jcmVhdGVFbGVtKGEpLCFlLmNhbkhhdmVDaGlsZHJlbnx8by50ZXN0KGEpfHxlLnRhZ1Vybj9lOmQuZnJhZy5hcHBlbmRDaGlsZChlKX1mdW5jdGlvbiBoKGEsYyl7aWYoYXx8KGE9YiksbClyZXR1cm4gYS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Yz1jfHxmKGEpO2Zvcih2YXIgZT1jLmZyYWcuY2xvbmVOb2RlKCksZz0wLGg9ZCgpLGk9aC5sZW5ndGg7aT5nO2crKyllLmNyZWF0ZUVsZW1lbnQoaFtnXSk7cmV0dXJuIGV9ZnVuY3Rpb24gaShhLGIpe2IuY2FjaGV8fChiLmNhY2hlPXt9LGIuY3JlYXRlRWxlbT1hLmNyZWF0ZUVsZW1lbnQsYi5jcmVhdGVGcmFnPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxiLmZyYWc9Yi5jcmVhdGVGcmFnKCkpLGEuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihjKXtyZXR1cm4gdC5zaGl2TWV0aG9kcz9nKGMsYSxiKTpiLmNyZWF0ZUVsZW0oYyl9LGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudD1GdW5jdGlvbigiaCxmIiwicmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49Zi5jbG9uZU5vZGUoKSxjPW4uY3JlYXRlRWxlbWVudDtoLnNoaXZNZXRob2RzJiYoIitkKCkuam9pbigpLnJlcGxhY2UoL1tcd1wtOl0rL2csZnVuY3Rpb24oYSl7cmV0dXJuIGIuY3JlYXRlRWxlbShhKSxiLmZyYWcuY3JlYXRlRWxlbWVudChhKSwnYygiJythKyciKSd9KSsiKTtyZXR1cm4gbn0iKSh0LGIuZnJhZyl9ZnVuY3Rpb24gaihhKXthfHwoYT1iKTt2YXIgZD1mKGEpO3JldHVybiF0LnNoaXZDU1N8fGt8fGQuaGFzQ1NTfHwoZC5oYXNDU1M9ISFjKGEsImFydGljbGUsYXNpZGUsZGlhbG9nLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsaGdyb3VwLG1haW4sbmF2LHNlY3Rpb257ZGlzcGxheTpibG9ja31tYXJre2JhY2tncm91bmQ6I0ZGMDtjb2xvcjojMDAwfXRlbXBsYXRle2Rpc3BsYXk6bm9uZX0iKSksbHx8aShhLGQpLGF9dmFyIGssbCxtPSIzLjcuMiIsbj1hLmh0bWw1fHx7fSxvPS9ePHxeKD86YnV0dG9ufG1hcHxzZWxlY3R8dGV4dGFyZWF8b2JqZWN0fGlmcmFtZXxvcHRpb258b3B0Z3JvdXApJC9pLHA9L14oPzphfGJ8Y29kZXxkaXZ8ZmllbGRzZXR8aDF8aDJ8aDN8aDR8aDV8aDZ8aXxsYWJlbHxsaXxvbHxwfHF8c3BhbnxzdHJvbmd8c3R5bGV8dGFibGV8dGJvZHl8dGR8dGh8dHJ8dWwpJC9pLHE9Il9odG1sNXNoaXYiLHI9MCxzPXt9OyFmdW5jdGlvbigpe3RyeXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImEiKTthLmlubmVySFRNTD0iPHh5ej48L3h5ej4iLGs9ImhpZGRlbiJpbiBhLGw9MT09YS5jaGlsZE5vZGVzLmxlbmd0aHx8ZnVuY3Rpb24oKXtiLmNyZWF0ZUVsZW1lbnQoImEiKTt2YXIgYT1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGEuY2xvbmVOb2RlfHwidW5kZWZpbmVkIj09dHlwZW9mIGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudHx8InVuZGVmaW5lZCI9PXR5cGVvZiBhLmNyZWF0ZUVsZW1lbnR9KCl9Y2F0Y2goYyl7az0hMCxsPSEwfX0oKTt2YXIgdD17ZWxlbWVudHM6bi5lbGVtZW50c3x8ImFiYnIgYXJ0aWNsZSBhc2lkZSBhdWRpbyBiZGkgY2FudmFzIGRhdGEgZGF0YWxpc3QgZGV0YWlscyBkaWFsb2cgZmlnY2FwdGlvbiBmaWd1cmUgZm9vdGVyIGhlYWRlciBoZ3JvdXAgbWFpbiBtYXJrIG1ldGVyIG5hdiBvdXRwdXQgcGljdHVyZSBwcm9ncmVzcyBzZWN0aW9uIHN1bW1hcnkgdGVtcGxhdGUgdGltZSB2aWRlbyIsdmVyc2lvbjptLHNoaXZDU1M6bi5zaGl2Q1NTIT09ITEsc3VwcG9ydHNVbmtub3duRWxlbWVudHM6bCxzaGl2TWV0aG9kczpuLnNoaXZNZXRob2RzIT09ITEsdHlwZToiZGVmYXVsdCIsc2hpdkRvY3VtZW50OmosY3JlYXRlRWxlbWVudDpnLGNyZWF0ZURvY3VtZW50RnJhZ21lbnQ6aCxhZGRFbGVtZW50czplfTthLmh0bWw1PXQsaihiKX0odGhpcyxkb2N1bWVudCk7Cn07Cg=="></script>
<script src="data:application/javascript;base64,LyohIFJlc3BvbmQuanMgdjEuNC4yOiBtaW4vbWF4LXdpZHRoIG1lZGlhIHF1ZXJ5IHBvbHlmaWxsICogQ29weXJpZ2h0IDIwMTMgU2NvdHQgSmVobAogKiBMaWNlbnNlZCB1bmRlciBodHRwczovL2dpdGh1Yi5jb20vc2NvdHRqZWhsL1Jlc3BvbmQvYmxvYi9tYXN0ZXIvTElDRU5TRS1NSVQKICogICovCgovLyBPbmx5IHJ1biB0aGlzIGNvZGUgaW4gSUUgOAppZiAoISF3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgiTVNJRSA4IikpIHsKIWZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjthLm1hdGNoTWVkaWE9YS5tYXRjaE1lZGlhfHxmdW5jdGlvbihhKXt2YXIgYixjPWEuZG9jdW1lbnRFbGVtZW50LGQ9Yy5maXJzdEVsZW1lbnRDaGlsZHx8Yy5maXJzdENoaWxkLGU9YS5jcmVhdGVFbGVtZW50KCJib2R5IiksZj1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBmLmlkPSJtcS10ZXN0LTEiLGYuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7dG9wOi0xMDBlbSIsZS5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIixlLmFwcGVuZENoaWxkKGYpLGZ1bmN0aW9uKGEpe3JldHVybiBmLmlubmVySFRNTD0nJnNoeTs8c3R5bGUgbWVkaWE9IicrYSsnIj4gI21xLXRlc3QtMSB7IHdpZHRoOiA0MnB4OyB9PC9zdHlsZT4nLGMuaW5zZXJ0QmVmb3JlKGUsZCksYj00Mj09PWYub2Zmc2V0V2lkdGgsYy5yZW1vdmVDaGlsZChlKSx7bWF0Y2hlczpiLG1lZGlhOmF9fX0oYS5kb2N1bWVudCl9KHRoaXMpLGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dSghMCl9dmFyIGM9e307YS5yZXNwb25kPWMsYy51cGRhdGU9ZnVuY3Rpb24oKXt9O3ZhciBkPVtdLGU9ZnVuY3Rpb24oKXt2YXIgYj0hMTt0cnl7Yj1uZXcgYS5YTUxIdHRwUmVxdWVzdH1jYXRjaChjKXtiPW5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGJ9fSgpLGY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1lKCk7YyYmKGMub3BlbigiR0VUIixhLCEwKSxjLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQhPT1jLnJlYWR5U3RhdGV8fDIwMCE9PWMuc3RhdHVzJiYzMDQhPT1jLnN0YXR1c3x8YihjLnJlc3BvbnNlVGV4dCl9LDQhPT1jLnJlYWR5U3RhdGUmJmMuc2VuZChudWxsKSl9O2lmKGMuYWpheD1mLGMucXVldWU9ZCxjLnJlZ2V4PXttZWRpYTovQG1lZGlhW15ce10rXHsoW15ce1x9XSpce1teXH1ce10qXH0pKy9naSxrZXlmcmFtZXM6L0AoPzpcLSg/Om98bW96fHdlYmtpdClcLSk/a2V5ZnJhbWVzW15ce10rXHsoPzpbXlx7XH1dKlx7W15cfVx7XSpcfSkrW15cfV0qXH0vZ2ksdXJsczovKHVybFwoKVsnIl0/KFteXC9cKSciXVteOlwpJyJdKylbJyJdPyhcKSkvZyxmaW5kU3R5bGVzOi9AbWVkaWEgKihbXlx7XSspXHsoW1xTXHNdKz8pJC8sb25seTovKG9ubHlccyspPyhbYS16QS1aXSspXHM/LyxtaW53Oi9cKFtcc10qbWluXC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpLyxtYXh3Oi9cKFtcc10qbWF4XC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpL30sYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQ9YS5tYXRjaE1lZGlhJiZudWxsIT09YS5tYXRjaE1lZGlhKCJvbmx5IGFsbCIpJiZhLm1hdGNoTWVkaWEoIm9ubHkgYWxsIikubWF0Y2hlcywhYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQpe3ZhciBnLGgsaSxqPWEuZG9jdW1lbnQsaz1qLmRvY3VtZW50RWxlbWVudCxsPVtdLG09W10sbj1bXSxvPXt9LHA9MzAscT1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGsscj1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJiYXNlIilbMF0scz1xLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIiksdD1mdW5jdGlvbigpe3ZhciBhLGI9ai5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPWouYm9keSxkPWsuc3R5bGUuZm9udFNpemUsZT1jJiZjLnN0eWxlLmZvbnRTaXplLGY9ITE7cmV0dXJuIGIuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Zm9udC1zaXplOjFlbTt3aWR0aDoxZW0iLGN8fChjPWY9ai5jcmVhdGVFbGVtZW50KCJib2R5IiksYy5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIiksay5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5hcHBlbmRDaGlsZChiKSxmJiZrLmluc2VydEJlZm9yZShjLGsuZmlyc3RDaGlsZCksYT1iLm9mZnNldFdpZHRoLGY/ay5yZW1vdmVDaGlsZChjKTpjLnJlbW92ZUNoaWxkKGIpLGsuc3R5bGUuZm9udFNpemU9ZCxlJiYoYy5zdHlsZS5mb250U2l6ZT1lKSxhPWk9cGFyc2VGbG9hdChhKX0sdT1mdW5jdGlvbihiKXt2YXIgYz0iY2xpZW50V2lkdGgiLGQ9a1tjXSxlPSJDU1MxQ29tcGF0Ij09PWouY29tcGF0TW9kZSYmZHx8ai5ib2R5W2NdfHxkLGY9e30sbz1zW3MubGVuZ3RoLTFdLHI9KG5ldyBEYXRlKS5nZXRUaW1lKCk7aWYoYiYmZyYmcD5yLWcpcmV0dXJuIGEuY2xlYXJUaW1lb3V0KGgpLGg9YS5zZXRUaW1lb3V0KHUscCksdm9pZCAwO2c9cjtmb3IodmFyIHYgaW4gbClpZihsLmhhc093blByb3BlcnR5KHYpKXt2YXIgdz1sW3ZdLHg9dy5taW53LHk9dy5tYXh3LHo9bnVsbD09PXgsQT1udWxsPT09eSxCPSJlbSI7eCYmKHg9cGFyc2VGbG9hdCh4KSooeC5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSkseSYmKHk9cGFyc2VGbG9hdCh5KSooeS5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSksdy5oYXNxdWVyeSYmKHomJkF8fCEoenx8ZT49eCl8fCEoQXx8eT49ZSkpfHwoZlt3Lm1lZGlhXXx8KGZbdy5tZWRpYV09W10pLGZbdy5tZWRpYV0ucHVzaChtW3cucnVsZXNdKSl9Zm9yKHZhciBDIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShDKSYmbltDXSYmbltDXS5wYXJlbnROb2RlPT09cSYmcS5yZW1vdmVDaGlsZChuW0NdKTtuLmxlbmd0aD0wO2Zvcih2YXIgRCBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoRCkpe3ZhciBFPWouY3JlYXRlRWxlbWVudCgic3R5bGUiKSxGPWZbRF0uam9pbigiXG4iKTtFLnR5cGU9InRleHQvY3NzIixFLm1lZGlhPUQscS5pbnNlcnRCZWZvcmUoRSxvLm5leHRTaWJsaW5nKSxFLnN0eWxlU2hlZXQ/RS5zdHlsZVNoZWV0LmNzc1RleHQ9RjpFLmFwcGVuZENoaWxkKGouY3JlYXRlVGV4dE5vZGUoRikpLG4ucHVzaChFKX19LHY9ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPWEucmVwbGFjZShjLnJlZ2V4LmtleWZyYW1lcywiIikubWF0Y2goYy5yZWdleC5tZWRpYSksZj1lJiZlLmxlbmd0aHx8MDtiPWIuc3Vic3RyaW5nKDAsYi5sYXN0SW5kZXhPZigiLyIpKTt2YXIgZz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGMucmVnZXgudXJscywiJDEiK2IrIiQyJDMiKX0saD0hZiYmZDtiLmxlbmd0aCYmKGIrPSIvIiksaCYmKGY9MSk7Zm9yKHZhciBpPTA7Zj5pO2krKyl7dmFyIGosayxuLG87aD8oaj1kLG0ucHVzaChnKGEpKSk6KGo9ZVtpXS5tYXRjaChjLnJlZ2V4LmZpbmRTdHlsZXMpJiZSZWdFeHAuJDEsbS5wdXNoKFJlZ0V4cC4kMiYmZyhSZWdFeHAuJDIpKSksbj1qLnNwbGl0KCIsIiksbz1uLmxlbmd0aDtmb3IodmFyIHA9MDtvPnA7cCsrKWs9bltwXSxsLnB1c2goe21lZGlhOmsuc3BsaXQoIigiKVswXS5tYXRjaChjLnJlZ2V4Lm9ubHkpJiZSZWdFeHAuJDJ8fCJhbGwiLHJ1bGVzOm0ubGVuZ3RoLTEsaGFzcXVlcnk6ay5pbmRleE9mKCIoIik+LTEsbWludzprLm1hdGNoKGMucmVnZXgubWludykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIiksbWF4dzprLm1hdGNoKGMucmVnZXgubWF4dykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIil9KX11KCl9LHc9ZnVuY3Rpb24oKXtpZihkLmxlbmd0aCl7dmFyIGI9ZC5zaGlmdCgpO2YoYi5ocmVmLGZ1bmN0aW9uKGMpe3YoYyxiLmhyZWYsYi5tZWRpYSksb1tiLmhyZWZdPSEwLGEuc2V0VGltZW91dChmdW5jdGlvbigpe3coKX0sMCl9KX19LHg9ZnVuY3Rpb24oKXtmb3IodmFyIGI9MDtiPHMubGVuZ3RoO2IrKyl7dmFyIGM9c1tiXSxlPWMuaHJlZixmPWMubWVkaWEsZz1jLnJlbCYmInN0eWxlc2hlZXQiPT09Yy5yZWwudG9Mb3dlckNhc2UoKTtlJiZnJiYhb1tlXSYmKGMuc3R5bGVTaGVldCYmYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQ/KHYoYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQsZSxmKSxvW2VdPSEwKTooIS9eKFthLXpBLVo6XSpcL1wvKS8udGVzdChlKSYmIXJ8fGUucmVwbGFjZShSZWdFeHAuJDEsIiIpLnNwbGl0KCIvIilbMF09PT1hLmxvY2F0aW9uLmhvc3QpJiYoIi8vIj09PWUuc3Vic3RyaW5nKDAsMikmJihlPWEubG9jYXRpb24ucHJvdG9jb2wrZSksZC5wdXNoKHtocmVmOmUsbWVkaWE6Zn0pKSl9dygpfTt4KCksYy51cGRhdGU9eCxjLmdldEVtVmFsdWU9dCxhLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLGIsITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9ucmVzaXplIixiKX19KHRoaXMpOwp9Owo="></script>
<style>h1 {font-size: 34px;}
       h1.title {font-size: 38px;}
       h2 {font-size: 30px;}
       h3 {font-size: 24px;}
       h4 {font-size: 18px;}
       h5 {font-size: 16px;}
       h6 {font-size: 12px;}
       code {color: inherit; background-color: rgba(0, 0, 0, 0.04);}
       pre:not([class]) { background-color: white }</style>
<link href="data:text/css,%2Epagedtable%20%7B%0Aoverflow%3A%20auto%3B%0Apadding%2Dleft%3A%208px%3B%0Apadding%2Dright%3A%208px%3B%0A%7D%0A%2Epagedtable%2Dwrapper%20%7B%0Aborder%3A%201px%20solid%20%23ccc%3B%0Aborder%2Dradius%3A%204px%3B%0Amargin%2Dbottom%3A%2010px%3B%0A%7D%0A%2Epagedtable%20table%20%7B%0Awidth%3A%20100%25%3B%0Amax%2Dwidth%3A%20100%25%3B%0Amargin%3A%200%3B%0A%7D%0A%2Epagedtable%20th%20%7B%0Apadding%3A%200%205px%200%205px%3B%0Aborder%3A%20none%3B%0Aborder%2Dbottom%3A%202px%20solid%20%23dddddd%3B%0Amin%2Dwidth%3A%2045px%3B%0A%7D%0A%2Epagedtable%2Dempty%20th%20%7B%0Adisplay%3A%20none%3B%0A%7D%0A%2Epagedtable%20td%20%7B%0Apadding%3A%200%204px%200%204px%3B%0A%7D%0A%2Epagedtable%20%2Eeven%20%7B%0Abackground%2Dcolor%3A%20rgba%28140%2C%20140%2C%20140%2C%200%2E1%29%3B%0A%7D%0A%2Epagedtable%2Dpadding%2Dcol%20%7B%0Adisplay%3A%20none%3B%0A%7D%0A%2Epagedtable%20a%20%7B%0A%2Dwebkit%2Dtouch%2Dcallout%3A%20none%3B%0A%2Dwebkit%2Duser%2Dselect%3A%20none%3B%0A%2Dkhtml%2Duser%2Dselect%3A%20none%3B%0A%2Dmoz%2Duser%2Dselect%3A%20none%3B%0A%2Dms%2Duser%2Dselect%3A%20none%3B%0Auser%2Dselect%3A%20none%3B%0A%7D%0A%2Epagedtable%2Dindex%2Dnav%20%7B%0Acursor%3A%20pointer%3B%0Apadding%3A%200%205px%200%205px%3B%0Afloat%3A%20right%3B%0Aborder%3A%200%3B%0A%7D%0A%2Epagedtable%2Dindex%2Dnav%2Ddisabled%20%7B%0Acursor%3A%20default%3B%0Atext%2Ddecoration%3A%20none%3B%0Acolor%3A%20%23999%3B%0A%7D%0Aa%2Epagedtable%2Dindex%2Dnav%2Ddisabled%3Ahover%20%7B%0Atext%2Ddecoration%3A%20none%3B%0Acolor%3A%20%23999%3B%0A%7D%0A%2Epagedtable%2Dindexes%20%7B%0Acursor%3A%20pointer%3B%0Afloat%3A%20right%3B%0Aborder%3A%200%3B%0A%7D%0A%2Epagedtable%2Dindex%2Dcurrent%20%7B%0Acursor%3A%20default%3B%0Atext%2Ddecoration%3A%20none%3B%0Afont%2Dweight%3A%20bold%3B%0Acolor%3A%20%23333%3B%0Aborder%3A%200%3B%0A%7D%0Aa%2Epagedtable%2Dindex%2Dcurrent%3Ahover%20%7B%0Atext%2Ddecoration%3A%20none%3B%0Afont%2Dweight%3A%20bold%3B%0Acolor%3A%20%23333%3B%0A%7D%0A%2Epagedtable%2Dindex%20%7B%0Awidth%3A%2030px%3B%0Adisplay%3A%20inline%2Dblock%3B%0Atext%2Dalign%3A%20center%3B%0Aborder%3A%200%3B%0A%7D%0A%2Epagedtable%2Dindex%2Dseparator%2Dleft%20%7B%0Adisplay%3A%20inline%2Dblock%3B%0Acolor%3A%20%23333%3B%0Afont%2Dsize%3A%209px%3B%0Apadding%3A%200%200%200%200%3B%0Acursor%3A%20default%3B%0A%7D%0A%2Epagedtable%2Dindex%2Dseparator%2Dright%20%7B%0Adisplay%3A%20inline%2Dblock%3B%0Acolor%3A%20%23333%3B%0Afont%2Dsize%3A%209px%3B%0Apadding%3A%200%204px%200%200%3B%0Acursor%3A%20default%3B%0A%7D%0A%2Epagedtable%2Dfooter%20%7B%0Apadding%2Dtop%3A%204px%3B%0Apadding%2Dbottom%3A%205px%3B%0A%7D%0A%2Epagedtable%2Dnot%2Dempty%20%2Epagedtable%2Dfooter%20%7B%0Aborder%2Dtop%3A%202px%20solid%20%23dddddd%3B%0A%7D%0A%2Epagedtable%2Dinfo%20%7B%0Aoverflow%3A%20hidden%3B%0Acolor%3A%20%23999%3B%0Awhite%2Dspace%3A%20nowrap%3B%0Atext%2Doverflow%3A%20ellipsis%3B%0A%7D%0A%2Epagedtable%2Dheader%2Dname%20%7B%0Aoverflow%3A%20hidden%3B%0Atext%2Doverflow%3A%20ellipsis%3B%0A%7D%0A%2Epagedtable%2Dheader%2Dtype%20%7B%0Acolor%3A%20%23999%3B%0Afont%2Dweight%3A%20400%3B%0A%7D%0A%2Epagedtable%2Dna%2Dcell%20%7B%0Afont%2Dstyle%3A%20italic%3B%0Aopacity%3A%200%2E3%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,Ly8gUHJvZHVjdGlvbiBzdGVwcyBvZiBFQ01BLTI2MiwgRWRpdGlvbiA1LCAxNS40LjQuMTgKLy8gUmVmZXJlbmNlOiBodHRwOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjQuNC4xOAppZiAoIUFycmF5LnByb3RvdHlwZS5mb3JFYWNoKSB7CgogIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHsKCiAgICB2YXIgVCwgazsKCiAgICBpZiAodGhpcyA9PT0gbnVsbCkgewogICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCcgdGhpcyBpcyBudWxsIG9yIG5vdCBkZWZpbmVkJyk7CiAgICB9CgogICAgLy8gMS4gTGV0IE8gYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRvT2JqZWN0KCkgcGFzc2luZyB0aGUKICAgIC8vIHx0aGlzfCB2YWx1ZSBhcyB0aGUgYXJndW1lbnQuCiAgICB2YXIgTyA9IE9iamVjdCh0aGlzKTsKCiAgICAvLyAyLiBMZXQgbGVuVmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBHZXQoKSBpbnRlcm5hbAogICAgLy8gbWV0aG9kIG9mIE8gd2l0aCB0aGUgYXJndW1lbnQgImxlbmd0aCIuCiAgICAvLyAzLiBMZXQgbGVuIGJlIHRvVWludDMyKGxlblZhbHVlKS4KICAgIHZhciBsZW4gPSBPLmxlbmd0aCA+Pj4gMDsKCiAgICAvLyA0LiBJZiBpc0NhbGxhYmxlKGNhbGxiYWNrKSBpcyBmYWxzZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgLy8gU2VlOiBodHRwOi8vZXM1LmdpdGh1Yi5jb20vI3g5LjExCiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKSB7CiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoY2FsbGJhY2sgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7CiAgICB9CgogICAgLy8gNS4gSWYgdGhpc0FyZyB3YXMgc3VwcGxpZWQsIGxldCBUIGJlIHRoaXNBcmc7IGVsc2UgbGV0CiAgICAvLyBUIGJlIHVuZGVmaW5lZC4KICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkgewogICAgICBUID0gdGhpc0FyZzsKICAgIH0KCiAgICAvLyA2LiBMZXQgayBiZSAwCiAgICBrID0gMDsKCiAgICAvLyA3LiBSZXBlYXQsIHdoaWxlIGsgPCBsZW4KICAgIHdoaWxlIChrIDwgbGVuKSB7CgogICAgICB2YXIga1ZhbHVlOwoKICAgICAgLy8gYS4gTGV0IFBrIGJlIFRvU3RyaW5nKGspLgogICAgICAvLyAgICBUaGlzIGlzIGltcGxpY2l0IGZvciBMSFMgb3BlcmFuZHMgb2YgdGhlIGluIG9wZXJhdG9yCiAgICAgIC8vIGIuIExldCBrUHJlc2VudCBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIEhhc1Byb3BlcnR5CiAgICAgIC8vICAgIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggYXJndW1lbnQgUGsuCiAgICAgIC8vICAgIFRoaXMgc3RlcCBjYW4gYmUgY29tYmluZWQgd2l0aCBjCiAgICAgIC8vIGMuIElmIGtQcmVzZW50IGlzIHRydWUsIHRoZW4KICAgICAgaWYgKGsgaW4gTykgewoKICAgICAgICAvLyBpLiBMZXQga1ZhbHVlIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgR2V0IGludGVybmFsCiAgICAgICAgLy8gbWV0aG9kIG9mIE8gd2l0aCBhcmd1bWVudCBQay4KICAgICAgICBrVmFsdWUgPSBPW2tdOwoKICAgICAgICAvLyBpaS4gQ2FsbCB0aGUgQ2FsbCBpbnRlcm5hbCBtZXRob2Qgb2YgY2FsbGJhY2sgd2l0aCBUIGFzCiAgICAgICAgLy8gdGhlIHRoaXMgdmFsdWUgYW5kIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyBrVmFsdWUsIGssIGFuZCBPLgogICAgICAgIGNhbGxiYWNrLmNhbGwoVCwga1ZhbHVlLCBrLCBPKTsKICAgICAgfQogICAgICAvLyBkLiBJbmNyZWFzZSBrIGJ5IDEuCiAgICAgIGsrKzsKICAgIH0KICAgIC8vIDguIHJldHVybiB1bmRlZmluZWQKICB9Owp9CgovLyBQcm9kdWN0aW9uIHN0ZXBzIG9mIEVDTUEtMjYyLCBFZGl0aW9uIDUsIDE1LjQuNC4xOQovLyBSZWZlcmVuY2U6IGh0dHA6Ly9lczUuZ2l0aHViLmlvLyN4MTUuNC40LjE5CmlmICghQXJyYXkucHJvdG90eXBlLm1hcCkgewoKICBBcnJheS5wcm90b3R5cGUubWFwID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHsKCiAgICB2YXIgVCwgQSwgazsKCiAgICBpZiAodGhpcyA9PSBudWxsKSB7CiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJyB0aGlzIGlzIG51bGwgb3Igbm90IGRlZmluZWQnKTsKICAgIH0KCiAgICAvLyAxLiBMZXQgTyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9PYmplY3QgcGFzc2luZyB0aGUgfHRoaXN8CiAgICAvLyAgICB2YWx1ZSBhcyB0aGUgYXJndW1lbnQuCiAgICB2YXIgTyA9IE9iamVjdCh0aGlzKTsKCiAgICAvLyAyLiBMZXQgbGVuVmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBHZXQgaW50ZXJuYWwKICAgIC8vICAgIG1ldGhvZCBvZiBPIHdpdGggdGhlIGFyZ3VtZW50ICJsZW5ndGgiLgogICAgLy8gMy4gTGV0IGxlbiBiZSBUb1VpbnQzMihsZW5WYWx1ZSkuCiAgICB2YXIgbGVuID0gTy5sZW5ndGggPj4+IDA7CgogICAgLy8gNC4gSWYgSXNDYWxsYWJsZShjYWxsYmFjaykgaXMgZmFsc2UsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgIC8vIFNlZTogaHR0cDovL2VzNS5naXRodWIuY29tLyN4OS4xMQogICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykgewogICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGNhbGxiYWNrICsgJyBpcyBub3QgYSBmdW5jdGlvbicpOwogICAgfQoKICAgIC8vIDUuIElmIHRoaXNBcmcgd2FzIHN1cHBsaWVkLCBsZXQgVCBiZSB0aGlzQXJnOyBlbHNlIGxldCBUIGJlIHVuZGVmaW5lZC4KICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkgewogICAgICBUID0gdGhpc0FyZzsKICAgIH0KCiAgICAvLyA2LiBMZXQgQSBiZSBhIG5ldyBhcnJheSBjcmVhdGVkIGFzIGlmIGJ5IHRoZSBleHByZXNzaW9uIG5ldyBBcnJheShsZW4pCiAgICAvLyAgICB3aGVyZSBBcnJheSBpcyB0aGUgc3RhbmRhcmQgYnVpbHQtaW4gY29uc3RydWN0b3Igd2l0aCB0aGF0IG5hbWUgYW5kCiAgICAvLyAgICBsZW4gaXMgdGhlIHZhbHVlIG9mIGxlbi4KICAgIEEgPSBuZXcgQXJyYXkobGVuKTsKCiAgICAvLyA3LiBMZXQgayBiZSAwCiAgICBrID0gMDsKCiAgICAvLyA4LiBSZXBlYXQsIHdoaWxlIGsgPCBsZW4KICAgIHdoaWxlIChrIDwgbGVuKSB7CgogICAgICB2YXIga1ZhbHVlLCBtYXBwZWRWYWx1ZTsKCiAgICAgIC8vIGEuIExldCBQayBiZSBUb1N0cmluZyhrKS4KICAgICAgLy8gICBUaGlzIGlzIGltcGxpY2l0IGZvciBMSFMgb3BlcmFuZHMgb2YgdGhlIGluIG9wZXJhdG9yCiAgICAgIC8vIGIuIExldCBrUHJlc2VudCBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIEhhc1Byb3BlcnR5IGludGVybmFsCiAgICAgIC8vICAgIG1ldGhvZCBvZiBPIHdpdGggYXJndW1lbnQgUGsuCiAgICAgIC8vICAgVGhpcyBzdGVwIGNhbiBiZSBjb21iaW5lZCB3aXRoIGMKICAgICAgLy8gYy4gSWYga1ByZXNlbnQgaXMgdHJ1ZSwgdGhlbgogICAgICBpZiAoayBpbiBPKSB7CgogICAgICAgIC8vIGkuIExldCBrVmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBHZXQgaW50ZXJuYWwKICAgICAgICAvLyAgICBtZXRob2Qgb2YgTyB3aXRoIGFyZ3VtZW50IFBrLgogICAgICAgIGtWYWx1ZSA9IE9ba107CgogICAgICAgIC8vIGlpLiBMZXQgbWFwcGVkVmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBDYWxsIGludGVybmFsCiAgICAgICAgLy8gICAgIG1ldGhvZCBvZiBjYWxsYmFjayB3aXRoIFQgYXMgdGhlIHRoaXMgdmFsdWUgYW5kIGFyZ3VtZW50CiAgICAgICAgLy8gICAgIGxpc3QgY29udGFpbmluZyBrVmFsdWUsIGssIGFuZCBPLgogICAgICAgIG1hcHBlZFZhbHVlID0gY2FsbGJhY2suY2FsbChULCBrVmFsdWUsIGssIE8pOwoKICAgICAgICAvLyBpaWkuIENhbGwgdGhlIERlZmluZU93blByb3BlcnR5IGludGVybmFsIG1ldGhvZCBvZiBBIHdpdGggYXJndW1lbnRzCiAgICAgICAgLy8gUGssIFByb3BlcnR5IERlc2NyaXB0b3IKICAgICAgICAvLyB7IFZhbHVlOiBtYXBwZWRWYWx1ZSwKICAgICAgICAvLyAgIFdyaXRhYmxlOiB0cnVlLAogICAgICAgIC8vICAgRW51bWVyYWJsZTogdHJ1ZSwKICAgICAgICAvLyAgIENvbmZpZ3VyYWJsZTogdHJ1ZSB9LAogICAgICAgIC8vIGFuZCBmYWxzZS4KCiAgICAgICAgLy8gSW4gYnJvd3NlcnMgdGhhdCBzdXBwb3J0IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgdXNlIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgLy8gT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsIGssIHsKICAgICAgICAvLyAgIHZhbHVlOiBtYXBwZWRWYWx1ZSwKICAgICAgICAvLyAgIHdyaXRhYmxlOiB0cnVlLAogICAgICAgIC8vICAgZW51bWVyYWJsZTogdHJ1ZSwKICAgICAgICAvLyAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQogICAgICAgIC8vIH0pOwoKICAgICAgICAvLyBGb3IgYmVzdCBicm93c2VyIHN1cHBvcnQsIHVzZSB0aGUgZm9sbG93aW5nOgogICAgICAgIEFba10gPSBtYXBwZWRWYWx1ZTsKICAgICAgfQogICAgICAvLyBkLiBJbmNyZWFzZSBrIGJ5IDEuCiAgICAgIGsrKzsKICAgIH0KCiAgICAvLyA5LiByZXR1cm4gQQogICAgcmV0dXJuIEE7CiAgfTsKfQoKdmFyIFBhZ2VkVGFibGUgPSBmdW5jdGlvbiAocGFnZWRUYWJsZSkgewogIHZhciBtZSA9IHRoaXM7CgogIHZhciBzb3VyY2UgPSBmdW5jdGlvbihwYWdlZFRhYmxlKSB7CiAgICB2YXIgc291cmNlRWxlbXMgPSBbXS5zbGljZS5jYWxsKHBhZ2VkVGFibGUuY2hpbGRyZW4pLmZpbHRlcihmdW5jdGlvbihlKSB7CiAgICAgIHJldHVybiBlLmhhc0F0dHJpYnV0ZSgiZGF0YS1wYWdlZHRhYmxlLXNvdXJjZSIpOwogICAgfSk7CgogICAgaWYgKHNvdXJjZUVsZW1zID09PSBudWxsIHx8IHNvdXJjZUVsZW1zLmxlbmd0aCAhPT0gMSkgewogICAgICB0aHJvdygiQSBzaW5nbGUgZGF0YS1wYWdlZHRhYmxlLXNvdXJjZSB3YXMgbm90IGZvdW5kIik7CiAgICB9CgogICAgcmV0dXJuIEpTT04ucGFyc2Uoc291cmNlRWxlbXNbMF0uaW5uZXJIVE1MKTsKICB9KHBhZ2VkVGFibGUpOwoKICB2YXIgb3B0aW9ucyA9IGZ1bmN0aW9uKHNvdXJjZSkgewogICAgdmFyIG9wdGlvbnMgPSB0eXBlb2Yoc291cmNlLm9wdGlvbnMpICE9PSAidW5kZWZpbmVkIiAmJgogICAgICBzb3VyY2Uub3B0aW9ucyAhPT0gbnVsbCA/IHNvdXJjZS5vcHRpb25zIDoge307CgogICAgdmFyIGNvbHVtbnMgPSB0eXBlb2Yob3B0aW9ucy5jb2x1bW5zKSAhPT0gInVuZGVmaW5lZCIgPyBvcHRpb25zLmNvbHVtbnMgOiB7fTsKICAgIHZhciByb3dzID0gdHlwZW9mKG9wdGlvbnMucm93cykgIT09ICJ1bmRlZmluZWQiID8gb3B0aW9ucy5yb3dzIDoge307CgogICAgdmFyIHBvc2l0aXZlSW50T3JOdWxsID0gZnVuY3Rpb24odmFsdWUpIHsKICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlKSA+PSAwID8gcGFyc2VJbnQodmFsdWUpIDogbnVsbDsKICAgIH07CgogICAgcmV0dXJuIHsKICAgICAgcGFnZXM6IHBvc2l0aXZlSW50T3JOdWxsKG9wdGlvbnMucGFnZXMpLAogICAgICByb3dzOiB7CiAgICAgICAgbWluOiBwb3NpdGl2ZUludE9yTnVsbChyb3dzLm1pbiksCiAgICAgICAgbWF4OiBwb3NpdGl2ZUludE9yTnVsbChyb3dzLm1heCksCiAgICAgICAgdG90YWw6IHBvc2l0aXZlSW50T3JOdWxsKHJvd3MudG90YWwpCiAgICAgIH0sCiAgICAgIGNvbHVtbnM6IHsKICAgICAgICBtaW46IHBvc2l0aXZlSW50T3JOdWxsKGNvbHVtbnMubWluKSwKICAgICAgICBtYXg6IHBvc2l0aXZlSW50T3JOdWxsKGNvbHVtbnMubWF4KSwKICAgICAgICB0b3RhbDogcG9zaXRpdmVJbnRPck51bGwoY29sdW1ucy50b3RhbCkKICAgICAgfQogICAgfTsKICB9KHNvdXJjZSk7CgogIHZhciBNZWFzdXJlciA9IGZ1bmN0aW9uKCkgewoKICAgIC8vIHNldCBzb21lIGRlZmF1bHQgaW5pdGlhbCB2YWx1ZXMgdGhhdCB3aWxsIGdldCBhZGp1c3RlZCBpbiBydW50aW1lCiAgICBtZS5tZWFzdXJlcyA9IHsKICAgICAgcGFkZGluZzogMTIsCiAgICAgIGNoYXJhY3RlcjogOCwKICAgICAgaGVpZ2h0OiAxNSwKICAgICAgZGVmYXVsdHM6IHRydWUKICAgIH07CgogICAgbWUuY2FsY3VsYXRlID0gZnVuY3Rpb24obWVhc3VyZXNDZWxsKSB7CiAgICAgIGlmICghbWUubWVhc3VyZXMuZGVmYXVsdHMpCiAgICAgICAgcmV0dXJuOwoKICAgICAgdmFyIG1lYXN1cmVzQ2VsbFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUobWVhc3VyZXNDZWxsLCBudWxsKTsKCiAgICAgIHZhciBuZXdQYWRkaW5nID0gcGFyc2VQYWRkaW5nKG1lYXN1cmVzQ2VsbFN0eWxlLnBhZGRpbmdMZWZ0KSArCiAgICAgICAgICAgIHBhcnNlUGFkZGluZyhtZWFzdXJlc0NlbGxTdHlsZS5wYWRkaW5nUmlnaHQpOwoKICAgICAgdmFyIHNhbXBsZVN0cmluZyA9ICJBQkNERUZHSElKMDEyMzQ1Njc4OSI7CiAgICAgIHZhciBuZXdDaGFyYWN0ZXIgPSBNYXRoLmNlaWwobWVhc3VyZXNDZWxsLmNsaWVudFdpZHRoIC8gc2FtcGxlU3RyaW5nLmxlbmd0aCk7CgogICAgICBpZiAobmV3UGFkZGluZyA8PSAwIHx8IG5ld0NoYXJhY3RlciA8PSAwKQogICAgICAgIHJldHVybjsKCiAgICAgIG1lLm1lYXN1cmVzLnBhZGRpbmcgPSBuZXdQYWRkaW5nOwogICAgICBtZS5tZWFzdXJlcy5jaGFyYWN0ZXIgPSBuZXdDaGFyYWN0ZXI7CiAgICAgIG1lLm1lYXN1cmVzLmhlaWdodCA9IG1lYXN1cmVzQ2VsbC5jbGllbnRIZWlnaHQ7CiAgICAgIG1lLm1lYXN1cmVzLmRlZmF1bHRzID0gZmFsc2U7CiAgICB9OwoKICAgIHJldHVybiBtZTsKICB9OwoKICB2YXIgUGFnZSA9IGZ1bmN0aW9uKGRhdGEsIG9wdGlvbnMpIHsKICAgIHZhciBtZSA9IHRoaXM7CgogICAgdmFyIGRlZmF1bHRzID0gewogICAgICBtYXg6IDcsCiAgICAgIHJvd3M6IDEwCiAgICB9OwoKICAgIHZhciB0b3RhbFBhZ2VzID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBNYXRoLmNlaWwoZGF0YS5sZW5ndGggLyBtZS5yb3dzKTsKICAgIH07CgogICAgbWUubnVtYmVyID0gMDsKICAgIG1lLm1heCA9IG9wdGlvbnMucGFnZXMgIT09IG51bGwgPyBvcHRpb25zLnBhZ2VzIDogZGVmYXVsdHMubWF4OwogICAgbWUudmlzaWJsZSA9IG1lLm1heDsKICAgIG1lLnJvd3MgPSBvcHRpb25zLnJvd3MubWluICE9PSBudWxsID8gb3B0aW9ucy5yb3dzLm1pbiA6IGRlZmF1bHRzLnJvd3M7CiAgICBtZS50b3RhbCA9IHRvdGFsUGFnZXMoKTsKCiAgICBtZS5zZXRSb3dzID0gZnVuY3Rpb24obmV3Um93cykgewogICAgICBtZS5yb3dzID0gbmV3Um93czsKICAgICAgbWUudG90YWwgPSB0b3RhbFBhZ2VzKCk7CiAgICB9OwoKICAgIG1lLnNldFBhZ2VOdW1iZXIgPSBmdW5jdGlvbihuZXdQYWdlTnVtYmVyKSB7CiAgICAgIGlmIChuZXdQYWdlTnVtYmVyIDwgMCkgbmV3UGFnZU51bWJlciA9IDA7CiAgICAgIGlmIChuZXdQYWdlTnVtYmVyID49IG1lLnRvdGFsKSBuZXdQYWdlTnVtYmVyID0gbWUudG90YWwgLSAxOwoKICAgICAgbWUubnVtYmVyID0gbmV3UGFnZU51bWJlcjsKICAgIH07CgogICAgbWUuc2V0VmlzaWJsZVBhZ2VzID0gZnVuY3Rpb24odmlzaWJsZVBhZ2VzKSB7CiAgICAgIG1lLnZpc2libGUgPSBNYXRoLm1pbihtZS5tYXgsIHZpc2libGVQYWdlcyk7CiAgICAgIG1lLnNldFBhZ2VOdW1iZXIobWUubnVtYmVyKTsKICAgIH07CgogICAgbWUuZ2V0VmlzaWJsZVBhZ2VSYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgc3RhcnQgPSBtZS5udW1iZXIgLSBNYXRoLm1heChNYXRoLmZsb29yKChtZS52aXNpYmxlIC0gMSkgLyAyKSwgMCk7CiAgICAgIHZhciBlbmQgPSBtZS5udW1iZXIgKyBNYXRoLmZsb29yKG1lLnZpc2libGUgLyAyKSArIDE7CiAgICAgIHZhciBwYWdlQ291bnQgPSBtZS50b3RhbDsKCiAgICAgIGlmIChzdGFydCA8IDApIHsKICAgICAgICB2YXIgZGlmZlRvU3RhcnQgPSAwIC0gc3RhcnQ7CiAgICAgICAgc3RhcnQgKz0gZGlmZlRvU3RhcnQ7CiAgICAgICAgZW5kICs9IGRpZmZUb1N0YXJ0OwogICAgICB9CgogICAgICBpZiAoZW5kID4gcGFnZUNvdW50KSB7CiAgICAgICAgdmFyIGRpZmZUb0VuZCA9IGVuZCAtIHBhZ2VDb3VudDsKICAgICAgICBzdGFydCAtPSBkaWZmVG9FbmQ7CiAgICAgICAgZW5kIC09IGRpZmZUb0VuZDsKICAgICAgfQoKICAgICAgc3RhcnQgPSBzdGFydCA8IDAgPyAwIDogc3RhcnQ7CiAgICAgIGVuZCA9IGVuZCA+PSBwYWdlQ291bnQgPyBwYWdlQ291bnQgOiBlbmQ7CgogICAgICB2YXIgZmlyc3QgPSBmYWxzZTsKICAgICAgdmFyIGxhc3QgPSBmYWxzZTsKCiAgICAgIGlmIChzdGFydCA+IDAgJiYgbWUudmlzaWJsZSA+IDEpIHsKICAgICAgICBzdGFydCA9IHN0YXJ0ICsgMTsKICAgICAgICBmaXJzdCA9IHRydWU7CiAgICAgIH0KCiAgICAgIGlmIChlbmQgPCBwYWdlQ291bnQgJiYgbWUudmlzaWJsZSA+IDIpIHsKICAgICAgICBlbmQgPSBlbmQgLSAxOwogICAgICAgIGxhc3QgPSB0cnVlOwogICAgICB9CgogICAgICByZXR1cm4gewogICAgICAgIGZpcnN0OiBmaXJzdCwKICAgICAgICBzdGFydDogc3RhcnQsCiAgICAgICAgZW5kOiBlbmQsCiAgICAgICAgbGFzdDogbGFzdAogICAgICB9OwogICAgfTsKCiAgICBtZS5nZXRSb3dTdGFydCA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgcm93U3RhcnQgPSBwYWdlLm51bWJlciAqIHBhZ2Uucm93czsKICAgICAgaWYgKHJvd1N0YXJ0IDwgMCkKICAgICAgICByb3dTdGFydCA9IDA7CgogICAgICByZXR1cm4gcm93U3RhcnQ7CiAgICB9OwoKICAgIG1lLmdldFJvd0VuZCA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgcm93U3RhcnQgPSBtZS5nZXRSb3dTdGFydCgpOwogICAgICByZXR1cm4gTWF0aC5taW4ocm93U3RhcnQgKyBtZS5yb3dzLCBkYXRhLmxlbmd0aCk7CiAgICB9OwoKICAgIG1lLmdldFBhZGRpbmdSb3dzID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciByb3dTdGFydCA9IG1lLmdldFJvd1N0YXJ0KCk7CiAgICAgIHZhciByb3dFbmQgPSBtZS5nZXRSb3dFbmQoKTsKICAgICAgcmV0dXJuIGRhdGEubGVuZ3RoID4gbWUucm93cyA/IG1lLnJvd3MgLSAocm93RW5kIC0gcm93U3RhcnQpIDogMDsKICAgIH07CiAgfTsKCiAgdmFyIENvbHVtbnMgPSBmdW5jdGlvbihkYXRhLCBjb2x1bW5zLCBvcHRpb25zKSB7CiAgICB2YXIgbWUgPSB0aGlzOwoKICAgIG1lLmRlZmF1bHRzID0gewogICAgICBtaW46IDUKICAgIH07CgogICAgbWUubnVtYmVyID0gMDsKICAgIG1lLnZpc2libGUgPSAwOwogICAgbWUudG90YWwgPSBjb2x1bW5zLmxlbmd0aDsKICAgIG1lLnN1YnNldCA9IFtdOwogICAgbWUucGFkZGluZyA9IDA7CiAgICBtZS5taW4gPSBvcHRpb25zLmNvbHVtbnMubWluICE9PSBudWxsID8gb3B0aW9ucy5jb2x1bW5zLm1pbiA6IG1lLmRlZmF1bHRzLm1pbjsKICAgIG1lLm1heCA9IG9wdGlvbnMuY29sdW1ucy5tYXggIT09IG51bGwgPyBvcHRpb25zLmNvbHVtbnMubWF4IDogbnVsbDsKICAgIG1lLndpZHRocyA9IHt9OwoKICAgIHZhciB3aWR0aHNMb29rQWhlYWQgPSBNYXRoLm1heCgxMDAsIG9wdGlvbnMucm93cy5taW4pOwogICAgdmFyIHBhZGRpbmdDb2xDaGFycyA9IDEwOwoKICAgIG1lLmVtcHR5TmFtZXMgPSBmdW5jdGlvbigpIHsKICAgICAgY29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uKGNvbHVtbikgewogICAgICAgIGlmIChjb2x1bW5zLmxhYmVsICE9PSBudWxsICYmIGNvbHVtbnMubGFiZWwgIT09ICIiKQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9KTsKCiAgICAgIHJldHVybiB0cnVlOwogICAgfTsKCiAgICB2YXIgcGFyc2VQYWRkaW5nID0gZnVuY3Rpb24odmFsdWUpIHsKICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlKSA+PSAwID8gcGFyc2VJbnQodmFsdWUpIDogMDsKICAgIH07CgogICAgbWUuY2FsY3VsYXRlV2lkdGhzID0gZnVuY3Rpb24obWVhc3VyZXMpIHsKICAgICAgY29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uKGNvbHVtbikgewogICAgICAgIHZhciBtYXhDaGFycyA9IE1hdGgubWF4KAogICAgICAgICAgY29sdW1uLmxhYmVsLnRvU3RyaW5nKCkubGVuZ3RoLAogICAgICAgICAgY29sdW1uLnR5cGUudG9TdHJpbmcoKS5sZW5ndGgKICAgICAgICApOwoKICAgICAgICBmb3IgKHZhciBpZHhSb3cgPSAwOyBpZHhSb3cgPCBNYXRoLm1pbih3aWR0aHNMb29rQWhlYWQsIGRhdGEubGVuZ3RoKTsgaWR4Um93KyspIHsKICAgICAgICAgIG1heENoYXJzID0gTWF0aC5tYXgobWF4Q2hhcnMsIGRhdGFbaWR4Um93XVtjb2x1bW4ubmFtZS50b1N0cmluZygpXS5sZW5ndGgpOwogICAgICAgIH0KCiAgICAgICAgbWUud2lkdGhzW2NvbHVtbi5uYW1lXSA9IHsKICAgICAgICAgIC8vIHdpZHRoIGluIGNoYXJhY3RlcnMKICAgICAgICAgIGNoYXJzOiBtYXhDaGFycywKICAgICAgICAgIC8vIHdpZHRoIGZvciB0aGUgaW5uZXIgaHRtbCBjb2x1bW5zCiAgICAgICAgICBpbm5lcjogbWF4Q2hhcnMgKiBtZWFzdXJlcy5jaGFyYWN0ZXIsCiAgICAgICAgICAvLyB3aWR0aCBhZGRpbmcgb3V0ZXIgc3R5bGVzIGxpa2UgcGFkZGluZwogICAgICAgICAgb3V0ZXI6IG1heENoYXJzICogbWVhc3VyZXMuY2hhcmFjdGVyICsgbWVhc3VyZXMucGFkZGluZwogICAgICAgIH07CiAgICAgIH0pOwogICAgfTsKCiAgICBtZS5nZXRXaWR0aCA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgd2lkdGhPdXRlciA9IDA7CiAgICAgIGZvciAodmFyIGlkeENvbCA9IDA7IGlkeENvbCA8IG1lLnN1YnNldC5sZW5ndGg7IGlkeENvbCsrKSB7CiAgICAgICAgdmFyIGNvbHVtbk5hbWUgPSBtZS5zdWJzZXRbaWR4Q29sXS5uYW1lOwogICAgICAgIHdpZHRoT3V0ZXIgPSB3aWR0aE91dGVyICsgbWUud2lkdGhzW2NvbHVtbk5hbWVdLm91dGVyOwogICAgICB9CgogICAgICB3aWR0aE91dGVyID0gd2lkdGhPdXRlciArIG1lLnBhZGRpbmcgKiBwYWRkaW5nQ29sQ2hhcnMgKiBtZWFzdXJlci5tZWFzdXJlcy5jaGFyYWN0ZXI7CgogICAgICBpZiAobWUuaGFzTW9yZUxlZnRDb2x1bW5zKCkpIHsKICAgICAgICB3aWR0aE91dGVyID0gd2lkdGhPdXRlciArIGNvbHVtbk5hdmlnYXRpb25XaWR0aFBYICsgbWVhc3VyZXIubWVhc3VyZXMucGFkZGluZzsKICAgICAgfQoKICAgICAgaWYgKG1lLmhhc01vcmVSaWdodENvbHVtbnMoKSkgewogICAgICAgIHdpZHRoT3V0ZXIgPSB3aWR0aE91dGVyICsgY29sdW1uTmF2aWdhdGlvbldpZHRoUFggKyBtZWFzdXJlci5tZWFzdXJlcy5wYWRkaW5nOwogICAgICB9CgogICAgICByZXR1cm4gd2lkdGhPdXRlcjsKICAgIH07CgogICAgbWUudXBkYXRlU2xpY2UgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKG1lLm51bWJlciArIG1lLnZpc2libGUgPj0gbWUudG90YWwpCiAgICAgICAgbWUubnVtYmVyID0gbWUudG90YWwgLSBtZS52aXNpYmxlOwoKICAgICAgaWYgKG1lLm51bWJlciA8IDApIG1lLm51bWJlciA9IDA7CgogICAgICBtZS5zdWJzZXQgPSBjb2x1bW5zLnNsaWNlKG1lLm51bWJlciwgTWF0aC5taW4obWUubnVtYmVyICsgbWUudmlzaWJsZSwgbWUudG90YWwpKTsKCiAgICAgIG1lLnN1YnNldCA9IG1lLnN1YnNldC5tYXAoZnVuY3Rpb24oY29sdW1uKSB7CiAgICAgICAgT2JqZWN0LmtleXMoY29sdW1uKS5mb3JFYWNoKGZ1bmN0aW9uKGNvbEtleSkgewogICAgICAgICAgY29sdW1uW2NvbEtleV0gPSBjb2x1bW5bY29sS2V5XSA9PT0gbnVsbCA/ICIiIDogY29sdW1uW2NvbEtleV0udG9TdHJpbmcoKTsKICAgICAgICB9KTsKCiAgICAgICAgY29sdW1uLndpZHRoID0gbnVsbDsKICAgICAgICByZXR1cm4gY29sdW1uOwogICAgICB9KTsKICAgIH07CgogICAgbWUuc2V0VmlzaWJsZUNvbHVtbnMgPSBmdW5jdGlvbihjb2x1bW5OdW1iZXIsIG5ld1Zpc2libGVDb2x1bW5zLCBwYWRkaW5nQ291bnQpIHsKICAgICAgbWUubnVtYmVyID0gY29sdW1uTnVtYmVyOwogICAgICBtZS52aXNpYmxlID0gbmV3VmlzaWJsZUNvbHVtbnM7CiAgICAgIG1lLnBhZGRpbmcgPSBwYWRkaW5nQ291bnQ7CgogICAgICBtZS51cGRhdGVTbGljZSgpOwogICAgfTsKCiAgICBtZS5pbmNDb2x1bW5OdW1iZXIgPSBmdW5jdGlvbihpbmNyZW1lbnQpIHsKICAgICAgbWUubnVtYmVyID0gbWUubnVtYmVyICsgaW5jcmVtZW50OwogICAgfTsKCiAgICBtZS5zZXRDb2x1bW5OdW1iZXIgPSBmdW5jdGlvbihuZXdOdW1iZXIpIHsKICAgICAgbWUubnVtYmVyID0gbmV3TnVtYmVyOwogICAgfTsKCiAgICBtZS5zZXRQYWRkaW5nQ291bnQgPSBmdW5jdGlvbihuZXdQYWRkaW5nKSB7CiAgICAgIG1lLnBhZGRpbmcgPSBuZXdQYWRkaW5nOwogICAgfTsKCiAgICBtZS5nZXRQYWRkaW5nQ291bnQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIG1lLnBhZGRpbmc7CiAgICB9OwoKICAgIG1lLmhhc01vcmVMZWZ0Q29sdW1ucyA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gbWUubnVtYmVyID4gMDsKICAgIH07CgogICAgbWUuaGFzTW9yZVJpZ2h0Q29sdW1ucyA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gbWUubnVtYmVyICsgbWUudmlzaWJsZSA8IG1lLnRvdGFsOwogICAgfTsKCiAgICBtZS51cGRhdGVTbGljZSgwKTsKICAgIHJldHVybiBtZTsKICB9OwoKICB2YXIgZGF0YSA9IHNvdXJjZS5kYXRhOwogIHZhciBwYWdlID0gbmV3IFBhZ2UoZGF0YSwgb3B0aW9ucyk7CiAgdmFyIG1lYXN1cmVyID0gbmV3IE1lYXN1cmVyKGRhdGEsIG9wdGlvbnMpOwogIHZhciBjb2x1bW5zID0gbmV3IENvbHVtbnMoZGF0YSwgc291cmNlLmNvbHVtbnMsIG9wdGlvbnMpOwoKICB2YXIgdGFibGUgPSBudWxsOwogIHZhciB0YWJsZURpdiA9IG51bGw7CiAgdmFyIGhlYWRlciA9IG51bGw7CiAgdmFyIGZvb3RlciA9IG51bGw7CiAgdmFyIHRib2R5ID0gbnVsbDsKCiAgLy8gQ2FjaGVzIHBhZ2VkVGFibGUuY2xpZW50V2lkdGgsIHNwZWNpYWxseSBmb3Igd2Via2l0CiAgdmFyIGNhY2hlZFBhZ2VkVGFibGVDbGllbnRXaWR0aCA9IG51bGw7CgogIHZhciBvbkNoYW5nZUNhbGxiYWNrcyA9IFtdOwoKICB2YXIgY2xlYXJTZWxlY3Rpb24gPSBmdW5jdGlvbigpIHsKICAgIGlmKGRvY3VtZW50LnNlbGVjdGlvbiAmJiBkb2N1bWVudC5zZWxlY3Rpb24uZW1wdHkpIHsKICAgICAgZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KCk7CiAgICB9IGVsc2UgaWYod2luZG93LmdldFNlbGVjdGlvbikgewogICAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CiAgICB9CiAgfTsKCiAgdmFyIGNvbHVtbk5hdmlnYXRpb25XaWR0aFBYID0gNTsKCiAgdmFyIHJlbmRlckNvbHVtbk5hdmlnYXRpb24gPSBmdW5jdGlvbihpbmNyZW1lbnQsIGJhY2t3YXJkcykgewogICAgdmFyIGFycm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICBhcnJvdy5zZXRBdHRyaWJ1dGUoInN0eWxlIiwKICAgICAgImJvcmRlci10b3A6ICIgKyBjb2x1bW5OYXZpZ2F0aW9uV2lkdGhQWCArICJweCBzb2xpZCB0cmFuc3BhcmVudDsiICsKICAgICAgImJvcmRlci1ib3R0b206ICIgKyBjb2x1bW5OYXZpZ2F0aW9uV2lkdGhQWCArICJweCBzb2xpZCB0cmFuc3BhcmVudDsiICsKICAgICAgImJvcmRlci0iICsgKGJhY2t3YXJkcyA/ICJyaWdodCIgOiAibGVmdCIpICsgIjogIiArIGNvbHVtbk5hdmlnYXRpb25XaWR0aFBYICsgInB4IHNvbGlkOyIpOwoKICAgIHZhciBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpOwogICAgaGVhZGVyLmFwcGVuZENoaWxkKGFycm93KTsKICAgIGhlYWRlci5zZXRBdHRyaWJ1dGUoInN0eWxlIiwKICAgICAgImN1cnNvcjogcG9pbnRlcjsiICsKICAgICAgInZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IiArCiAgICAgICJtaW4td2lkdGg6ICIgKyBjb2x1bW5OYXZpZ2F0aW9uV2lkdGhQWCArICJweDsiICsKICAgICAgIndpZHRoOiAiICsgY29sdW1uTmF2aWdhdGlvbldpZHRoUFggKyAicHg7Iik7CgogICAgaGVhZGVyLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgY29sdW1ucy5pbmNDb2x1bW5OdW1iZXIoYmFja3dhcmRzID8gLTEgOiBpbmNyZW1lbnQpOwoKICAgICAgbWUuYW5pbWF0ZUNvbHVtbnMoYmFja3dhcmRzKTsKICAgICAgcmVuZGVyRm9vdGVyKCk7CgogICAgICBjbGVhclNlbGVjdGlvbigpOwogICAgICB0cmlnZ2VyT25DaGFuZ2UoKTsKICAgIH07CgogICAgcmV0dXJuIGhlYWRlcjsKICB9OwoKICB2YXIgbWF4Q29sdW1uV2lkdGggPSBmdW5jdGlvbih3aWR0aCkgewogICAgdmFyIHBhZGRpbmcgPSA4MDsKICAgIHZhciBjb2x1bW5NYXggPSBNYXRoLm1heChjYWNoZWRQYWdlZFRhYmxlQ2xpZW50V2lkdGggLSBwYWRkaW5nLCAwKTsKCiAgICByZXR1cm4gcGFyc2VJbnQod2lkdGgpID4gMCA/CiAgICAgIE1hdGgubWluKGNvbHVtbk1heCwgcGFyc2VJbnQod2lkdGgpKSArICJweCIgOgogICAgICBjb2x1bW5NYXggKyAicHgiOwogIH07CgogIHZhciBjbGVhckhlYWRlciA9IGZ1bmN0aW9uKCkgewogICAgdmFyIHRoZWFkID0gcGFnZWRUYWJsZS5xdWVyeVNlbGVjdG9yQWxsKCJ0aGVhZCIpWzBdOwogICAgdGhlYWQuaW5uZXJIVE1MID0gIiI7CiAgfTsKCiAgdmFyIHJlbmRlckhlYWRlciA9IGZ1bmN0aW9uKGNsZWFyKSB7CiAgICBjYWNoZWRQYWdlZFRhYmxlQ2xpZW50V2lkdGggPSBwYWdlZFRhYmxlLmNsaWVudFdpZHRoOwoKICAgIHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKCiAgICBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwogICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoaGVhZGVyKTsKCiAgICBpZiAoY29sdW1ucy5udW1iZXIgPiAwKQogICAgICBoZWFkZXIuYXBwZW5kQ2hpbGQocmVuZGVyQ29sdW1uTmF2aWdhdGlvbigtY29sdW1ucy52aXNpYmxlLCB0cnVlKSk7CgogICAgY29sdW1ucy5zdWJzZXQgPSBjb2x1bW5zLnN1YnNldC5tYXAoZnVuY3Rpb24oY29sdW1uRGF0YSkgewogICAgICB2YXIgY29sdW1uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKTsKICAgICAgY29sdW1uLnNldEF0dHJpYnV0ZSgiYWxpZ24iLCBjb2x1bW5EYXRhLmFsaWduKTsKICAgICAgY29sdW1uLnN0eWxlLnRleHRBbGlnbiA9IGNvbHVtbkRhdGEuYWxpZ247CgogICAgICBjb2x1bW4uc3R5bGUubWF4V2lkdGggPSBtYXhDb2x1bW5XaWR0aChudWxsKTsKICAgICAgaWYgKGNvbHVtbkRhdGEud2lkdGgpIHsKICAgICAgICBjb2x1bW4uc3R5bGUubWluV2lkdGggPQogICAgICAgICAgY29sdW1uLnN0eWxlLm1heFdpZHRoID0gbWF4Q29sdW1uV2lkdGgoY29sdW1uRGF0YS53aWR0aCk7CiAgICAgIH0KCiAgICAgIHZhciBjb2x1bW5OYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgIGNvbHVtbk5hbWUuc2V0QXR0cmlidXRlKCJjbGFzcyIsICJwYWdlZHRhYmxlLWhlYWRlci1uYW1lIik7CiAgICAgIGlmIChjb2x1bW5EYXRhLmxhYmVsID09PSAiIikgewogICAgICAgIGNvbHVtbk5hbWUuaW5uZXJIVE1MID0gIiZuYnNwOyI7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgY29sdW1uTmFtZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb2x1bW5EYXRhLmxhYmVsKSk7CiAgICAgIH0KICAgICAgY29sdW1uLmFwcGVuZENoaWxkKGNvbHVtbk5hbWUpOwoKICAgICAgdmFyIGNvbHVtblR5cGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgY29sdW1uVHlwZS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgInBhZ2VkdGFibGUtaGVhZGVyLXR5cGUiKTsKICAgICAgaWYgKGNvbHVtbkRhdGEudHlwZSA9PT0gIiIpIHsKICAgICAgICBjb2x1bW5UeXBlLmlubmVySFRNTCA9ICImbmJzcDsiOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIGNvbHVtblR5cGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjwiICsgY29sdW1uRGF0YS50eXBlICsgIj4iKSk7CiAgICAgIH0KICAgICAgY29sdW1uLmFwcGVuZENoaWxkKGNvbHVtblR5cGUpOwoKICAgICAgaGVhZGVyLmFwcGVuZENoaWxkKGNvbHVtbik7CgogICAgICBjb2x1bW5EYXRhLmVsZW1lbnQgPSBjb2x1bW47CgogICAgICByZXR1cm4gY29sdW1uRGF0YTsKICAgIH0pOwoKICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IGNvbHVtbnMuZ2V0UGFkZGluZ0NvdW50KCk7IGlkeCsrKSB7CiAgICAgIHZhciBwYWRkaW5nQ29sID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKTsKICAgICAgcGFkZGluZ0NvbC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgInBhZ2VkdGFibGUtcGFkZGluZy1jb2wiKTsKICAgICAgaGVhZGVyLmFwcGVuZENoaWxkKHBhZGRpbmdDb2wpOwogICAgfQoKICAgIGlmIChjb2x1bW5zLm51bWJlciArIGNvbHVtbnMudmlzaWJsZSA8IGNvbHVtbnMudG90YWwpCiAgICAgIGhlYWRlci5hcHBlbmRDaGlsZChyZW5kZXJDb2x1bW5OYXZpZ2F0aW9uKGNvbHVtbnMudmlzaWJsZSwgZmFsc2UpKTsKCiAgICBpZiAodHlwZW9mKGNsZWFyKSA9PSAidW5kZWZpbmVkIiB8fCBjbGVhcikgY2xlYXJIZWFkZXIoKTsKICAgIHZhciB0aGVhZCA9IHBhZ2VkVGFibGUucXVlcnlTZWxlY3RvckFsbCgidGhlYWQiKVswXTsKICAgIHRoZWFkLmFwcGVuZENoaWxkKGZyYWdtZW50KTsKICB9OwoKICBtZS5hbmltYXRlQ29sdW1ucyA9IGZ1bmN0aW9uKGJhY2t3YXJkcykgewogICAgdmFyIHRoZWFkID0gcGFnZWRUYWJsZS5xdWVyeVNlbGVjdG9yQWxsKCJ0aGVhZCIpWzBdOwoKICAgIHZhciBoZWFkZXJPbGQgPSB0aGVhZC5xdWVyeVNlbGVjdG9yQWxsKCJ0ciIpWzBdOwogICAgdmFyIHRib2R5T2xkID0gdGFibGUucXVlcnlTZWxlY3RvckFsbCgidGJvZHkiKVswXTsKCiAgICBtZS5maXRDb2x1bW5zKGJhY2t3YXJkcyk7CgogICAgcmVuZGVySGVhZGVyKGZhbHNlKTsKCiAgICBoZWFkZXIuc3R5bGUub3BhY2l0eSA9ICIwIjsKICAgIGhlYWRlci5zdHlsZS50cmFuc2Zvcm0gPSBiYWNrd2FyZHMgPyAidHJhbnNsYXRlWCgtMzBweCkiIDogInRyYW5zbGF0ZVgoMzBweCkiOwogICAgaGVhZGVyLnN0eWxlLnRyYW5zaXRpb24gPSAidHJhbnNmb3JtIDIwMG1zIGxpbmVhciwgb3BhY2l0eSAyMDBtcyI7CiAgICBoZWFkZXIuc3R5bGUudHJhbnNpdGlvbkRlbGF5ID0gIjAiOwoKICAgIHJlbmRlckJvZHkoZmFsc2UpOwoKICAgIGlmIChoZWFkZXJPbGQpIHsKICAgICAgaGVhZGVyT2xkLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsKICAgICAgaGVhZGVyT2xkLnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGVYKDBweCkiOwogICAgICBoZWFkZXJPbGQuc3R5bGUub3BhY2l0eSA9ICIxIjsKICAgICAgaGVhZGVyT2xkLnN0eWxlLnRyYW5zaXRpb24gPSAidHJhbnNmb3JtIDEwMG1zIGxpbmVhciwgb3BhY2l0eSAxMDBtcyI7CiAgICAgIGhlYWRlck9sZC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgInBhZ2VkdGFibGUtcmVtb3ZlLWhlYWQiKTsKICAgICAgaWYgKGhlYWRlck9sZC5zdHlsZS50cmFuc2l0aW9uRW5kKSB7CiAgICAgICAgaGVhZGVyT2xkLmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLCBmdW5jdGlvbigpIHsKICAgICAgICAgIHZhciBoZWFkZXJPbGRCeUNsYXNzID0gdGhlYWQucXVlcnlTZWxlY3RvcigiLnBhZ2VkdGFibGUtcmVtb3ZlLWhlYWQiKTsKICAgICAgICAgIGlmIChoZWFkZXJPbGRCeUNsYXNzKSB0aGVhZC5yZW1vdmVDaGlsZChoZWFkZXJPbGRCeUNsYXNzKTsKICAgICAgICB9KTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICB0aGVhZC5yZW1vdmVDaGlsZChoZWFkZXJPbGQpOwogICAgICB9CiAgICB9CgogICAgaWYgKHRib2R5T2xkKSB0YWJsZS5yZW1vdmVDaGlsZCh0Ym9keU9sZCk7CgogICAgdGJvZHkuc3R5bGUub3BhY2l0eSA9ICIwIjsKICAgIHRib2R5LnN0eWxlLnRyYW5zaXRpb24gPSAidHJhbnNmb3JtIDIwMG1zIGxpbmVhciwgb3BhY2l0eSAyMDBtcyI7CiAgICB0Ym9keS5zdHlsZS50cmFuc2l0aW9uRGVsYXkgPSAiMG1zIjsKCiAgICAvLyBmb3JjZSByZWxheW91dAogICAgd2luZG93LmdldENvbXB1dGVkU3R5bGUoaGVhZGVyKS5vcGFjaXR5OwogICAgd2luZG93LmdldENvbXB1dGVkU3R5bGUodGJvZHkpLm9wYWNpdHk7CgogICAgaWYgKGhlYWRlck9sZCkgewogICAgICBoZWFkZXJPbGQuc3R5bGUudHJhbnNmb3JtID0gYmFja3dhcmRzID8gInRyYW5zbGF0ZVgoMjBweCkiIDogInRyYW5zbGF0ZVgoLTMwcHgpIjsKICAgICAgaGVhZGVyT2xkLnN0eWxlLm9wYWNpdHkgPSAiMCI7CiAgICB9CgogICAgaGVhZGVyLnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGVYKDBweCkiOwogICAgaGVhZGVyLnN0eWxlLm9wYWNpdHkgPSAiMSI7CgogICAgdGJvZHkuc3R5bGUub3BhY2l0eSA9ICIxIjsKICB9CgogIG1lLm9uQ2hhbmdlID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgIG9uQ2hhbmdlQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogIH07CgogIHZhciB0cmlnZ2VyT25DaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgIG9uQ2hhbmdlQ2FsbGJhY2tzLmZvckVhY2goZnVuY3Rpb24ob25DaGFuZ2UpIHsKICAgICAgb25DaGFuZ2UoKTsKICAgIH0pOwogIH07CgogIHZhciBjbGVhckJvZHkgPSBmdW5jdGlvbigpIHsKICAgIGlmICh0Ym9keSkgewogICAgICB0YWJsZS5yZW1vdmVDaGlsZCh0Ym9keSk7CiAgICAgIHRib2R5ID0gbnVsbDsKICAgIH0KICB9OwoKICB2YXIgcmVuZGVyQm9keSA9IGZ1bmN0aW9uKGNsZWFyKSB7CiAgICBjYWNoZWRQYWdlZFRhYmxlQ2xpZW50V2lkdGggPSBwYWdlZFRhYmxlLmNsaWVudFdpZHRoCgogICAgdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwoKICAgIHZhciBwYWdlRGF0YSA9IGRhdGEuc2xpY2UocGFnZS5nZXRSb3dTdGFydCgpLCBwYWdlLmdldFJvd0VuZCgpKTsKCiAgICBwYWdlRGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGRhdGFSb3csIGlkeFJvdykgewogICAgICB2YXIgaHRtbFJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CiAgICAgIGh0bWxSb3cuc2V0QXR0cmlidXRlKCJjbGFzcyIsIChpZHhSb3cgJSAyICE9PTApID8gImV2ZW4iIDogIm9kZCIpOwoKICAgICAgaWYgKGNvbHVtbnMuaGFzTW9yZUxlZnRDb2x1bW5zKCkpCiAgICAgICAgaHRtbFJvdy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpKTsKCiAgICAgIGNvbHVtbnMuc3Vic2V0LmZvckVhY2goZnVuY3Rpb24oY29sdW1uRGF0YSkgewogICAgICAgIHZhciBjZWxsTmFtZSA9IGNvbHVtbkRhdGEubmFtZTsKICAgICAgICB2YXIgZGF0YUNlbGwgPSBkYXRhUm93W2NlbGxOYW1lXTsKICAgICAgICB2YXIgaHRtbENlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwoKICAgICAgICBpZiAoZGF0YUNlbGwgPT09ICJOQSIpIGh0bWxDZWxsLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAicGFnZWR0YWJsZS1uYS1jZWxsIik7CiAgICAgICAgaWYgKGRhdGFDZWxsID09PSAiX19OQV9fIikgZGF0YUNlbGwgPSAiTkEiOwoKICAgICAgICB2YXIgY2VsbFRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShkYXRhQ2VsbCk7CiAgICAgICAgaHRtbENlbGwuYXBwZW5kQ2hpbGQoY2VsbFRleHQpOwogICAgICAgIGlmIChkYXRhQ2VsbC5sZW5ndGggPiA1MCkgewogICAgICAgICAgaHRtbENlbGwuc2V0QXR0cmlidXRlKCJ0aXRsZSIsIGRhdGFDZWxsKTsKICAgICAgICB9CiAgICAgICAgaHRtbENlbGwuc2V0QXR0cmlidXRlKCJhbGlnbiIsIGNvbHVtbkRhdGEuYWxpZ24pOwogICAgICAgIGh0bWxDZWxsLnN0eWxlLnRleHRBbGlnbiA9IGNvbHVtbkRhdGEuYWxpZ247CiAgICAgICAgaHRtbENlbGwuc3R5bGUubWF4V2lkdGggPSBtYXhDb2x1bW5XaWR0aChudWxsKTsKICAgICAgICBpZiAoY29sdW1uRGF0YS53aWR0aCkgewogICAgICAgICAgaHRtbENlbGwuc3R5bGUubWluV2lkdGggPSBodG1sQ2VsbC5zdHlsZS5tYXhXaWR0aCA9IG1heENvbHVtbldpZHRoKGNvbHVtbkRhdGEud2lkdGgpOwogICAgICAgIH0KICAgICAgICBodG1sUm93LmFwcGVuZENoaWxkKGh0bWxDZWxsKTsKICAgICAgfSk7CgogICAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBjb2x1bW5zLmdldFBhZGRpbmdDb3VudCgpOyBpZHgrKykgewogICAgICAgIHZhciBwYWRkaW5nQ29sID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKICAgICAgICBwYWRkaW5nQ29sLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAicGFnZWR0YWJsZS1wYWRkaW5nLWNvbCIpOwogICAgICAgIGh0bWxSb3cuYXBwZW5kQ2hpbGQocGFkZGluZ0NvbCk7CiAgICAgIH0KCiAgICAgIGlmIChjb2x1bW5zLmhhc01vcmVSaWdodENvbHVtbnMoKSkKICAgICAgICBodG1sUm93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIikpOwoKICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoaHRtbFJvdyk7CiAgICB9KTsKCiAgICBmb3IgKHZhciBpZHhQYWRkaW5nID0gMDsgaWR4UGFkZGluZyA8IHBhZ2UuZ2V0UGFkZGluZ1Jvd3MoKTsgaWR4UGFkZGluZysrKSB7CiAgICAgIHZhciBwYWRkaW5nUm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKCiAgICAgIHZhciBwYWRkaW5nQ2VsbFJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CiAgICAgIHBhZGRpbmdDZWxsUm93LmlubmVySFRNTCA9ICImbmJzcDsiOwogICAgICBwYWRkaW5nQ2VsbFJvdy5zZXRBdHRyaWJ1dGUoImNvbHNwYW4iLCAiMTAwJSIpOwogICAgICBwYWRkaW5nUm93LmFwcGVuZENoaWxkKHBhZGRpbmdDZWxsUm93KTsKCiAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHBhZGRpbmdSb3cpOwogICAgfQoKICAgIGlmICh0eXBlb2YoY2xlYXIpID09ICJ1bmRlZmluZWQiIHx8IGNsZWFyKSBjbGVhckJvZHkoKTsKICAgIHRib2R5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKTsKICAgIHRib2R5LmFwcGVuZENoaWxkKGZyYWdtZW50KTsKCiAgICB0YWJsZS5hcHBlbmRDaGlsZCh0Ym9keSk7CiAgfTsKCiAgdmFyIGdldExhYmVsSW5mbyA9IGZ1bmN0aW9uKCkgewogICAgdmFyIHBhZ2VTdGFydCA9IHBhZ2UuZ2V0Um93U3RhcnQoKTsKICAgIHZhciBwYWdlRW5kID0gcGFnZS5nZXRSb3dFbmQoKTsKICAgIHZhciB0b3RhbFJvd3MgPSBkYXRhLmxlbmd0aDsKCiAgICB2YXIgdG90YWxSb3dzTGFiZWwgPSBvcHRpb25zLnJvd3MudG90YWwgPyBvcHRpb25zLnJvd3MudG90YWwgOiB0b3RhbFJvd3M7CiAgICB2YXIgdG90YWxSb3dzTGFiZWxGb3JtYXQgPSB0b3RhbFJvd3NMYWJlbC50b1N0cmluZygpLnJlcGxhY2UoLyhcZCkoPz0oXGRcZFxkKSsoPyFcZCkpL2csICckMSwnKTsKCiAgICB2YXIgaW5mb1RleHQgPSAocGFnZVN0YXJ0ICsgMSkgKyAiLSIgKyBwYWdlRW5kICsgIiBvZiAiICsgdG90YWxSb3dzTGFiZWxGb3JtYXQgKyAiIHJvd3MiOwogICAgaWYgKHRvdGFsUm93cyA8IHBhZ2Uucm93cykgewogICAgICBpbmZvVGV4dCA9IHRvdGFsUm93c0xhYmVsICsgIiByb3ciICsgKHRvdGFsUm93cyAhPSAxID8gInMiIDogIiIpOwogICAgfQogICAgaWYgKGNvbHVtbnMudG90YWwgPiBjb2x1bW5zLnZpc2libGUpIHsKICAgICAgdmFyIHRvdGFsQ29sdW1uc0xhYmVsID0gb3B0aW9ucy5jb2x1bW5zLnRvdGFsID8gb3B0aW9ucy5jb2x1bW5zLnRvdGFsIDogY29sdW1ucy50b3RhbDsKCiAgICAgIGluZm9UZXh0ID0gaW5mb1RleHQgKyAiIHwgIiArIChjb2x1bW5zLm51bWJlciArIDEpICsgIi0iICsKICAgICAgICAoTWF0aC5taW4oY29sdW1ucy5udW1iZXIgKyBjb2x1bW5zLnZpc2libGUsIGNvbHVtbnMudG90YWwpKSArCiAgICAgICAgIiBvZiAiICsgdG90YWxDb2x1bW5zTGFiZWwgKyAiIGNvbHVtbnMiOwogICAgfQoKICAgIHJldHVybiBpbmZvVGV4dDsKICB9OwoKICB2YXIgY2xlYXJGb290ZXIgPSBmdW5jdGlvbigpIHsKICAgIGZvb3RlciA9IHBhZ2VkVGFibGUucXVlcnlTZWxlY3RvckFsbCgiZGl2LnBhZ2VkdGFibGUtZm9vdGVyIilbMF07CiAgICBmb290ZXIuaW5uZXJIVE1MID0gIiI7CgogICAgcmV0dXJuIGZvb3RlcjsKICB9OwoKICB2YXIgY3JlYXRlUGFnZUxpbmsgPSBmdW5jdGlvbihpZHhQYWdlKSB7CiAgICB2YXIgcGFnZUxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CiAgICBwYWdlTGlua0NsYXNzID0gaWR4UGFnZSA9PT0gcGFnZS5udW1iZXIgPyAicGFnZWR0YWJsZS1pbmRleCBwYWdlZHRhYmxlLWluZGV4LWN1cnJlbnQiIDogInBhZ2VkdGFibGUtaW5kZXgiOwogICAgcGFnZUxpbmsuc2V0QXR0cmlidXRlKCJjbGFzcyIsIHBhZ2VMaW5rQ2xhc3MpOwogICAgcGFnZUxpbmsuc2V0QXR0cmlidXRlKCJkYXRhLXBhZ2UtaW5kZXgiLCBpZHhQYWdlKTsKICAgIHBhZ2VMaW5rLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgcGFnZS5zZXRQYWdlTnVtYmVyKHBhcnNlSW50KHRoaXMuZ2V0QXR0cmlidXRlKCJkYXRhLXBhZ2UtaW5kZXgiKSkpOwogICAgICByZW5kZXJCb2R5KCk7CiAgICAgIHJlbmRlckZvb3RlcigpOwoKICAgICAgdHJpZ2dlck9uQ2hhbmdlKCk7CiAgICB9OwoKICAgIHBhZ2VMaW5rLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGlkeFBhZ2UgKyAxKSk7CgogICAgcmV0dXJuIHBhZ2VMaW5rOwogIH0KCiAgdmFyIHJlbmRlckZvb3RlciA9IGZ1bmN0aW9uKCkgewogICAgZm9vdGVyID0gY2xlYXJGb290ZXIoKTsKCiAgICB2YXIgbmV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKICAgIG5leHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIk5leHQiKSk7CiAgICBuZXh0Lm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgcGFnZS5zZXRQYWdlTnVtYmVyKHBhZ2UubnVtYmVyICsgMSk7CiAgICAgIHJlbmRlckJvZHkoKTsKICAgICAgcmVuZGVyRm9vdGVyKCk7CgogICAgICB0cmlnZ2VyT25DaGFuZ2UoKTsKICAgIH07CiAgICBpZiAoZGF0YS5sZW5ndGggPiBwYWdlLnJvd3MpIGZvb3Rlci5hcHBlbmRDaGlsZChuZXh0KTsKCiAgICB2YXIgcGFnZU51bWJlcnMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIHBhZ2VOdW1iZXJzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAicGFnZWR0YWJsZS1pbmRleGVzIik7CgogICAgdmFyIHBhZ2VSYW5nZSA9IHBhZ2UuZ2V0VmlzaWJsZVBhZ2VSYW5nZSgpOwoKICAgIGlmIChwYWdlUmFuZ2UuZmlyc3QpIHsKICAgICAgdmFyIHBhZ2VMaW5rID0gY3JlYXRlUGFnZUxpbmsoMCk7CiAgICAgIHBhZ2VOdW1iZXJzLmFwcGVuZENoaWxkKHBhZ2VMaW5rKTsKCiAgICAgIHZhciBwYWdlU2VwYXJhdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgIHBhZ2VTZXBhcmF0b3Iuc2V0QXR0cmlidXRlKCJjbGFzcyIsICJwYWdlZHRhYmxlLWluZGV4LXNlcGFyYXRvci1sZWZ0Iik7CiAgICAgIHBhZ2VTZXBhcmF0b3IuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIi4uLiIpKQogICAgICBwYWdlTnVtYmVycy5hcHBlbmRDaGlsZChwYWdlU2VwYXJhdG9yKTsKICAgIH0KCiAgICBmb3IgKHZhciBpZHhQYWdlID0gcGFnZVJhbmdlLnN0YXJ0OyBpZHhQYWdlIDwgcGFnZVJhbmdlLmVuZDsgaWR4UGFnZSsrKSB7CiAgICAgIHZhciBwYWdlTGluayA9IGNyZWF0ZVBhZ2VMaW5rKGlkeFBhZ2UpOwoKICAgICAgcGFnZU51bWJlcnMuYXBwZW5kQ2hpbGQocGFnZUxpbmspOwogICAgfQoKICAgIGlmIChwYWdlUmFuZ2UubGFzdCkgewogICAgICB2YXIgcGFnZVNlcGFyYXRvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBwYWdlU2VwYXJhdG9yLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAicGFnZWR0YWJsZS1pbmRleC1zZXBhcmF0b3ItcmlnaHQiKTsKICAgICAgcGFnZVNlcGFyYXRvci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiLi4uIikpCiAgICAgIHBhZ2VOdW1iZXJzLmFwcGVuZENoaWxkKHBhZ2VTZXBhcmF0b3IpOwoKICAgICAgdmFyIHBhZ2VMaW5rID0gY3JlYXRlUGFnZUxpbmsocGFnZS50b3RhbCAtIDEpOwogICAgICBwYWdlTnVtYmVycy5hcHBlbmRDaGlsZChwYWdlTGluayk7CiAgICB9CgogICAgaWYgKGRhdGEubGVuZ3RoID4gcGFnZS5yb3dzKSBmb290ZXIuYXBwZW5kQ2hpbGQocGFnZU51bWJlcnMpOwoKICAgIHZhciBwcmV2aW91cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKICAgIHByZXZpb3VzLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJQcmV2aW91cyIpKTsKICAgIHByZXZpb3VzLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgcGFnZS5zZXRQYWdlTnVtYmVyKHBhZ2UubnVtYmVyIC0gMSk7CiAgICAgIHJlbmRlckJvZHkoKTsKICAgICAgcmVuZGVyRm9vdGVyKCk7CgogICAgICB0cmlnZ2VyT25DaGFuZ2UoKTsKICAgIH07CiAgICBpZiAoZGF0YS5sZW5ndGggPiBwYWdlLnJvd3MpIGZvb3Rlci5hcHBlbmRDaGlsZChwcmV2aW91cyk7CgogICAgdmFyIGluZm9MYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgaW5mb0xhYmVsLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAicGFnZWR0YWJsZS1pbmZvIik7CiAgICBpbmZvTGFiZWwuc2V0QXR0cmlidXRlKCJ0aXRsZSIsIGdldExhYmVsSW5mbygpKTsKICAgIGluZm9MYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnZXRMYWJlbEluZm8oKSkpOwogICAgZm9vdGVyLmFwcGVuZENoaWxkKGluZm9MYWJlbCk7CgogICAgdmFyIGVuYWJsZWRDbGFzcyA9ICJwYWdlZHRhYmxlLWluZGV4LW5hdiI7CiAgICB2YXIgZGlzYWJsZWRDbGFzcyA9ICJwYWdlZHRhYmxlLWluZGV4LW5hdiBwYWdlZHRhYmxlLWluZGV4LW5hdi1kaXNhYmxlZCI7CiAgICBwcmV2aW91cy5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgcGFnZS5udW1iZXIgPD0gMCA/IGRpc2FibGVkQ2xhc3MgOiBlbmFibGVkQ2xhc3MpOwogICAgbmV4dC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgKHBhZ2UubnVtYmVyICsgMSkgKiBwYWdlLnJvd3MgPj0gZGF0YS5sZW5ndGggPyBkaXNhYmxlZENsYXNzIDogZW5hYmxlZENsYXNzKTsKICB9OwoKICB2YXIgbWVhc3VyZXNDZWxsID0gbnVsbDsKCiAgdmFyIHJlbmRlck1lYXN1cmVzID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgbWVhc3VyZXNUYWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7CiAgICBtZWFzdXJlc1RhYmxlLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgIG1lYXN1cmVzVGFibGUuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwogICAgbWVhc3VyZXNUYWJsZS5zdHlsZS53aGl0ZVNwYWNlID0gIm5vd3JhcCI7CiAgICBtZWFzdXJlc1RhYmxlLnN0eWxlLmhlaWdodCA9ICJhdXRvIjsKICAgIG1lYXN1cmVzVGFibGUuc3R5bGUud2lkdGggPSAiYXV0byI7CgogICAgdmFyIG1lYXN1cmVzUm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKICAgIG1lYXN1cmVzVGFibGUuYXBwZW5kQ2hpbGQobWVhc3VyZXNSb3cpOwoKICAgIG1lYXN1cmVzQ2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CiAgICB2YXIgc2FtcGxlU3RyaW5nID0gIkFCQ0RFRkdISUowMTIzNDU2Nzg5IjsKICAgIG1lYXN1cmVzQ2VsbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzYW1wbGVTdHJpbmcpKTsKCiAgICBtZWFzdXJlc1Jvdy5hcHBlbmRDaGlsZChtZWFzdXJlc0NlbGwpOwoKICAgIHRhYmxlRGl2LmFwcGVuZENoaWxkKG1lYXN1cmVzVGFibGUpOwogIH0KCiAgbWUuaW5pdCA9IGZ1bmN0aW9uKCkgewogICAgdGFibGVEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIHBhZ2VkVGFibGUuYXBwZW5kQ2hpbGQodGFibGVEaXYpOwogICAgdmFyIHBhZ2VkVGFibGVDbGFzcyA9IGRhdGEubGVuZ3RoID4gMCA/CiAgICAgICJwYWdlZHRhYmxlIHBhZ2VkdGFibGUtbm90LWVtcHR5IiA6CiAgICAgICJwYWdlZHRhYmxlIHBhZ2VkdGFibGUtZW1wdHkiOwoKICAgIGlmIChjb2x1bW5zLnRvdGFsID09IDAgfHwgKGNvbHVtbnMuZW1wdHlOYW1lcygpICYmIGRhdGEubGVuZ3RoID09IDApKSB7CiAgICAgIHBhZ2VkVGFibGVDbGFzcyA9IHBhZ2VkVGFibGVDbGFzcyArICIgcGFnZWR0YWJsZS1lbXB0eS1jb2x1bW5zIjsKICAgIH0KCiAgICB0YWJsZURpdi5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgcGFnZWRUYWJsZUNsYXNzKTsKCiAgICByZW5kZXJNZWFzdXJlcygpOwogICAgbWVhc3VyZXIuY2FsY3VsYXRlKG1lYXN1cmVzQ2VsbCk7CiAgICBjb2x1bW5zLmNhbGN1bGF0ZVdpZHRocyhtZWFzdXJlci5tZWFzdXJlcyk7CgogICAgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwogICAgdGFibGUuc2V0QXR0cmlidXRlKCJjZWxsc3BhY2luZyIsICIwIik7CiAgICB0YWJsZS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgInRhYmxlIHRhYmxlLWNvbmRlbnNlZCIpOwogICAgdGFibGVEaXYuYXBwZW5kQ2hpbGQodGFibGUpOwoKICAgIHRhYmxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoZWFkIikpOwoKICAgIHZhciBmb290ZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIGZvb3RlckRpdi5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgInBhZ2VkdGFibGUtZm9vdGVyIik7CiAgICB0YWJsZURpdi5hcHBlbmRDaGlsZChmb290ZXJEaXYpOwoKICAgIC8vIGlmIHRoZSBob3N0IGhhcyBub3QgeWV0IHByb3ZpZGVkIGhvcml6b250YWwgc3BhY2UsIHJlbmRlciBoaWRkZW4KICAgIGlmICh0YWJsZURpdi5jbGllbnRXaWR0aCA8PSAwKSB7CiAgICAgIHRhYmxlRGl2LnN0eWxlLm9wYWNpdHkgPSAiMCI7CiAgICB9CgogICAgbWUucmVuZGVyKCk7CgogICAgLy8gcmV0cnkgc2VpemluZyBjb2x1bW5zIGxhdGVyIGlmIHRoZSBob3N0IGhhcyBub3QgcHJvdmlkZWQgc3BhY2UKICAgIGZ1bmN0aW9uIHJldHJ5Rml0KCkgewogICAgICBpZiAodGFibGVEaXYuY2xpZW50V2lkdGggPD0gMCkgewogICAgICAgIHNldFRpbWVvdXQocmV0cnlGaXQsIDEwMCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbWUucmVuZGVyKCk7CiAgICAgICAgdHJpZ2dlck9uQ2hhbmdlKCk7CiAgICAgIH0KICAgIH0KICAgIGlmICh0YWJsZURpdi5jbGllbnRXaWR0aCA8PSAwKSB7CiAgICAgIHJldHJ5Rml0KCk7CiAgICB9CiAgfTsKCiAgdmFyIHJlZ2lzdGVyV2lkdGhzID0gZnVuY3Rpb24oKSB7CiAgICBjb2x1bW5zLnN1YnNldCA9IGNvbHVtbnMuc3Vic2V0Lm1hcChmdW5jdGlvbihjb2x1bW4pIHsKICAgICAgY29sdW1uLndpZHRoID0gY29sdW1ucy53aWR0aHNbY29sdW1uLm5hbWVdLmlubmVyOwogICAgICByZXR1cm4gY29sdW1uOwogICAgfSk7CiAgfTsKCiAgdmFyIHBhcnNlUGFkZGluZyA9IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUpID49IDAgPyBwYXJzZUludCh2YWx1ZSkgOiAwOwogIH07CgogIG1lLmZpeGVkSGVpZ2h0ID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gb3B0aW9ucy5yb3dzLm1heCAhPSBudWxsOwogIH0KCiAgbWUuZml0Um93cyA9IGZ1bmN0aW9uKCkgewogICAgaWYgKG1lLmZpeGVkSGVpZ2h0KCkpCiAgICAgIHJldHVybjsKCiAgICBtZWFzdXJlci5jYWxjdWxhdGUobWVhc3VyZXNDZWxsKTsKCiAgICB2YXIgcm93cyA9IG9wdGlvbnMucm93cy5taW4gIT09IG51bGwgPyBvcHRpb25zLnJvd3MubWluIDogMDsKICAgIHZhciBoZWFkZXJIZWlnaHQgPSBoZWFkZXIgIT09IG51bGwgJiYgaGVhZGVyLm9mZnNldEhlaWdodCA+IDAgPyBoZWFkZXIub2Zmc2V0SGVpZ2h0IDogMDsKICAgIHZhciBmb290ZXJIZWlnaHQgPSBmb290ZXIgIT09IG51bGwgJiYgZm9vdGVyLm9mZnNldEhlaWdodCA+IDAgPyBmb290ZXIub2Zmc2V0SGVpZ2h0IDogMDsKCiAgICBpZiAocGFnZWRUYWJsZS5vZmZzZXRIZWlnaHQgPiAwKSB7CiAgICAgIHZhciBhdmFpbGFibGVIZWlnaHQgPSBwYWdlZFRhYmxlLm9mZnNldEhlaWdodCAtIGhlYWRlckhlaWdodCAtIGZvb3RlckhlaWdodDsKICAgICAgcm93cyA9IE1hdGguZmxvb3IoKGF2YWlsYWJsZUhlaWdodCkgLyBtZWFzdXJlci5tZWFzdXJlcy5oZWlnaHQpOwogICAgfQoKICAgIHJvd3MgPSBvcHRpb25zLnJvd3MubWluICE9PSBudWxsID8gTWF0aC5tYXgob3B0aW9ucy5yb3dzLm1pbiwgcm93cykgOiByb3dzOwoKICAgIHBhZ2Uuc2V0Um93cyhyb3dzKTsKICB9CgogIC8vIFRoZSBnb2FsIG9mIHRoaXMgZnVuY3Rpb24gaXMgdG8gYWRkIGFzIG1hbnkgY29sdW1ucyBhcyBwb3NzaWJsZQogIC8vIHN0YXJ0aW5nIGZyb20gbGVmdC10by1yaWdodCwgd2hlbiB0aGUgcmlnaHQgbW9zdCBsaW1pdCBpcyByZWFjaGVkCiAgLy8gaXQgdHJpZXMgdG8gYWRkIGNvbHVtbnMgZnJvbSB0aGUgbGVmdCBhcyB3ZWxsLgogIC8vCiAgLy8gV2hlbiBzdGFydEJhY2t3YXJkcyBpcyB0cnVlIGNvbHVtbnMgYXJlIGFkZGVkIGZyb20gcmlnaHQtdG8tbGVmdAogIG1lLmZpdENvbHVtbnMgPSBmdW5jdGlvbihzdGFydEJhY2t3YXJkcykgewogICAgbWVhc3VyZXIuY2FsY3VsYXRlKG1lYXN1cmVzQ2VsbCk7CiAgICBjb2x1bW5zLmNhbGN1bGF0ZVdpZHRocyhtZWFzdXJlci5tZWFzdXJlcyk7CgogICAgaWYgKHRhYmxlRGl2LmNsaWVudFdpZHRoID4gMCkgewogICAgICB0YWJsZURpdi5zdHlsZS5vcGFjaXR5ID0gMTsKICAgIH0KCiAgICB2YXIgdmlzaWJsZUNvbHVtbnMgPSB0YWJsZURpdi5jbGllbnRXaWR0aCA8PSAwID8gTWF0aC5tYXgoY29sdW1ucy5taW4sIDEpIDogMTsKICAgIHZhciBjb2x1bW5OdW1iZXIgPSBjb2x1bW5zLm51bWJlcjsKICAgIHZhciBwYWRkaW5nQ291bnQgPSAwOwoKICAgIC8vIHRyYWNrIGEgbGlzdCBvZiBhZGRlZCBjb2x1bW5zIGFzIHdlIGJ1aWxkIHRoZSB2aXNpYmxlIG9uZXMgdG8gYWxsb3cgdXMKICAgIC8vIHRvIHJlbW92ZSBjb2x1bW5zIHdoZW4gdGhleSBkb24ndCBmaXQgYW55bW9yZS4KICAgIHZhciBjb2x1bW5IaXN0b3J5ID0gW107CgogICAgdmFyIGxhc3RUYWJsZUhlaWdodCA9IDA7CiAgICB2YXIgYmFja3dhcmRzID0gc3RhcnRCYWNrd2FyZHM7CgogICAgdmFyIHRhYmxlRGl2U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0YWJsZURpdiwgbnVsbCk7CiAgICB2YXIgdGFibGVEaXZQYWRkaW5nID0gcGFyc2VQYWRkaW5nKHRhYmxlRGl2U3R5bGUucGFkZGluZ0xlZnQpICsKICAgICAgcGFyc2VQYWRkaW5nKHRhYmxlRGl2U3R5bGUucGFkZGluZ1JpZ2h0KTsKCiAgICB2YXIgYWRkUGFkZGluZ0NvbCA9IGZhbHNlOwogICAgdmFyIGN1cnJlbnRXaWR0aCA9IDA7CgogICAgd2hpbGUgKHRydWUpIHsKICAgICAgY29sdW1ucy5zZXRWaXNpYmxlQ29sdW1ucyhjb2x1bW5OdW1iZXIsIHZpc2libGVDb2x1bW5zLCBwYWRkaW5nQ291bnQpOwogICAgICBjdXJyZW50V2lkdGggPSBjb2x1bW5zLmdldFdpZHRoKCk7CgogICAgICBpZiAodGFibGVEaXYuY2xpZW50V2lkdGggLSB0YWJsZURpdlBhZGRpbmcgPCBjdXJyZW50V2lkdGgpIHsKICAgICAgICBicmVhazsKICAgICAgfQoKICAgICAgY29sdW1uSGlzdG9yeS5wdXNoKHsKICAgICAgICBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciwKICAgICAgICB2aXNpYmxlQ29sdW1uczogdmlzaWJsZUNvbHVtbnMsCiAgICAgICAgcGFkZGluZ0NvdW50OiBwYWRkaW5nQ291bnQKICAgICAgfSk7CgogICAgICBpZiAoY29sdW1uSGlzdG9yeS5sZW5ndGggPiAxMDApIHsKICAgICAgICBjb25zb2xlLmVycm9yKCJNb3JlIHRoYW4gMTAwIHRyaWVzIHRvIGZpdCBjb2x1bW5zLCBhYm9ydGluZyIpOwogICAgICAgIGJyZWFrOwogICAgICB9CgogICAgICBpZiAoY29sdW1ucy5tYXggIT09IG51bGwgJiYKICAgICAgICBjb2x1bW5zLnZpc2libGUgKyBjb2x1bW5zLmdldFBhZGRpbmdDb3VudCgpID49IGNvbHVtbnMubWF4KSB7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICAgIC8vIGlmIHdlIHJ1biBvdXQgb2YgcmlnaHQtY29sdW1ucwogICAgICBpZiAoIWJhY2t3YXJkcyAmJiBjb2x1bW5OdW1iZXIgKyBjb2x1bW5zLnZpc2libGUgPj0gY29sdW1ucy50b3RhbCkgewogICAgICAgIC8vIGlmIHdlIHN0YXJ0ZWQgYWRkaW5nIHJpZ2h0LWNvbHVtbnMsIHRyeSBhZGRpbmcgbGVmdC1jb2x1bW5zCiAgICAgICAgaWYgKCFzdGFydEJhY2t3YXJkcyAmJiBjb2x1bW5OdW1iZXIgPiAwKSB7CiAgICAgICAgICBiYWNrd2FyZHMgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChjb2x1bW5zLm1pbiA9PT0gbnVsbCB8fCB2aXNpYmxlQ29sdW1ucyArIGNvbHVtbnMuZ2V0UGFkZGluZ0NvdW50KCkgPj0gY29sdW1ucy5taW4pIHsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIHBhZGRpbmdDb3VudCA9IHBhZGRpbmdDb3VudCArIDE7CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBpZiB3ZSBydW4gb3V0IG9mIGxlZnQtY29sdW1ucwogICAgICBpZiAoYmFja3dhcmRzICYmIGNvbHVtbk51bWJlciA9PSAwKSB7CiAgICAgICAgLy8gaWYgd2Ugc3RhcnRlZCBhZGRpbmcgbGVmdC1jb2x1bW5zLCB0cnkgYWRkaW5nIHJpZ2h0LWNvbHVtbnMKICAgICAgICBpZiAoc3RhcnRCYWNrd2FyZHMgJiYgY29sdW1uTnVtYmVyICsgY29sdW1ucy52aXNpYmxlIDwgY29sdW1ucy50b3RhbCkgewogICAgICAgICAgYmFja3dhcmRzID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGNvbHVtbnMubWluID09PSBudWxsIHx8IHZpc2libGVDb2x1bW5zICsgY29sdW1ucy5nZXRQYWRkaW5nQ291bnQoKSA+PSBjb2x1bW5zLm1pbikgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgcGFkZGluZ0NvdW50ID0gcGFkZGluZ0NvdW50ICsgMTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIHdoZW4gbW92aW5nIGJhY2t3YXJkcyB0cnkgZml0dGluZyBsZWZ0IGNvbHVtbnMgZmlyc3QKICAgICAgaWYgKGJhY2t3YXJkcyAmJiBjb2x1bW5OdW1iZXIgPiAwKSB7CiAgICAgICAgY29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyIC0gMTsKICAgICAgfQoKICAgICAgaWYgKGNvbHVtbk51bWJlciArIHZpc2libGVDb2x1bW5zIDwgY29sdW1ucy50b3RhbCkgewogICAgICAgIHZpc2libGVDb2x1bW5zID0gdmlzaWJsZUNvbHVtbnMgKyAxOwogICAgICB9CiAgICB9CgogICAgdmFyIGxhc3RSZW5kZXJhYmxlQ29sdW1uID0gewogICAgICAgIGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVyLAogICAgICAgIHZpc2libGVDb2x1bW5zOiB2aXNpYmxlQ29sdW1ucywKICAgICAgICBwYWRkaW5nQ291bnQ6IHBhZGRpbmdDb3VudAogICAgfTsKCiAgICBpZiAoY29sdW1uSGlzdG9yeS5sZW5ndGggPiAwKSB7CiAgICAgIGxhc3RSZW5kZXJhYmxlQ29sdW1uID0gY29sdW1uSGlzdG9yeVtjb2x1bW5IaXN0b3J5Lmxlbmd0aCAtIDFdOwogICAgfQoKICAgIGNvbHVtbnMuc2V0VmlzaWJsZUNvbHVtbnMoCiAgICAgIGxhc3RSZW5kZXJhYmxlQ29sdW1uLmNvbHVtbk51bWJlciwKICAgICAgbGFzdFJlbmRlcmFibGVDb2x1bW4udmlzaWJsZUNvbHVtbnMsCiAgICAgIGxhc3RSZW5kZXJhYmxlQ29sdW1uLnBhZGRpbmdDb3VudCk7CgogICAgaWYgKHBhZ2VkVGFibGUub2Zmc2V0V2lkdGggPiAwKSB7CiAgICAgIHBhZ2Uuc2V0VmlzaWJsZVBhZ2VzKE1hdGgubWF4KE1hdGguY2VpbCgxLjAgKiAocGFnZWRUYWJsZS5vZmZzZXRXaWR0aCAtIDI1MCkgLyA0MCksIDIpKTsKICAgIH0KCiAgICByZWdpc3RlcldpZHRocygpOwogIH07CgogIG1lLmZpdCA9IGZ1bmN0aW9uKHN0YXJ0QmFja3dhcmRzKSB7CiAgICBtZS5maXRSb3dzKCk7CiAgICBtZS5maXRDb2x1bW5zKHN0YXJ0QmFja3dhcmRzKTsKICB9CgogIG1lLnJlbmRlciA9IGZ1bmN0aW9uKCkgewogICAgbWUuZml0Q29sdW1ucyhmYWxzZSk7CgogICAgLy8gcmVuZGVyIGhlYWRlci9mb290ZXIgdG8gbWVhc3VyZSBoZWlnaHQgYWNjdXJhdGVseQogICAgcmVuZGVySGVhZGVyKCk7CiAgICByZW5kZXJGb290ZXIoKTsKCiAgICBtZS5maXRSb3dzKCk7CiAgICByZW5kZXJCb2R5KCk7CgogICAgLy8gcmUtcmVuZGVyIGZvb3RlciB0byBtYXRjaCBuZXcgcm93cwogICAgcmVuZGVyRm9vdGVyKCk7CiAgfQoKICB2YXIgcmVzaXplTGFzdFdpZHRoID0gLTE7CiAgdmFyIHJlc2l6ZUxhc3RIZWlnaHQgPSAtMTsKICB2YXIgcmVzaXplTmV3V2lkdGggPSAtMTsKICB2YXIgcmVzaXplTmV3SGVpZ2h0ID0gLTE7CiAgdmFyIHJlc2l6ZVBlbmRpbmcgPSBmYWxzZTsKCiAgbWUucmVzaXplID0gZnVuY3Rpb24obmV3V2lkdGgsIG5ld0hlaWdodCkgewoKICAgIGZ1bmN0aW9uIHJlc2l6ZURlbGF5ZWQoKSB7CiAgICAgIHJlc2l6ZVBlbmRpbmcgPSBmYWxzZTsKCiAgICAgIGlmICgKICAgICAgICAocmVzaXplTmV3V2lkdGggIT09IHJlc2l6ZUxhc3RXaWR0aCkgfHwKICAgICAgICAoIW1lLmZpeGVkSGVpZ2h0KCkgJiYgcmVzaXplTmV3SGVpZ2h0ICE9PSByZXNpemVMYXN0SGVpZ2h0KQogICAgICApIHsKICAgICAgICByZXNpemVMYXN0V2lkdGggPSByZXNpemVOZXdXaWR0aDsKICAgICAgICByZXNpemVMYXN0SGVpZ2h0ID0gcmVzaXplTmV3SGVpZ2h0OwoKICAgICAgICBzZXRUaW1lb3V0KHJlc2l6ZURlbGF5ZWQsIDIwMCk7CiAgICAgICAgcmVzaXplUGVuZGluZyA9IHRydWU7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbWUucmVuZGVyKCk7CiAgICAgICAgdHJpZ2dlck9uQ2hhbmdlKCk7CgogICAgICAgIHJlc2l6ZUxhc3RXaWR0aCA9IC0xOwogICAgICAgIHJlc2l6ZUxhc3RIZWlnaHQgPSAtMTsKICAgICAgfQogICAgfQoKICAgIHJlc2l6ZU5ld1dpZHRoID0gbmV3V2lkdGg7CiAgICByZXNpemVOZXdIZWlnaHQgPSBuZXdIZWlnaHQ7CgogICAgaWYgKCFyZXNpemVQZW5kaW5nKSByZXNpemVEZWxheWVkKCk7CiAgfTsKfTsKCnZhciBQYWdlZFRhYmxlRG9jOwooZnVuY3Rpb24gKFBhZ2VkVGFibGVEb2MpIHsKICB2YXIgYWxsUGFnZWRUYWJsZXMgPSBbXTsKCiAgUGFnZWRUYWJsZURvYy5pbml0QWxsID0gZnVuY3Rpb24oKSB7CiAgICBhbGxQYWdlZFRhYmxlcyA9IFtdOwoKICAgIHZhciBwYWdlZFRhYmxlcyA9IFtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtcGFnZWR0YWJsZT0iZmFsc2UiXSxbZGF0YS1wYWdlZHRhYmxlPSIiXScpKTsKICAgIHBhZ2VkVGFibGVzLmZvckVhY2goZnVuY3Rpb24ocGFnZWRUYWJsZSwgaWR4KSB7CiAgICAgIHBhZ2VkVGFibGUuc2V0QXR0cmlidXRlKCJkYXRhLXBhZ2VkdGFibGUiLCAidHJ1ZSIpOwogICAgICBwYWdlZFRhYmxlLnNldEF0dHJpYnV0ZSgicGFnZWR0YWJsZS1wYWdlIiwgMCk7CiAgICAgIHBhZ2VkVGFibGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsICJwYWdlZHRhYmxlLXdyYXBwZXIiKTsKCiAgICAgIHZhciBwYWdlZFRhYmxlSW5zdGFuY2UgPSBuZXcgUGFnZWRUYWJsZShwYWdlZFRhYmxlKTsKICAgICAgcGFnZWRUYWJsZUluc3RhbmNlLmluaXQoKTsKCiAgICAgIGFsbFBhZ2VkVGFibGVzLnB1c2gocGFnZWRUYWJsZUluc3RhbmNlKTsKICAgIH0pOwogIH07CgogIFBhZ2VkVGFibGVEb2MucmVzaXplQWxsID0gZnVuY3Rpb24oKSB7CiAgICBhbGxQYWdlZFRhYmxlcy5mb3JFYWNoKGZ1bmN0aW9uKHBhZ2VkVGFibGUpIHsKICAgICAgcGFnZWRUYWJsZS5yZW5kZXIoKTsKICAgIH0pOwogIH07CgogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBQYWdlZFRhYmxlRG9jLnJlc2l6ZUFsbCk7CgogIHJldHVybiBQYWdlZFRhYmxlRG9jOwp9KShQYWdlZFRhYmxlRG9jIHx8IChQYWdlZFRhYmxlRG9jID0ge30pKTsKCndpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICBQYWdlZFRhYmxlRG9jLmluaXRBbGwoKTsKfTsK"></script>
<script src="data:application/javascript;base64,CgovKioKICogalF1ZXJ5IFBsdWdpbjogU3RpY2t5IFRhYnMKICoKICogQGF1dGhvciBBaWRhbiBMaXN0ZXIgPGFpZGFuQHBocC5uZXQ+CiAqIGFkYXB0ZWQgYnkgUnViZW4gQXJzbGFuIHRvIGFjdGl2YXRlIHBhcmVudCB0YWJzIHRvbwogKiBodHRwOi8vd3d3LmFpZGFubGlzdGVyLmNvbS8yMDE0LzAzL3BlcnNpc3RpbmctdGhlLXRhYi1zdGF0ZS1pbi1ib290c3RyYXAvCiAqLwooZnVuY3Rpb24oJCkgewogICJ1c2Ugc3RyaWN0IjsKICAkLmZuLnJtYXJrZG93blN0aWNreVRhYnMgPSBmdW5jdGlvbigpIHsKICAgIHZhciBjb250ZXh0ID0gdGhpczsKICAgIC8vIFNob3cgdGhlIHRhYiBjb3JyZXNwb25kaW5nIHdpdGggdGhlIGhhc2ggaW4gdGhlIFVSTCwgb3IgdGhlIGZpcnN0IHRhYgogICAgdmFyIHNob3dTdHVmZkZyb21IYXNoID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2g7CiAgICAgIHZhciBzZWxlY3RvciA9IGhhc2ggPyAnYVtocmVmPSInICsgaGFzaCArICciXScgOiAnbGkuYWN0aXZlID4gYSc7CiAgICAgIHZhciAkc2VsZWN0b3IgPSAkKHNlbGVjdG9yLCBjb250ZXh0KTsKICAgICAgaWYoJHNlbGVjdG9yLmRhdGEoJ3RvZ2dsZScpID09PSAidGFiIikgewogICAgICAgICRzZWxlY3Rvci50YWIoJ3Nob3cnKTsKICAgICAgICAvLyB3YWxrIHVwIHRoZSBhbmNlc3RvcnMgb2YgdGhpcyBlbGVtZW50LCBzaG93IGFueSBoaWRkZW4gdGFicwogICAgICAgICRzZWxlY3Rvci5wYXJlbnRzKCcuc2VjdGlvbi50YWJzZXQnKS5lYWNoKGZ1bmN0aW9uKGksIGVsbSkgewogICAgICAgICAgdmFyIGxpbmsgPSAkKCdhW2hyZWY9IiMnICsgJChlbG0pLmF0dHIoJ2lkJykgKyAnIl0nKTsKICAgICAgICAgIGlmKGxpbmsuZGF0YSgndG9nZ2xlJykgPT09ICJ0YWIiKSB7CiAgICAgICAgICAgIGxpbmsudGFiKCJzaG93Iik7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH07CgoKICAgIC8vIFNldCB0aGUgY29ycmVjdCB0YWIgd2hlbiB0aGUgcGFnZSBsb2FkcwogICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CgogICAgLy8gU2V0IHRoZSBjb3JyZWN0IHRhYiB3aGVuIGEgdXNlciB1c2VzIHRoZWlyIGJhY2svZm9yd2FyZCBidXR0b24KICAgICQod2luZG93KS5vbignaGFzaGNoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICBzaG93U3R1ZmZGcm9tSGFzaChjb250ZXh0KTsKICAgIH0pOwoKICAgIC8vIENoYW5nZSB0aGUgVVJMIHdoZW4gdGFicyBhcmUgY2xpY2tlZAogICAgJCgnYScsIGNvbnRleHQpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgdGhpcy5ocmVmKTsKICAgICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CiAgICB9KTsKCiAgICByZXR1cm4gdGhpczsKICB9Owp9KGpRdWVyeSkpOwoKd2luZG93LmJ1aWxkVGFic2V0cyA9IGZ1bmN0aW9uKHRvY0lEKSB7CgogIC8vIGJ1aWxkIGEgdGFic2V0IGZyb20gYSBzZWN0aW9uIGRpdiB3aXRoIHRoZSAudGFic2V0IGNsYXNzCiAgZnVuY3Rpb24gYnVpbGRUYWJzZXQodGFic2V0KSB7CgogICAgLy8gY2hlY2sgZm9yIGZhZGUgYW5kIHBpbGxzIG9wdGlvbnMKICAgIHZhciBmYWRlID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtZmFkZSIpOwogICAgdmFyIHBpbGxzID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtcGlsbHMiKTsKICAgIHZhciBuYXZDbGFzcyA9IHBpbGxzID8gIm5hdi1waWxscyIgOiAibmF2LXRhYnMiOwoKICAgIC8vIGRldGVybWluZSB0aGUgaGVhZGluZyBsZXZlbCBvZiB0aGUgdGFic2V0IGFuZCB0YWJzCiAgICB2YXIgbWF0Y2ggPSB0YWJzZXQuYXR0cignY2xhc3MnKS5tYXRjaCgvbGV2ZWwoXGQpIC8pOwogICAgaWYgKG1hdGNoID09PSBudWxsKQogICAgICByZXR1cm47CiAgICB2YXIgdGFic2V0TGV2ZWwgPSBOdW1iZXIobWF0Y2hbMV0pOwogICAgdmFyIHRhYkxldmVsID0gdGFic2V0TGV2ZWwgKyAxOwoKICAgIC8vIGZpbmQgYWxsIHN1YmhlYWRpbmdzIGltbWVkaWF0ZWx5IGJlbG93CiAgICB2YXIgdGFicyA9IHRhYnNldC5maW5kKCJkaXYuc2VjdGlvbi5sZXZlbCIgKyB0YWJMZXZlbCk7CiAgICBpZiAoIXRhYnMubGVuZ3RoKQogICAgICByZXR1cm47CgogICAgLy8gY3JlYXRlIHRhYmxpc3QgYW5kIHRhYi1jb250ZW50IGVsZW1lbnRzCiAgICB2YXIgdGFiTGlzdCA9ICQoJzx1bCBjbGFzcz0ibmF2ICcgKyBuYXZDbGFzcyArICciIHJvbGU9InRhYmxpc3QiPjwvdWw+Jyk7CiAgICAkKHRhYnNbMF0pLmJlZm9yZSh0YWJMaXN0KTsKICAgIHZhciB0YWJDb250ZW50ID0gJCgnPGRpdiBjbGFzcz0idGFiLWNvbnRlbnQiPjwvZGl2PicpOwogICAgJCh0YWJzWzBdKS5iZWZvcmUodGFiQ29udGVudCk7CgogICAgLy8gYnVpbGQgdGhlIHRhYnNldAogICAgdmFyIGFjdGl2ZVRhYiA9IDA7CiAgICB0YWJzLmVhY2goZnVuY3Rpb24oaSkgewoKICAgICAgLy8gZ2V0IHRoZSB0YWIgZGl2CiAgICAgIHZhciB0YWIgPSAkKHRhYnNbaV0pOwoKICAgICAgLy8gZ2V0IHRoZSBpZCB0aGVuIHNhbml0aXplIGl0IGZvciB1c2Ugd2l0aCBib290c3RyYXAgdGFicwogICAgICB2YXIgaWQgPSB0YWIuYXR0cignaWQnKTsKCiAgICAgIC8vIHNlZSBpZiB0aGlzIGlzIG1hcmtlZCBhcyB0aGUgYWN0aXZlIHRhYgogICAgICBpZiAodGFiLmhhc0NsYXNzKCdhY3RpdmUnKSkKICAgICAgICBhY3RpdmVUYWIgPSBpOwoKICAgICAgLy8gcmVtb3ZlIGFueSB0YWJsZSBvZiBjb250ZW50cyBlbnRyaWVzIGFzc29jaWF0ZWQgd2l0aAogICAgICAvLyB0aGlzIElEIChzaW5jZSB3ZSdsbCBiZSByZW1vdmluZyB0aGUgaGVhZGluZyBlbGVtZW50KQogICAgICAkKCJkaXYjIiArIHRvY0lEICsgIiBsaSBhW2hyZWY9JyMiICsgaWQgKyAiJ10iKS5wYXJlbnQoKS5yZW1vdmUoKTsKCiAgICAgIC8vIHNhbml0aXplIHRoZSBpZCBmb3IgdXNlIHdpdGggYm9vdHN0cmFwIHRhYnMKICAgICAgaWQgPSBpZC5yZXBsYWNlKC9bLlwvPyYhIzw+XS9nLCAnJykucmVwbGFjZSgvXHMvZywgJ18nKTsKICAgICAgdGFiLmF0dHIoJ2lkJywgaWQpOwoKICAgICAgLy8gZ2V0IHRoZSBoZWFkaW5nIGVsZW1lbnQgd2l0aGluIGl0LCBncmFiIGl0J3MgdGV4dCwgdGhlbiByZW1vdmUgaXQKICAgICAgdmFyIGhlYWRpbmcgPSB0YWIuZmluZCgnaCcgKyB0YWJMZXZlbCArICc6Zmlyc3QnKTsKICAgICAgdmFyIGhlYWRpbmdUZXh0ID0gaGVhZGluZy5odG1sKCk7CiAgICAgIGhlYWRpbmcucmVtb3ZlKCk7CgogICAgICAvLyBidWlsZCBhbmQgYXBwZW5kIHRoZSB0YWIgbGlzdCBpdGVtCiAgICAgIHZhciBhID0gJCgnPGEgcm9sZT0idGFiIiBkYXRhLXRvZ2dsZT0idGFiIj4nICsgaGVhZGluZ1RleHQgKyAnPC9hPicpOwogICAgICBhLmF0dHIoJ2hyZWYnLCAnIycgKyBpZCk7CiAgICAgIGEuYXR0cignYXJpYS1jb250cm9scycsIGlkKTsKICAgICAgdmFyIGxpID0gJCgnPGxpIHJvbGU9InByZXNlbnRhdGlvbiI+PC9saT4nKTsKICAgICAgbGkuYXBwZW5kKGEpOwogICAgICB0YWJMaXN0LmFwcGVuZChsaSk7CgogICAgICAvLyBzZXQgaXQncyBhdHRyaWJ1dGVzCiAgICAgIHRhYi5hdHRyKCdyb2xlJywgJ3RhYnBhbmVsJyk7CiAgICAgIHRhYi5hZGRDbGFzcygndGFiLXBhbmUnKTsKICAgICAgdGFiLmFkZENsYXNzKCd0YWJiZWQtcGFuZScpOwogICAgICBpZiAoZmFkZSkKICAgICAgICB0YWIuYWRkQ2xhc3MoJ2ZhZGUnKTsKCiAgICAgIC8vIG1vdmUgaXQgaW50byB0aGUgdGFiIGNvbnRlbnQgZGl2CiAgICAgIHRhYi5kZXRhY2goKS5hcHBlbmRUbyh0YWJDb250ZW50KTsKICAgIH0pOwoKICAgIC8vIHNldCBhY3RpdmUgdGFiCiAgICAkKHRhYkxpc3QuY2hpbGRyZW4oJ2xpJylbYWN0aXZlVGFiXSkuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgdmFyIGFjdGl2ZSA9ICQodGFiQ29udGVudC5jaGlsZHJlbignZGl2LnNlY3Rpb24nKVthY3RpdmVUYWJdKTsKICAgIGFjdGl2ZS5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICBpZiAoZmFkZSkKICAgICAgYWN0aXZlLmFkZENsYXNzKCdpbicpOwoKICAgIGlmICh0YWJzZXQuaGFzQ2xhc3MoInRhYnNldC1zdGlja3kiKSkKICAgICAgdGFic2V0LnJtYXJrZG93blN0aWNreVRhYnMoKTsKICB9CgogIC8vIGNvbnZlcnQgc2VjdGlvbiBkaXZzIHdpdGggdGhlIC50YWJzZXQgY2xhc3MgdG8gdGFic2V0cwogIHZhciB0YWJzZXRzID0gJCgiZGl2LnNlY3Rpb24udGFic2V0Iik7CiAgdGFic2V0cy5lYWNoKGZ1bmN0aW9uKGkpIHsKICAgIGJ1aWxkVGFic2V0KCQodGFic2V0c1tpXSkpOwogIH0pOwp9OwoK"></script>
<script src="data:application/javascript;base64,CndpbmRvdy5pbml0aWFsaXplQ29kZUZvbGRpbmcgPSBmdW5jdGlvbihzaG93KSB7CgogIC8vIGhhbmRsZXJzIGZvciBzaG93LWFsbCBhbmQgaGlkZSBhbGwKICAkKCIjcm1kLXNob3ctYWxsLWNvZGUiKS5jbGljayhmdW5jdGlvbigpIHsKICAgICQoJ2Rpdi5yLWNvZGUtY29sbGFwc2UnKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAkKHRoaXMpLmNvbGxhcHNlKCdzaG93Jyk7CiAgICB9KTsKICB9KTsKICAkKCIjcm1kLWhpZGUtYWxsLWNvZGUiKS5jbGljayhmdW5jdGlvbigpIHsKICAgICQoJ2Rpdi5yLWNvZGUtY29sbGFwc2UnKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAkKHRoaXMpLmNvbGxhcHNlKCdoaWRlJyk7CiAgICB9KTsKICB9KTsKCiAgLy8gaW5kZXggZm9yIHVuaXF1ZSBjb2RlIGVsZW1lbnQgaWRzCiAgdmFyIGN1cnJlbnRJbmRleCA9IDE7CgogIC8vIHNlbGVjdCBhbGwgUiBjb2RlIGJsb2NrcwogIHZhciByQ29kZUJsb2NrcyA9ICQoJ3ByZS5yLCBwcmUucHl0aG9uLCBwcmUuYmFzaCwgcHJlLnNxbCwgcHJlLmNwcCwgcHJlLnN0YW4sIHByZS5qdWxpYSwgcHJlLmZvbGRhYmxlJyk7CiAgckNvZGVCbG9ja3MuZWFjaChmdW5jdGlvbigpIHsKCiAgICAvLyBjcmVhdGUgYSBjb2xsYXBzYWJsZSBkaXYgdG8gd3JhcCB0aGUgY29kZSBpbgogICAgdmFyIGRpdiA9ICQoJzxkaXYgY2xhc3M9ImNvbGxhcHNlIHItY29kZS1jb2xsYXBzZSI+PC9kaXY+Jyk7CiAgICB2YXIgc2hvd1RoaXMgPSAoc2hvdyB8fCAkKHRoaXMpLmhhc0NsYXNzKCdmb2xkLXNob3cnKSkgJiYgISQodGhpcykuaGFzQ2xhc3MoJ2ZvbGQtaGlkZScpOwogICAgaWYgKHNob3dUaGlzKSBkaXYuY29sbGFwc2UoJ3Nob3cnKTsKICAgIHZhciBpZCA9ICdyY29kZS02NDNFMEYzNicgKyBjdXJyZW50SW5kZXgrKzsKICAgIGRpdi5hdHRyKCdpZCcsIGlkKTsKICAgICQodGhpcykuYmVmb3JlKGRpdik7CiAgICAkKHRoaXMpLmRldGFjaCgpLmFwcGVuZFRvKGRpdik7CgogICAgLy8gYWRkIGEgc2hvdyBjb2RlIGJ1dHRvbiByaWdodCBhYm92ZQogICAgdmFyIHNob3dDb2RlVGV4dCA9ICQoJzxzcGFuPicgKyAoc2hvd1RoaXMgPyAnSGlkZScgOiAnQ29kZScpICsgJzwvc3Bhbj4nKTsKICAgIHZhciBzaG93Q29kZUJ1dHRvbiA9ICQoJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IGJ0bi14cyBidG4tc2Vjb25kYXJ5IGJ0bi1zbSBjb2RlLWZvbGRpbmctYnRuIHB1bGwtcmlnaHQgZmxvYXQtcmlnaHQiPjwvYnV0dG9uPicpOwogICAgc2hvd0NvZGVCdXR0b24uYXBwZW5kKHNob3dDb2RlVGV4dCk7CiAgICBzaG93Q29kZUJ1dHRvbgogICAgICAgIC5hdHRyKCdkYXRhLXRvZ2dsZScsICdjb2xsYXBzZScpCiAgICAgICAgLmF0dHIoJ2RhdGEtdGFyZ2V0JywgJyMnICsgaWQpCiAgICAgICAgLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCBzaG93VGhpcykKICAgICAgICAuYXR0cignYXJpYS1jb250cm9scycsIGlkKTsKCiAgICB2YXIgYnV0dG9uUm93ID0gJCgnPGRpdiBjbGFzcz0icm93Ij48L2Rpdj4nKTsKICAgIHZhciBidXR0b25Db2wgPSAkKCc8ZGl2IGNsYXNzPSJjb2wtbWQtMTIiPjwvZGl2PicpOwoKICAgIGJ1dHRvbkNvbC5hcHBlbmQoc2hvd0NvZGVCdXR0b24pOwogICAgYnV0dG9uUm93LmFwcGVuZChidXR0b25Db2wpOwoKICAgIGRpdi5iZWZvcmUoYnV0dG9uUm93KTsKCiAgICAvLyB1cGRhdGUgc3RhdGUgb2YgYnV0dG9uIG9uIHNob3cvaGlkZQogICAgZGl2Lm9uKCdoaWRkZW4uYnMuY29sbGFwc2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHNob3dDb2RlVGV4dC50ZXh0KCdDb2RlJyk7CiAgICB9KTsKICAgIGRpdi5vbignc2hvdy5icy5jb2xsYXBzZScsIGZ1bmN0aW9uICgpIHsKICAgICAgc2hvd0NvZGVUZXh0LnRleHQoJ0hpZGUnKTsKICAgIH0pOwogIH0pOwoKfQo="></script>
<script src="data:application/javascript;base64,CndpbmRvdy5pbml0aWFsaXplU291cmNlRW1iZWQgPSBmdW5jdGlvbihmaWxlbmFtZSkgewogICQoIiNybWQtZG93bmxvYWQtc291cmNlIikuY2xpY2soZnVuY3Rpb24oKSB7CiAgICB2YXIgc3JjID0gJCgiI3JtZC1zb3VyY2UtY29kZSIpLmh0bWwoKTsKICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAgYS5ocmVmID0gImRhdGE6dGV4dC94LXItbWFya2Rvd247YmFzZTY0LCIgKyBzcmM7CiAgICBhLmRvd25sb2FkID0gZmlsZW5hbWU7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOwogICAgYS5jbGljaygpOwogICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTsKICB9KTsKfTsK"></script>
<link href="data:text/css,%2Ehljs%2Dliteral%20%7B%0Acolor%3A%20rgb%2888%2C%2072%2C%20246%29%3B%0A%7D%0A%2Ehljs%2Dnumber%20%7B%0Acolor%3A%20rgb%280%2C%200%2C%20205%29%3B%0A%7D%0A%2Ehljs%2Dcomment%20%7B%0Acolor%3A%20rgb%2876%2C%20136%2C%20107%29%3B%0A%7D%0A%2Ehljs%2Dkeyword%20%7B%0Acolor%3A%20rgb%280%2C%200%2C%20255%29%3B%0A%7D%0A%2Ehljs%2Dstring%20%7B%0Acolor%3A%20rgb%283%2C%20106%2C%207%29%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,LyohIGhpZ2hsaWdodC5qcyB2OS4xMi4wIHwgQlNEMyBMaWNlbnNlIHwgZ2l0LmlvL2hsanNsaWNlbnNlICovCiFmdW5jdGlvbihlKXt2YXIgbj0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93fHwib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGY7InVuZGVmaW5lZCIhPXR5cGVvZiBleHBvcnRzP2UoZXhwb3J0cyk6biYmKG4uaGxqcz1lKHt9KSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gbi5obGpzfSkpfShmdW5jdGlvbihlKXtmdW5jdGlvbiBuKGUpe3JldHVybiBlLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1mdW5jdGlvbiB0KGUpe3JldHVybiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gcihlLG4pe3ZhciB0PWUmJmUuZXhlYyhuKTtyZXR1cm4gdCYmMD09PXQuaW5kZXh9ZnVuY3Rpb24gYShlKXtyZXR1cm4gay50ZXN0KGUpfWZ1bmN0aW9uIGkoZSl7dmFyIG4sdCxyLGksbz1lLmNsYXNzTmFtZSsiICI7aWYobys9ZS5wYXJlbnROb2RlP2UucGFyZW50Tm9kZS5jbGFzc05hbWU6IiIsdD1CLmV4ZWMobykpcmV0dXJuIHcodFsxXSk/dFsxXToibm8taGlnaGxpZ2h0Ijtmb3Iobz1vLnNwbGl0KC9ccysvKSxuPTAscj1vLmxlbmd0aDtyPm47bisrKWlmKGk9b1tuXSxhKGkpfHx3KGkpKXJldHVybiBpfWZ1bmN0aW9uIG8oZSl7dmFyIG4sdD17fSxyPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtmb3IobiBpbiBlKXRbbl09ZVtuXTtyZXR1cm4gci5mb3JFYWNoKGZ1bmN0aW9uKGUpe2ZvcihuIGluIGUpdFtuXT1lW25dfSksdH1mdW5jdGlvbiB1KGUpe3ZhciBuPVtdO3JldHVybiBmdW5jdGlvbiByKGUsYSl7Zm9yKHZhciBpPWUuZmlyc3RDaGlsZDtpO2k9aS5uZXh0U2libGluZykzPT09aS5ub2RlVHlwZT9hKz1pLm5vZGVWYWx1ZS5sZW5ndGg6MT09PWkubm9kZVR5cGUmJihuLnB1c2goe2V2ZW50OiJzdGFydCIsb2Zmc2V0OmEsbm9kZTppfSksYT1yKGksYSksdChpKS5tYXRjaCgvYnJ8aHJ8aW1nfGlucHV0Lyl8fG4ucHVzaCh7ZXZlbnQ6InN0b3AiLG9mZnNldDphLG5vZGU6aX0pKTtyZXR1cm4gYX0oZSwwKSxufWZ1bmN0aW9uIGMoZSxyLGEpe2Z1bmN0aW9uIGkoKXtyZXR1cm4gZS5sZW5ndGgmJnIubGVuZ3RoP2VbMF0ub2Zmc2V0IT09clswXS5vZmZzZXQ/ZVswXS5vZmZzZXQ8clswXS5vZmZzZXQ/ZTpyOiJzdGFydCI9PT1yWzBdLmV2ZW50P2U6cjplLmxlbmd0aD9lOnJ9ZnVuY3Rpb24gbyhlKXtmdW5jdGlvbiByKGUpe3JldHVybiIgIitlLm5vZGVOYW1lKyc9IicrbihlLnZhbHVlKS5yZXBsYWNlKCciJywiJnF1b3Q7IikrJyInfXMrPSI8Iit0KGUpK0UubWFwLmNhbGwoZS5hdHRyaWJ1dGVzLHIpLmpvaW4oIiIpKyI+In1mdW5jdGlvbiB1KGUpe3MrPSI8LyIrdChlKSsiPiJ9ZnVuY3Rpb24gYyhlKXsoInN0YXJ0Ij09PWUuZXZlbnQ/bzp1KShlLm5vZGUpfWZvcih2YXIgbD0wLHM9IiIsZj1bXTtlLmxlbmd0aHx8ci5sZW5ndGg7KXt2YXIgZz1pKCk7aWYocys9bihhLnN1YnN0cmluZyhsLGdbMF0ub2Zmc2V0KSksbD1nWzBdLm9mZnNldCxnPT09ZSl7Zi5yZXZlcnNlKCkuZm9yRWFjaCh1KTtkbyBjKGcuc3BsaWNlKDAsMSlbMF0pLGc9aSgpO3doaWxlKGc9PT1lJiZnLmxlbmd0aCYmZ1swXS5vZmZzZXQ9PT1sKTtmLnJldmVyc2UoKS5mb3JFYWNoKG8pfWVsc2Uic3RhcnQiPT09Z1swXS5ldmVudD9mLnB1c2goZ1swXS5ub2RlKTpmLnBvcCgpLGMoZy5zcGxpY2UoMCwxKVswXSl9cmV0dXJuIHMrbihhLnN1YnN0cihsKSl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gZS52JiYhZS5jYWNoZWRfdmFyaWFudHMmJihlLmNhY2hlZF92YXJpYW50cz1lLnYubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBvKGUse3Y6bnVsbH0sbil9KSksZS5jYWNoZWRfdmFyaWFudHN8fGUuZVcmJltvKGUpXXx8W2VdfWZ1bmN0aW9uIHMoZSl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZSYmZS5zb3VyY2V8fGV9ZnVuY3Rpb24gdCh0LHIpe3JldHVybiBuZXcgUmVnRXhwKG4odCksIm0iKyhlLmNJPyJpIjoiIikrKHI/ImciOiIiKSl9ZnVuY3Rpb24gcihhLGkpe2lmKCFhLmNvbXBpbGVkKXtpZihhLmNvbXBpbGVkPSEwLGEuaz1hLmt8fGEuYkssYS5rKXt2YXIgbz17fSx1PWZ1bmN0aW9uKG4sdCl7ZS5jSSYmKHQ9dC50b0xvd2VyQ2FzZSgpKSx0LnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KCJ8Iik7b1t0WzBdXT1bbix0WzFdP051bWJlcih0WzFdKToxXX0pfTsic3RyaW5nIj09dHlwZW9mIGEuaz91KCJrZXl3b3JkIixhLmspOngoYS5rKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3UoZSxhLmtbZV0pfSksYS5rPW99YS5sUj10KGEubHx8L1x3Ky8sITApLGkmJihhLmJLJiYoYS5iPSJcXGIoIithLmJLLnNwbGl0KCIgIikuam9pbigifCIpKyIpXFxiIiksYS5ifHwoYS5iPS9cQnxcYi8pLGEuYlI9dChhLmIpLGEuZXx8YS5lV3x8KGEuZT0vXEJ8XGIvKSxhLmUmJihhLmVSPXQoYS5lKSksYS50RT1uKGEuZSl8fCIiLGEuZVcmJmkudEUmJihhLnRFKz0oYS5lPyJ8IjoiIikraS50RSkpLGEuaSYmKGEuaVI9dChhLmkpKSxudWxsPT1hLnImJihhLnI9MSksYS5jfHwoYS5jPVtdKSxhLmM9QXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhLmMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBsKCJzZWxmIj09PWU/YTplKX0pKSxhLmMuZm9yRWFjaChmdW5jdGlvbihlKXtyKGUsYSl9KSxhLnN0YXJ0cyYmcihhLnN0YXJ0cyxpKTt2YXIgYz1hLmMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJLPyJcXC4/KCIrZS5iKyIpXFwuPyI6ZS5ifSkuY29uY2F0KFthLnRFLGEuaV0pLm1hcChuKS5maWx0ZXIoQm9vbGVhbik7YS50PWMubGVuZ3RoP3QoYy5qb2luKCJ8IiksITApOntleGVjOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fX19cihlKX1mdW5jdGlvbiBmKGUsdCxhLGkpe2Z1bmN0aW9uIG8oZSxuKXt2YXIgdCxhO2Zvcih0PTAsYT1uLmMubGVuZ3RoO2E+dDt0KyspaWYocihuLmNbdF0uYlIsZSkpcmV0dXJuIG4uY1t0XX1mdW5jdGlvbiB1KGUsbil7aWYocihlLmVSLG4pKXtmb3IoO2UuZW5kc1BhcmVudCYmZS5wYXJlbnQ7KWU9ZS5wYXJlbnQ7cmV0dXJuIGV9cmV0dXJuIGUuZVc/dShlLnBhcmVudCxuKTp2b2lkIDB9ZnVuY3Rpb24gYyhlLG4pe3JldHVybiFhJiZyKG4uaVIsZSl9ZnVuY3Rpb24gbChlLG4pe3ZhciB0PU4uY0k/blswXS50b0xvd2VyQ2FzZSgpOm5bMF07cmV0dXJuIGUuay5oYXNPd25Qcm9wZXJ0eSh0KSYmZS5rW3RdfWZ1bmN0aW9uIHAoZSxuLHQscil7dmFyIGE9cj8iIjpJLmNsYXNzUHJlZml4LGk9JzxzcGFuIGNsYXNzPSInK2Esbz10PyIiOkM7cmV0dXJuIGkrPWUrJyI+JyxpK24rb31mdW5jdGlvbiBoKCl7dmFyIGUsdCxyLGE7aWYoIUUuaylyZXR1cm4gbihrKTtmb3IoYT0iIix0PTAsRS5sUi5sYXN0SW5kZXg9MCxyPUUubFIuZXhlYyhrKTtyOylhKz1uKGsuc3Vic3RyaW5nKHQsci5pbmRleCkpLGU9bChFLHIpLGU/KEIrPWVbMV0sYSs9cChlWzBdLG4oclswXSkpKTphKz1uKHJbMF0pLHQ9RS5sUi5sYXN0SW5kZXgscj1FLmxSLmV4ZWMoayk7cmV0dXJuIGErbihrLnN1YnN0cih0KSl9ZnVuY3Rpb24gZCgpe3ZhciBlPSJzdHJpbmciPT10eXBlb2YgRS5zTDtpZihlJiYheVtFLnNMXSlyZXR1cm4gbihrKTt2YXIgdD1lP2YoRS5zTCxrLCEwLHhbRS5zTF0pOmcoayxFLnNMLmxlbmd0aD9FLnNMOnZvaWQgMCk7cmV0dXJuIEUucj4wJiYoQis9dC5yKSxlJiYoeFtFLnNMXT10LnRvcCkscCh0Lmxhbmd1YWdlLHQudmFsdWUsITEsITApfWZ1bmN0aW9uIGIoKXtMKz1udWxsIT1FLnNMP2QoKTpoKCksaz0iIn1mdW5jdGlvbiB2KGUpe0wrPWUuY04/cChlLmNOLCIiLCEwKToiIixFPU9iamVjdC5jcmVhdGUoZSx7cGFyZW50Ont2YWx1ZTpFfX0pfWZ1bmN0aW9uIG0oZSxuKXtpZihrKz1lLG51bGw9PW4pcmV0dXJuIGIoKSwwO3ZhciB0PW8obixFKTtpZih0KXJldHVybiB0LnNraXA/ays9bjoodC5lQiYmKGsrPW4pLGIoKSx0LnJCfHx0LmVCfHwoaz1uKSksdih0LG4pLHQuckI/MDpuLmxlbmd0aDt2YXIgcj11KEUsbik7aWYocil7dmFyIGE9RTthLnNraXA/ays9bjooYS5yRXx8YS5lRXx8KGsrPW4pLGIoKSxhLmVFJiYoaz1uKSk7ZG8gRS5jTiYmKEwrPUMpLEUuc2tpcHx8KEIrPUUuciksRT1FLnBhcmVudDt3aGlsZShFIT09ci5wYXJlbnQpO3JldHVybiByLnN0YXJ0cyYmdihyLnN0YXJ0cywiIiksYS5yRT8wOm4ubGVuZ3RofWlmKGMobixFKSl0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgbGV4ZW1lICInK24rJyIgZm9yIG1vZGUgIicrKEUuY058fCI8dW5uYW1lZD4iKSsnIicpO3JldHVybiBrKz1uLG4ubGVuZ3RofHwxfXZhciBOPXcoZSk7aWYoIU4pdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGxhbmd1YWdlOiAiJytlKyciJyk7cyhOKTt2YXIgUixFPWl8fE4seD17fSxMPSIiO2ZvcihSPUU7UiE9PU47Uj1SLnBhcmVudClSLmNOJiYoTD1wKFIuY04sIiIsITApK0wpO3ZhciBrPSIiLEI9MDt0cnl7Zm9yKHZhciBNLGosTz0wOzspe2lmKEUudC5sYXN0SW5kZXg9TyxNPUUudC5leGVjKHQpLCFNKWJyZWFrO2o9bSh0LnN1YnN0cmluZyhPLE0uaW5kZXgpLE1bMF0pLE89TS5pbmRleCtqfWZvcihtKHQuc3Vic3RyKE8pKSxSPUU7Ui5wYXJlbnQ7Uj1SLnBhcmVudClSLmNOJiYoTCs9Qyk7cmV0dXJue3I6Qix2YWx1ZTpMLGxhbmd1YWdlOmUsdG9wOkV9fWNhdGNoKFQpe2lmKFQubWVzc2FnZSYmLTEhPT1ULm1lc3NhZ2UuaW5kZXhPZigiSWxsZWdhbCIpKXJldHVybntyOjAsdmFsdWU6bih0KX07dGhyb3cgVH19ZnVuY3Rpb24gZyhlLHQpe3Q9dHx8SS5sYW5ndWFnZXN8fHgoeSk7dmFyIHI9e3I6MCx2YWx1ZTpuKGUpfSxhPXI7cmV0dXJuIHQuZmlsdGVyKHcpLmZvckVhY2goZnVuY3Rpb24obil7dmFyIHQ9ZihuLGUsITEpO3QubGFuZ3VhZ2U9bix0LnI+YS5yJiYoYT10KSx0LnI+ci5yJiYoYT1yLHI9dCl9KSxhLmxhbmd1YWdlJiYoci5zZWNvbmRfYmVzdD1hKSxyfWZ1bmN0aW9uIHAoZSl7cmV0dXJuIEkudGFiUmVwbGFjZXx8SS51c2VCUj9lLnJlcGxhY2UoTSxmdW5jdGlvbihlLG4pe3JldHVybiBJLnVzZUJSJiYiXG4iPT09ZT8iPGJyPiI6SS50YWJSZXBsYWNlP24ucmVwbGFjZSgvXHQvZyxJLnRhYlJlcGxhY2UpOiIifSk6ZX1mdW5jdGlvbiBoKGUsbix0KXt2YXIgcj1uP0xbbl06dCxhPVtlLnRyaW0oKV07cmV0dXJuIGUubWF0Y2goL1xiaGxqc1xiLyl8fGEucHVzaCgiaGxqcyIpLC0xPT09ZS5pbmRleE9mKHIpJiZhLnB1c2gociksYS5qb2luKCIgIikudHJpbSgpfWZ1bmN0aW9uIGQoZSl7dmFyIG4sdCxyLG8sbCxzPWkoZSk7YShzKXx8KEkudXNlQlI/KG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2Iiksbi5pbm5lckhUTUw9ZS5pbm5lckhUTUwucmVwbGFjZSgvXG4vZywiIikucmVwbGFjZSgvPGJyWyBcL10qPi9nLCJcbiIpKTpuPWUsbD1uLnRleHRDb250ZW50LHI9cz9mKHMsbCwhMCk6ZyhsKSx0PXUobiksdC5sZW5ndGgmJihvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImRpdiIpLG8uaW5uZXJIVE1MPXIudmFsdWUsci52YWx1ZT1jKHQsdShvKSxsKSksci52YWx1ZT1wKHIudmFsdWUpLGUuaW5uZXJIVE1MPXIudmFsdWUsZS5jbGFzc05hbWU9aChlLmNsYXNzTmFtZSxzLHIubGFuZ3VhZ2UpLGUucmVzdWx0PXtsYW5ndWFnZTpyLmxhbmd1YWdlLHJlOnIucn0sci5zZWNvbmRfYmVzdCYmKGUuc2Vjb25kX2Jlc3Q9e2xhbmd1YWdlOnIuc2Vjb25kX2Jlc3QubGFuZ3VhZ2UscmU6ci5zZWNvbmRfYmVzdC5yfSkpfWZ1bmN0aW9uIGIoZSl7ST1vKEksZSl9ZnVuY3Rpb24gdigpe2lmKCF2LmNhbGxlZCl7di5jYWxsZWQ9ITA7dmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgicHJlIGNvZGUiKTtFLmZvckVhY2guY2FsbChlLGQpfX1mdW5jdGlvbiBtKCl7YWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsdiwhMSksYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsdiwhMSl9ZnVuY3Rpb24gTihuLHQpe3ZhciByPXlbbl09dChlKTtyLmFsaWFzZXMmJnIuYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe0xbZV09bn0pfWZ1bmN0aW9uIFIoKXtyZXR1cm4geCh5KX1mdW5jdGlvbiB3KGUpe3JldHVybiBlPShlfHwiIikudG9Mb3dlckNhc2UoKSx5W2VdfHx5W0xbZV1dfXZhciBFPVtdLHg9T2JqZWN0LmtleXMseT17fSxMPXt9LGs9L14obm8tP2hpZ2hsaWdodHxwbGFpbnx0ZXh0KSQvaSxCPS9cYmxhbmcoPzp1YWdlKT8tKFtcdy1dKylcYi9pLE09LygoXig8W14+XSs+fFx0fCkrfCg/OlxuKSkpL2dtLEM9Ijwvc3Bhbj4iLEk9e2NsYXNzUHJlZml4OiJobGpzLSIsdGFiUmVwbGFjZTpudWxsLHVzZUJSOiExLGxhbmd1YWdlczp2b2lkIDB9O3JldHVybiBlLmhpZ2hsaWdodD1mLGUuaGlnaGxpZ2h0QXV0bz1nLGUuZml4TWFya3VwPXAsZS5oaWdobGlnaHRCbG9jaz1kLGUuY29uZmlndXJlPWIsZS5pbml0SGlnaGxpZ2h0aW5nPXYsZS5pbml0SGlnaGxpZ2h0aW5nT25Mb2FkPW0sZS5yZWdpc3Rlckxhbmd1YWdlPU4sZS5saXN0TGFuZ3VhZ2VzPVIsZS5nZXRMYW5ndWFnZT13LGUuaW5oZXJpdD1vLGUuSVI9IlthLXpBLVpdXFx3KiIsZS5VSVI9IlthLXpBLVpfXVxcdyoiLGUuTlI9IlxcYlxcZCsoXFwuXFxkKyk/IixlLkNOUj0iKC0/KShcXGIwW3hYXVthLWZBLUYwLTldK3woXFxiXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoW2VFXVstK10/XFxkKyk/KSIsZS5CTlI9IlxcYigwYlswMV0rKSIsZS5SU1I9IiF8IT18IT09fCV8JT18JnwmJnwmPXxcXCp8XFwqPXxcXCt8XFwrPXwsfC18LT18Lz18L3w6fDt8PDx8PDw9fDw9fDx8PT09fD09fD18Pj4+PXw+Pj18Pj18Pj4+fD4+fD58XFw/fFxcW3xcXHt8XFwofFxcXnxcXF49fFxcfHxcXHw9fFxcfFxcfHx+IixlLkJFPXtiOiJcXFxcW1xcc1xcU10iLHI6MH0sZS5BU009e2NOOiJzdHJpbmciLGI6IiciLGU6IiciLGk6IlxcbiIsYzpbZS5CRV19LGUuUVNNPXtjTjoic3RyaW5nIixiOiciJyxlOiciJyxpOiJcXG4iLGM6W2UuQkVdfSxlLlBXTT17YjovXGIoYXxhbnx0aGV8YXJlfEknbXxpc24ndHxkb24ndHxkb2Vzbid0fHdvbid0fGJ1dHxqdXN0fHNob3VsZHxwcmV0dHl8c2ltcGx5fGVub3VnaHxnb25uYXxnb2luZ3x3dGZ8c298c3VjaHx3aWxsfHlvdXx5b3VyfHRoZXl8bGlrZXxtb3JlKVxiL30sZS5DPWZ1bmN0aW9uKG4sdCxyKXt2YXIgYT1lLmluaGVyaXQoe2NOOiJjb21tZW50IixiOm4sZTp0LGM6W119LHJ8fHt9KTtyZXR1cm4gYS5jLnB1c2goZS5QV00pLGEuYy5wdXNoKHtjTjoiZG9jdGFnIixiOiIoPzpUT0RPfEZJWE1FfE5PVEV8QlVHfFhYWCk6IixyOjB9KSxhfSxlLkNMQ009ZS5DKCIvLyIsIiQiKSxlLkNCQ009ZS5DKCIvXFwqIiwiXFwqLyIpLGUuSENNPWUuQygiIyIsIiQiKSxlLk5NPXtjTjoibnVtYmVyIixiOmUuTlIscjowfSxlLkNOTT17Y046Im51bWJlciIsYjplLkNOUixyOjB9LGUuQk5NPXtjTjoibnVtYmVyIixiOmUuQk5SLHI6MH0sZS5DU1NOTT17Y046Im51bWJlciIsYjplLk5SKyIoJXxlbXxleHxjaHxyZW18dnd8dmh8dm1pbnx2bWF4fGNtfG1tfGlufHB0fHBjfHB4fGRlZ3xncmFkfHJhZHx0dXJufHN8bXN8SHp8a0h6fGRwaXxkcGNtfGRwcHgpPyIscjowfSxlLlJNPXtjTjoicmVnZXhwIixiOi9cLy8sZTovXC9bZ2ltdXldKi8saTovXG4vLGM6W2UuQkUse2I6L1xbLyxlOi9cXS8scjowLGM6W2UuQkVdfV19LGUuVE09e2NOOiJ0aXRsZSIsYjplLklSLHI6MH0sZS5VVE09e2NOOiJ0aXRsZSIsYjplLlVJUixyOjB9LGUuTUVUSE9EX0dVQVJEPXtiOiJcXC5cXHMqIitlLlVJUixyOjB9LGV9KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInNxbCIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5DKCItLSIsIiQiKTtyZXR1cm57Y0k6ITAsaTovWzw+e30qI10vLGM6W3tiSzoiYmVnaW4gZW5kIHN0YXJ0IGNvbW1pdCByb2xsYmFjayBzYXZlcG9pbnQgbG9jayBhbHRlciBjcmVhdGUgZHJvcCByZW5hbWUgY2FsbCBkZWxldGUgZG8gaGFuZGxlciBpbnNlcnQgbG9hZCByZXBsYWNlIHNlbGVjdCB0cnVuY2F0ZSB1cGRhdGUgc2V0IHNob3cgcHJhZ21hIGdyYW50IG1lcmdlIGRlc2NyaWJlIHVzZSBleHBsYWluIGhlbHAgZGVjbGFyZSBwcmVwYXJlIGV4ZWN1dGUgZGVhbGxvY2F0ZSByZWxlYXNlIHVubG9jayBwdXJnZSByZXNldCBjaGFuZ2Ugc3RvcCBhbmFseXplIGNhY2hlIGZsdXNoIG9wdGltaXplIHJlcGFpciBraWxsIGluc3RhbGwgdW5pbnN0YWxsIGNoZWNrc3VtIHJlc3RvcmUgY2hlY2sgYmFja3VwIHJldm9rZSBjb21tZW50IixlOi87LyxlVzohMCxsOi9bXHdcLl0rLyxrOntrZXl3b3JkOiJhYm9ydCBhYnMgYWJzb2x1dGUgYWNjIGFjY2UgYWNjZXAgYWNjZXB0IGFjY2VzcyBhY2Nlc3NlZCBhY2Nlc3NpYmxlIGFjY291bnQgYWNvcyBhY3Rpb24gYWN0aXZhdGUgYWRkIGFkZHRpbWUgYWRtaW4gYWRtaW5pc3RlciBhZHZhbmNlZCBhZHZpc2UgYWVzX2RlY3J5cHQgYWVzX2VuY3J5cHQgYWZ0ZXIgYWdlbnQgYWdncmVnYXRlIGFsaSBhbGlhIGFsaWFzIGFsbG9jYXRlIGFsbG93IGFsdGVyIGFsd2F5cyBhbmFseXplIGFuY2lsbGFyeSBhbmQgYW55IGFueWRhdGEgYW55ZGF0YXNldCBhbnlzY2hlbWEgYW55dHlwZSBhcHBseSBhcmNoaXZlIGFyY2hpdmVkIGFyY2hpdmVsb2cgYXJlIGFzIGFzYyBhc2NpaSBhc2luIGFzc2VtYmx5IGFzc2VydGlvbiBhc3NvY2lhdGUgYXN5bmNocm9ub3VzIGF0IGF0YW4gYXRuMiBhdHRyIGF0dHJpIGF0dHJpYiBhdHRyaWJ1IGF0dHJpYnV0IGF0dHJpYnV0ZSBhdHRyaWJ1dGVzIGF1ZGl0IGF1dGhlbnRpY2F0ZWQgYXV0aGVudGljYXRpb24gYXV0aGlkIGF1dGhvcnMgYXV0byBhdXRvYWxsb2NhdGUgYXV0b2RibGluayBhdXRvZXh0ZW5kIGF1dG9tYXRpYyBhdmFpbGFiaWxpdHkgYXZnIGJhY2t1cCBiYWRmaWxlIGJhc2ljZmlsZSBiZWZvcmUgYmVnaW4gYmVnaW5uaW5nIGJlbmNobWFyayBiZXR3ZWVuIGJmaWxlIGJmaWxlX2Jhc2UgYmlnIGJpZ2ZpbGUgYmluIGJpbmFyeV9kb3VibGUgYmluYXJ5X2Zsb2F0IGJpbmxvZyBiaXRfYW5kIGJpdF9jb3VudCBiaXRfbGVuZ3RoIGJpdF9vciBiaXRfeG9yIGJpdG1hcCBibG9iX2Jhc2UgYmxvY2sgYmxvY2tzaXplIGJvZHkgYm90aCBib3VuZCBidWZmZXJfY2FjaGUgYnVmZmVyX3Bvb2wgYnVpbGQgYnVsayBieSBieXRlIGJ5dGVvcmRlcm1hcmsgYnl0ZXMgY2FjaGUgY2FjaGluZyBjYWxsIGNhbGxpbmcgY2FuY2VsIGNhcGFjaXR5IGNhc2NhZGUgY2FzY2FkZWQgY2FzZSBjYXN0IGNhdGFsb2cgY2F0ZWdvcnkgY2VpbCBjZWlsaW5nIGNoYWluIGNoYW5nZSBjaGFuZ2VkIGNoYXJfYmFzZSBjaGFyX2xlbmd0aCBjaGFyYWN0ZXJfbGVuZ3RoIGNoYXJhY3RlcnMgY2hhcmFjdGVyc2V0IGNoYXJpbmRleCBjaGFyc2V0IGNoYXJzZXRmb3JtIGNoYXJzZXRpZCBjaGVjayBjaGVja3N1bSBjaGVja3N1bV9hZ2cgY2hpbGQgY2hvb3NlIGNociBjaHVuayBjbGFzcyBjbGVhbnVwIGNsZWFyIGNsaWVudCBjbG9iIGNsb2JfYmFzZSBjbG9uZSBjbG9zZSBjbHVzdGVyX2lkIGNsdXN0ZXJfcHJvYmFiaWxpdHkgY2x1c3Rlcl9zZXQgY2x1c3RlcmluZyBjb2FsZXNjZSBjb2VyY2liaWxpdHkgY29sIGNvbGxhdGUgY29sbGF0aW9uIGNvbGxlY3QgY29sdSBjb2x1bSBjb2x1bW4gY29sdW1uX3ZhbHVlIGNvbHVtbnMgY29sdW1uc191cGRhdGVkIGNvbW1lbnQgY29tbWl0IGNvbXBhY3QgY29tcGF0aWJpbGl0eSBjb21waWxlZCBjb21wbGV0ZSBjb21wb3NpdGVfbGltaXQgY29tcG91bmQgY29tcHJlc3MgY29tcHV0ZSBjb25jYXQgY29uY2F0X3dzIGNvbmN1cnJlbnQgY29uZmlybSBjb25uIGNvbm5lYyBjb25uZWN0IGNvbm5lY3RfYnlfaXNjeWNsZSBjb25uZWN0X2J5X2lzbGVhZiBjb25uZWN0X2J5X3Jvb3QgY29ubmVjdF90aW1lIGNvbm5lY3Rpb24gY29uc2lkZXIgY29uc2lzdGVudCBjb25zdGFudCBjb25zdHJhaW50IGNvbnN0cmFpbnRzIGNvbnN0cnVjdG9yIGNvbnRhaW5lciBjb250ZW50IGNvbnRlbnRzIGNvbnRleHQgY29udHJpYnV0b3JzIGNvbnRyb2xmaWxlIGNvbnYgY29udmVydCBjb252ZXJ0X3R6IGNvcnIgY29ycl9rIGNvcnJfcyBjb3JyZXNwb25kaW5nIGNvcnJ1cHRpb24gY29zIGNvc3QgY291bnQgY291bnRfYmlnIGNvdW50ZWQgY292YXJfcG9wIGNvdmFyX3NhbXAgY3B1X3Blcl9jYWxsIGNwdV9wZXJfc2Vzc2lvbiBjcmMzMiBjcmVhdGUgY3JlYXRpb24gY3JpdGljYWwgY3Jvc3MgY3ViZSBjdW1lX2Rpc3QgY3VyZGF0ZSBjdXJyZW50IGN1cnJlbnRfZGF0ZSBjdXJyZW50X3RpbWUgY3VycmVudF90aW1lc3RhbXAgY3VycmVudF91c2VyIGN1cnNvciBjdXJ0aW1lIGN1c3RvbWRhdHVtIGN5Y2xlIGRhdGEgZGF0YWJhc2UgZGF0YWJhc2VzIGRhdGFmaWxlIGRhdGFmaWxlcyBkYXRhbGVuZ3RoIGRhdGVfYWRkIGRhdGVfY2FjaGUgZGF0ZV9mb3JtYXQgZGF0ZV9zdWIgZGF0ZWFkZCBkYXRlZGlmZiBkYXRlZnJvbXBhcnRzIGRhdGVuYW1lIGRhdGVwYXJ0IGRhdGV0aW1lMmZyb21wYXJ0cyBkYXkgZGF5X3RvX3NlY29uZCBkYXluYW1lIGRheW9mbW9udGggZGF5b2Z3ZWVrIGRheW9meWVhciBkYXlzIGRiX3JvbGVfY2hhbmdlIGRidGltZXpvbmUgZGRsIGRlYWxsb2NhdGUgZGVjbGFyZSBkZWNvZGUgZGVjb21wb3NlIGRlY3JlbWVudCBkZWNyeXB0IGRlZHVwbGljYXRlIGRlZiBkZWZhIGRlZmF1IGRlZmF1bCBkZWZhdWx0IGRlZmF1bHRzIGRlZmVycmVkIGRlZmkgZGVmaW4gZGVmaW5lIGRlZ3JlZXMgZGVsYXllZCBkZWxlZ2F0ZSBkZWxldGUgZGVsZXRlX2FsbCBkZWxpbWl0ZWQgZGVtYW5kIGRlbnNlX3JhbmsgZGVwdGggZGVxdWV1ZSBkZXNfZGVjcnlwdCBkZXNfZW5jcnlwdCBkZXNfa2V5X2ZpbGUgZGVzYyBkZXNjciBkZXNjcmkgZGVzY3JpYiBkZXNjcmliZSBkZXNjcmlwdG9yIGRldGVybWluaXN0aWMgZGlhZ25vc3RpY3MgZGlmZmVyZW5jZSBkaW1lbnNpb24gZGlyZWN0X2xvYWQgZGlyZWN0b3J5IGRpc2FibGUgZGlzYWJsZV9hbGwgZGlzYWxsb3cgZGlzYXNzb2NpYXRlIGRpc2NhcmRmaWxlIGRpc2Nvbm5lY3QgZGlza2dyb3VwIGRpc3RpbmN0IGRpc3RpbmN0cm93IGRpc3RyaWJ1dGUgZGlzdHJpYnV0ZWQgZGl2IGRvIGRvY3VtZW50IGRvbWFpbiBkb3RuZXQgZG91YmxlIGRvd25ncmFkZSBkcm9wIGR1bXBmaWxlIGR1cGxpY2F0ZSBkdXJhdGlvbiBlYWNoIGVkaXRpb24gZWRpdGlvbmFibGUgZWRpdGlvbnMgZWxlbWVudCBlbGxpcHNpcyBlbHNlIGVsc2lmIGVsdCBlbXB0eSBlbmFibGUgZW5hYmxlX2FsbCBlbmNsb3NlZCBlbmNvZGUgZW5jb2RpbmcgZW5jcnlwdCBlbmQgZW5kLWV4ZWMgZW5kaWFuIGVuZm9yY2VkIGVuZ2luZSBlbmdpbmVzIGVucXVldWUgZW50ZXJwcmlzZSBlbnRpdHllc2NhcGluZyBlb21vbnRoIGVycm9yIGVycm9ycyBlc2NhcGVkIGV2YWxuYW1lIGV2YWx1YXRlIGV2ZW50IGV2ZW50ZGF0YSBldmVudHMgZXhjZXB0IGV4Y2VwdGlvbiBleGNlcHRpb25zIGV4Y2hhbmdlIGV4Y2x1ZGUgZXhjbHVkaW5nIGV4ZWN1IGV4ZWN1dCBleGVjdXRlIGV4ZW1wdCBleGlzdHMgZXhpdCBleHAgZXhwaXJlIGV4cGxhaW4gZXhwb3J0IGV4cG9ydF9zZXQgZXh0ZW5kZWQgZXh0ZW50IGV4dGVybmFsIGV4dGVybmFsXzEgZXh0ZXJuYWxfMiBleHRlcm5hbGx5IGV4dHJhY3QgZmFpbGVkIGZhaWxlZF9sb2dpbl9hdHRlbXB0cyBmYWlsb3ZlciBmYWlsdXJlIGZhciBmYXN0IGZlYXR1cmVfc2V0IGZlYXR1cmVfdmFsdWUgZmV0Y2ggZmllbGQgZmllbGRzIGZpbGUgZmlsZV9uYW1lX2NvbnZlcnQgZmlsZXN5c3RlbV9saWtlX2xvZ2dpbmcgZmluYWwgZmluaXNoIGZpcnN0IGZpcnN0X3ZhbHVlIGZpeGVkIGZsYXNoX2NhY2hlIGZsYXNoYmFjayBmbG9vciBmbHVzaCBmb2xsb3dpbmcgZm9sbG93cyBmb3IgZm9yYWxsIGZvcmNlIGZvcm0gZm9ybWEgZm9ybWF0IGZvdW5kIGZvdW5kX3Jvd3MgZnJlZWxpc3QgZnJlZWxpc3RzIGZyZWVwb29scyBmcmVzaCBmcm9tIGZyb21fYmFzZTY0IGZyb21fZGF5cyBmdHAgZnVsbCBmdW5jdGlvbiBnZW5lcmFsIGdlbmVyYXRlZCBnZXQgZ2V0X2Zvcm1hdCBnZXRfbG9jayBnZXRkYXRlIGdldHV0Y2RhdGUgZ2xvYmFsIGdsb2JhbF9uYW1lIGdsb2JhbGx5IGdvIGdvdG8gZ3JhbnQgZ3JhbnRzIGdyZWF0ZXN0IGdyb3VwIGdyb3VwX2NvbmNhdCBncm91cF9pZCBncm91cGluZyBncm91cGluZ19pZCBncm91cHMgZ3RpZF9zdWJ0cmFjdCBndWFyYW50ZWUgZ3VhcmQgaGFuZGxlciBoYXNoIGhhc2hrZXlzIGhhdmluZyBoZWEgaGVhZCBoZWFkaSBoZWFkaW4gaGVhZGluZyBoZWFwIGhlbHAgaGV4IGhpZXJhcmNoeSBoaWdoIGhpZ2hfcHJpb3JpdHkgaG9zdHMgaG91ciBodHRwIGlkIGlkZW50X2N1cnJlbnQgaWRlbnRfaW5jciBpZGVudF9zZWVkIGlkZW50aWZpZWQgaWRlbnRpdHkgaWRsZV90aW1lIGlmIGlmbnVsbCBpZ25vcmUgaWlmIGlsaWtlIGlsbSBpbW1lZGlhdGUgaW1wb3J0IGluIGluY2x1ZGUgaW5jbHVkaW5nIGluY3JlbWVudCBpbmRleCBpbmRleGVzIGluZGV4aW5nIGluZGV4dHlwZSBpbmRpY2F0b3IgaW5kaWNlcyBpbmV0Nl9hdG9uIGluZXQ2X250b2EgaW5ldF9hdG9uIGluZXRfbnRvYSBpbmZpbGUgaW5pdGlhbCBpbml0aWFsaXplZCBpbml0aWFsbHkgaW5pdHJhbnMgaW5tZW1vcnkgaW5uZXIgaW5ub2RiIGlucHV0IGluc2VydCBpbnN0YWxsIGluc3RhbmNlIGluc3RhbnRpYWJsZSBpbnN0ciBpbnRlcmZhY2UgaW50ZXJsZWF2ZWQgaW50ZXJzZWN0IGludG8gaW52YWxpZGF0ZSBpbnZpc2libGUgaXMgaXNfZnJlZV9sb2NrIGlzX2lwdjQgaXNfaXB2NF9jb21wYXQgaXNfbm90IGlzX25vdF9udWxsIGlzX3VzZWRfbG9jayBpc2RhdGUgaXNudWxsIGlzb2xhdGlvbiBpdGVyYXRlIGphdmEgam9pbiBqc29uIGpzb25fZXhpc3RzIGtlZXAga2VlcF9kdXBsaWNhdGVzIGtleSBrZXlzIGtpbGwgbGFuZ3VhZ2UgbGFyZ2UgbGFzdCBsYXN0X2RheSBsYXN0X2luc2VydF9pZCBsYXN0X3ZhbHVlIGxheCBsY2FzZSBsZWFkIGxlYWRpbmcgbGVhc3QgbGVhdmVzIGxlZnQgbGVuIGxlbmdodCBsZW5ndGggbGVzcyBsZXZlbCBsZXZlbHMgbGlicmFyeSBsaWtlIGxpa2UyIGxpa2U0IGxpa2VjIGxpbWl0IGxpbmVzIGxpbmsgbGlzdCBsaXN0YWdnIGxpdHRsZSBsbiBsb2FkIGxvYWRfZmlsZSBsb2IgbG9icyBsb2NhbCBsb2NhbHRpbWUgbG9jYWx0aW1lc3RhbXAgbG9jYXRlIGxvY2F0b3IgbG9jayBsb2NrZWQgbG9nIGxvZzEwIGxvZzIgbG9nZmlsZSBsb2dmaWxlcyBsb2dnaW5nIGxvZ2ljYWwgbG9naWNhbF9yZWFkc19wZXJfY2FsbCBsb2dvZmYgbG9nb24gbG9ncyBsb25nIGxvb3AgbG93IGxvd19wcmlvcml0eSBsb3dlciBscGFkIGxydHJpbSBsdHJpbSBtYWluIG1ha2Vfc2V0IG1ha2VkYXRlIG1ha2V0aW1lIG1hbmFnZWQgbWFuYWdlbWVudCBtYW51YWwgbWFwIG1hcHBpbmcgbWFzayBtYXN0ZXIgbWFzdGVyX3Bvc193YWl0IG1hdGNoIG1hdGNoZWQgbWF0ZXJpYWxpemVkIG1heCBtYXhleHRlbnRzIG1heGltaXplIG1heGluc3RhbmNlcyBtYXhsZW4gbWF4bG9nZmlsZXMgbWF4bG9naGlzdG9yeSBtYXhsb2dtZW1iZXJzIG1heHNpemUgbWF4dHJhbnMgbWQ1IG1lYXN1cmVzIG1lZGlhbiBtZWRpdW0gbWVtYmVyIG1lbWNvbXByZXNzIG1lbW9yeSBtZXJnZSBtaWNyb3NlY29uZCBtaWQgbWlncmF0aW9uIG1pbiBtaW5leHRlbnRzIG1pbmltdW0gbWluaW5nIG1pbnVzIG1pbnV0ZSBtaW52YWx1ZSBtaXNzaW5nIG1vZCBtb2RlIG1vZGVsIG1vZGlmaWNhdGlvbiBtb2RpZnkgbW9kdWxlIG1vbml0b3JpbmcgbW9udGggbW9udGhzIG1vdW50IG1vdmUgbW92ZW1lbnQgbXVsdGlzZXQgbXV0ZXggbmFtZSBuYW1lX2NvbnN0IG5hbWVzIG5hbiBuYXRpb25hbCBuYXRpdmUgbmF0dXJhbCBuYXYgbmNoYXIgbmNsb2IgbmVzdGVkIG5ldmVyIG5ldyBuZXdsaW5lIG5leHQgbmV4dHZhbCBubyBub193cml0ZV90b19iaW5sb2cgbm9hcmNoaXZlbG9nIG5vYXVkaXQgbm9iYWRmaWxlIG5vY2hlY2sgbm9jb21wcmVzcyBub2NvcHkgbm9jeWNsZSBub2RlbGF5IG5vZGlzY2FyZGZpbGUgbm9lbnRpdHllc2NhcGluZyBub2d1YXJhbnRlZSBub2tlZXAgbm9sb2dmaWxlIG5vbWFwcGluZyBub21heHZhbHVlIG5vbWluaW1pemUgbm9taW52YWx1ZSBub21vbml0b3Jpbmcgbm9uZSBub25lZGl0aW9uYWJsZSBub25zY2hlbWEgbm9vcmRlciBub3ByIG5vcHJvIG5vcHJvbSBub3Byb21wIG5vcHJvbXB0IG5vcmVseSBub3Jlc2V0bG9ncyBub3JldmVyc2Ugbm9ybWFsIG5vcm93ZGVwZW5kZW5jaWVzIG5vc2NoZW1hY2hlY2sgbm9zd2l0Y2ggbm90IG5vdGhpbmcgbm90aWNlIG5vdHJpbSBub3ZhbGlkYXRlIG5vdyBub3dhaXQgbnRoX3ZhbHVlIG51bGxpZiBudWxscyBudW0gbnVtYiBudW1iZSBudmFyY2hhciBudmFyY2hhcjIgb2JqZWN0IG9jaWNvbGwgb2NpZGF0ZSBvY2lkYXRldGltZSBvY2lkdXJhdGlvbiBvY2lpbnRlcnZhbCBvY2lsb2Jsb2NhdG9yIG9jaW51bWJlciBvY2lyZWYgb2NpcmVmY3Vyc29yIG9jaXJvd2lkIG9jaXN0cmluZyBvY2l0eXBlIG9jdCBvY3RldF9sZW5ndGggb2Ygb2ZmIG9mZmxpbmUgb2Zmc2V0IG9pZCBvaWRpbmRleCBvbGQgb24gb25saW5lIG9ubHkgb3BhcXVlIG9wZW4gb3BlcmF0aW9ucyBvcGVyYXRvciBvcHRpbWFsIG9wdGltaXplIG9wdGlvbiBvcHRpb25hbGx5IG9yIG9yYWNsZSBvcmFjbGVfZGF0ZSBvcmFkYXRhIG9yZCBvcmRhdWRpbyBvcmRkaWNvbSBvcmRkb2Mgb3JkZXIgb3JkaW1hZ2Ugb3JkaW5hbGl0eSBvcmR2aWRlbyBvcmdhbml6YXRpb24gb3JsYW55IG9ybHZhcnkgb3V0IG91dGVyIG91dGZpbGUgb3V0bGluZSBvdXRwdXQgb3ZlciBvdmVyZmxvdyBvdmVycmlkaW5nIHBhY2thZ2UgcGFkIHBhcmFsbGVsIHBhcmFsbGVsX2VuYWJsZSBwYXJhbWV0ZXJzIHBhcmVudCBwYXJzZSBwYXJ0aWFsIHBhcnRpdGlvbiBwYXJ0aXRpb25zIHBhc2NhbCBwYXNzaW5nIHBhc3N3b3JkIHBhc3N3b3JkX2dyYWNlX3RpbWUgcGFzc3dvcmRfbG9ja190aW1lIHBhc3N3b3JkX3JldXNlX21heCBwYXNzd29yZF9yZXVzZV90aW1lIHBhc3N3b3JkX3ZlcmlmeV9mdW5jdGlvbiBwYXRjaCBwYXRoIHBhdGluZGV4IHBjdGluY3JlYXNlIHBjdHRocmVzaG9sZCBwY3R1c2VkIHBjdHZlcnNpb24gcGVyY2VudCBwZXJjZW50X3JhbmsgcGVyY2VudGlsZV9jb250IHBlcmNlbnRpbGVfZGlzYyBwZXJmb3JtYW5jZSBwZXJpb2QgcGVyaW9kX2FkZCBwZXJpb2RfZGlmZiBwZXJtYW5lbnQgcGh5c2ljYWwgcGkgcGlwZSBwaXBlbGluZWQgcGl2b3QgcGx1Z2dhYmxlIHBsdWdpbiBwb2xpY3kgcG9zaXRpb24gcG9zdF90cmFuc2FjdGlvbiBwb3cgcG93ZXIgcHJhZ21hIHByZWJ1aWx0IHByZWNlZGVzIHByZWNlZGluZyBwcmVjaXNpb24gcHJlZGljdGlvbiBwcmVkaWN0aW9uX2Nvc3QgcHJlZGljdGlvbl9kZXRhaWxzIHByZWRpY3Rpb25fcHJvYmFiaWxpdHkgcHJlZGljdGlvbl9zZXQgcHJlcGFyZSBwcmVzZW50IHByZXNlcnZlIHByaW9yIHByaW9yaXR5IHByaXZhdGUgcHJpdmF0ZV9zZ2EgcHJpdmlsZWdlcyBwcm9jZWR1cmFsIHByb2NlZHVyZSBwcm9jZWR1cmVfYW5hbHl6ZSBwcm9jZXNzbGlzdCBwcm9maWxlcyBwcm9qZWN0IHByb21wdCBwcm90ZWN0aW9uIHB1YmxpYyBwdWJsaXNoaW5nc2VydmVybmFtZSBwdXJnZSBxdWFydGVyIHF1ZXJ5IHF1aWNrIHF1aWVzY2UgcXVvdGEgcXVvdGVuYW1lIHJhZGlhbnMgcmFpc2UgcmFuZCByYW5nZSByYW5rIHJhdyByZWFkIHJlYWRzIHJlYWRzaXplIHJlYnVpbGQgcmVjb3JkIHJlY29yZHMgcmVjb3ZlciByZWNvdmVyeSByZWN1cnNpdmUgcmVjeWNsZSByZWRvIHJlZHVjZWQgcmVmIHJlZmVyZW5jZSByZWZlcmVuY2VkIHJlZmVyZW5jZXMgcmVmZXJlbmNpbmcgcmVmcmVzaCByZWdleHBfbGlrZSByZWdpc3RlciByZWdyX2F2Z3ggcmVncl9hdmd5IHJlZ3JfY291bnQgcmVncl9pbnRlcmNlcHQgcmVncl9yMiByZWdyX3Nsb3BlIHJlZ3Jfc3h4IHJlZ3Jfc3h5IHJlamVjdCByZWtleSByZWxhdGlvbmFsIHJlbGF0aXZlIHJlbGF5bG9nIHJlbGVhc2UgcmVsZWFzZV9sb2NrIHJlbGllc19vbiByZWxvY2F0ZSByZWx5IHJlbSByZW1haW5kZXIgcmVuYW1lIHJlcGFpciByZXBlYXQgcmVwbGFjZSByZXBsaWNhdGUgcmVwbGljYXRpb24gcmVxdWlyZWQgcmVzZXQgcmVzZXRsb2dzIHJlc2l6ZSByZXNvdXJjZSByZXNwZWN0IHJlc3RvcmUgcmVzdHJpY3RlZCByZXN1bHQgcmVzdWx0X2NhY2hlIHJlc3VtYWJsZSByZXN1bWUgcmV0ZW50aW9uIHJldHVybiByZXR1cm5pbmcgcmV0dXJucyByZXVzZSByZXZlcnNlIHJldm9rZSByaWdodCBybGlrZSByb2xlIHJvbGVzIHJvbGxiYWNrIHJvbGxpbmcgcm9sbHVwIHJvdW5kIHJvdyByb3dfY291bnQgcm93ZGVwZW5kZW5jaWVzIHJvd2lkIHJvd251bSByb3dzIHJ0cmltIHJ1bGVzIHNhZmUgc2FsdCBzYW1wbGUgc2F2ZSBzYXZlcG9pbnQgc2IxIHNiMiBzYjQgc2NhbiBzY2hlbWEgc2NoZW1hY2hlY2sgc2NuIHNjb3BlIHNjcm9sbCBzZG9fZ2VvcmFzdGVyIHNkb190b3BvX2dlb21ldHJ5IHNlYXJjaCBzZWNfdG9fdGltZSBzZWNvbmQgc2VjdGlvbiBzZWN1cmVmaWxlIHNlY3VyaXR5IHNlZWQgc2VnbWVudCBzZWxlY3Qgc2VsZiBzZXF1ZW5jZSBzZXF1ZW50aWFsIHNlcmlhbGl6YWJsZSBzZXJ2ZXIgc2VydmVyZXJyb3Igc2Vzc2lvbiBzZXNzaW9uX3VzZXIgc2Vzc2lvbnNfcGVyX3VzZXIgc2V0IHNldHMgc2V0dGluZ3Mgc2hhIHNoYTEgc2hhMiBzaGFyZSBzaGFyZWQgc2hhcmVkX3Bvb2wgc2hvcnQgc2hvdyBzaHJpbmsgc2h1dGRvd24gc2lfYXZlcmFnZWNvbG9yIHNpX2NvbG9yaGlzdG9ncmFtIHNpX2ZlYXR1cmVsaXN0IHNpX3Bvc2l0aW9uYWxjb2xvciBzaV9zdGlsbGltYWdlIHNpX3RleHR1cmUgc2libGluZ3Mgc2lkIHNpZ24gc2luIHNpemUgc2l6ZV90IHNpemVzIHNraXAgc2xhdmUgc2xlZXAgc21hbGxkYXRldGltZWZyb21wYXJ0cyBzbWFsbGZpbGUgc25hcHNob3Qgc29tZSBzb25hbWUgc29ydCBzb3VuZGV4IHNvdXJjZSBzcGFjZSBzcGFyc2Ugc3BmaWxlIHNwbGl0IHNxbCBzcWxfYmlnX3Jlc3VsdCBzcWxfYnVmZmVyX3Jlc3VsdCBzcWxfY2FjaGUgc3FsX2NhbGNfZm91bmRfcm93cyBzcWxfc21hbGxfcmVzdWx0IHNxbF92YXJpYW50X3Byb3BlcnR5IHNxbGNvZGUgc3FsZGF0YSBzcWxlcnJvciBzcWxuYW1lIHNxbHN0YXRlIHNxcnQgc3F1YXJlIHN0YW5kYWxvbmUgc3RhbmRieSBzdGFydCBzdGFydGluZyBzdGFydHVwIHN0YXRlbWVudCBzdGF0aWMgc3RhdGlzdGljcyBzdGF0c19iaW5vbWlhbF90ZXN0IHN0YXRzX2Nyb3NzdGFiIHN0YXRzX2tzX3Rlc3Qgc3RhdHNfbW9kZSBzdGF0c19td190ZXN0IHN0YXRzX29uZV93YXlfYW5vdmEgc3RhdHNfdF90ZXN0XyBzdGF0c190X3Rlc3RfaW5kZXAgc3RhdHNfdF90ZXN0X29uZSBzdGF0c190X3Rlc3RfcGFpcmVkIHN0YXRzX3dzcl90ZXN0IHN0YXR1cyBzdGQgc3RkZGV2IHN0ZGRldl9wb3Agc3RkZGV2X3NhbXAgc3RkZXYgc3RvcCBzdG9yYWdlIHN0b3JlIHN0b3JlZCBzdHIgc3RyX3RvX2RhdGUgc3RyYWlnaHRfam9pbiBzdHJjbXAgc3RyaWN0IHN0cmluZyBzdHJ1Y3Qgc3R1ZmYgc3R5bGUgc3ViZGF0ZSBzdWJwYXJ0aXRpb24gc3VicGFydGl0aW9ucyBzdWJzdGl0dXRhYmxlIHN1YnN0ciBzdWJzdHJpbmcgc3VidGltZSBzdWJ0cmluZ19pbmRleCBzdWJ0eXBlIHN1Y2Nlc3Mgc3VtIHN1c3BlbmQgc3dpdGNoIHN3aXRjaG9mZnNldCBzd2l0Y2hvdmVyIHN5bmMgc3luY2hyb25vdXMgc3lub255bSBzeXMgc3lzX3htbGFnZyBzeXNhc20gc3lzYXV4IHN5c2RhdGUgc3lzZGF0ZXRpbWVvZmZzZXQgc3lzZGJhIHN5c29wZXIgc3lzdGVtIHN5c3RlbV91c2VyIHN5c3V0Y2RhdGV0aW1lIHRhYmxlIHRhYmxlcyB0YWJsZXNwYWNlIHRhbiB0ZG8gdGVtcGxhdGUgdGVtcG9yYXJ5IHRlcm1pbmF0ZWQgdGVydGlhcnlfd2VpZ2h0cyB0ZXN0IHRoYW4gdGhlbiB0aHJlYWQgdGhyb3VnaCB0aWVyIHRpZXMgdGltZSB0aW1lX2Zvcm1hdCB0aW1lX3pvbmUgdGltZWRpZmYgdGltZWZyb21wYXJ0cyB0aW1lb3V0IHRpbWVzdGFtcCB0aW1lc3RhbXBhZGQgdGltZXN0YW1wZGlmZiB0aW1lem9uZV9hYmJyIHRpbWV6b25lX21pbnV0ZSB0aW1lem9uZV9yZWdpb24gdG8gdG9fYmFzZTY0IHRvX2RhdGUgdG9fZGF5cyB0b19zZWNvbmRzIHRvZGF0ZXRpbWVvZmZzZXQgdHJhY2UgdHJhY2tpbmcgdHJhbnNhY3Rpb24gdHJhbnNhY3Rpb25hbCB0cmFuc2xhdGUgdHJhbnNsYXRpb24gdHJlYXQgdHJpZ2dlciB0cmlnZ2VyX25lc3RsZXZlbCB0cmlnZ2VycyB0cmltIHRydW5jYXRlIHRyeV9jYXN0IHRyeV9jb252ZXJ0IHRyeV9wYXJzZSB0eXBlIHViMSB1YjIgdWI0IHVjYXNlIHVuYXJjaGl2ZWQgdW5ib3VuZGVkIHVuY29tcHJlc3MgdW5kZXIgdW5kbyB1bmhleCB1bmljb2RlIHVuaWZvcm0gdW5pbnN0YWxsIHVuaW9uIHVuaXF1ZSB1bml4X3RpbWVzdGFtcCB1bmtub3duIHVubGltaXRlZCB1bmxvY2sgdW5waXZvdCB1bnJlY292ZXJhYmxlIHVuc2FmZSB1bnNpZ25lZCB1bnRpbCB1bnRydXN0ZWQgdW51c2FibGUgdW51c2VkIHVwZGF0ZSB1cGRhdGVkIHVwZ3JhZGUgdXBwZWQgdXBwZXIgdXBzZXJ0IHVybCB1cm93aWQgdXNhYmxlIHVzYWdlIHVzZSB1c2Vfc3RvcmVkX291dGxpbmVzIHVzZXIgdXNlcl9kYXRhIHVzZXJfcmVzb3VyY2VzIHVzZXJzIHVzaW5nIHV0Y19kYXRlIHV0Y190aW1lc3RhbXAgdXVpZCB1dWlkX3Nob3J0IHZhbGlkYXRlIHZhbGlkYXRlX3Bhc3N3b3JkX3N0cmVuZ3RoIHZhbGlkYXRpb24gdmFsaXN0IHZhbHVlIHZhbHVlcyB2YXIgdmFyX3NhbXAgdmFyY2hhcmMgdmFyaSB2YXJpYSB2YXJpYWIgdmFyaWFibCB2YXJpYWJsZSB2YXJpYWJsZXMgdmFyaWFuY2UgdmFycCB2YXJyYXcgdmFycmF3YyB2YXJyYXkgdmVyaWZ5IHZlcnNpb24gdmVyc2lvbnMgdmlldyB2aXJ0dWFsIHZpc2libGUgdm9pZCB3YWl0IHdhbGxldCB3YXJuaW5nIHdhcm5pbmdzIHdlZWsgd2Vla2RheSB3ZWVrb2Z5ZWFyIHdlbGxmb3JtZWQgd2hlbiB3aGVuZSB3aGVuZXYgd2hlbmV2ZSB3aGVuZXZlciB3aGVyZSB3aGlsZSB3aGl0ZXNwYWNlIHdpdGggd2l0aGluIHdpdGhvdXQgd29yayB3cmFwcGVkIHhkYiB4bWwgeG1sYWdnIHhtbGF0dHJpYnV0ZXMgeG1sY2FzdCB4bWxjb2xhdHR2YWwgeG1sZWxlbWVudCB4bWxleGlzdHMgeG1sZm9yZXN0IHhtbGluZGV4IHhtbG5hbWVzcGFjZXMgeG1scGkgeG1scXVlcnkgeG1scm9vdCB4bWxzY2hlbWEgeG1sc2VyaWFsaXplIHhtbHRhYmxlIHhtbHR5cGUgeG9yIHllYXIgeWVhcl90b19tb250aCB5ZWFycyB5ZWFyd2VlayIsbGl0ZXJhbDoidHJ1ZSBmYWxzZSBudWxsIixidWlsdF9pbjoiYXJyYXkgYmlnaW50IGJpbmFyeSBiaXQgYmxvYiBib29sZWFuIGNoYXIgY2hhcmFjdGVyIGRhdGUgZGVjIGRlY2ltYWwgZmxvYXQgaW50IGludDggaW50ZWdlciBpbnRlcnZhbCBudW1iZXIgbnVtZXJpYyByZWFsIHJlY29yZCBzZXJpYWwgc2VyaWFsOCBzbWFsbGludCB0ZXh0IHZhcmNoYXIgdmFyeWluZyB2b2lkIn0sYzpbe2NOOiJzdHJpbmciLGI6IiciLGU6IiciLGM6W2UuQkUse2I6IicnIn1dfSx7Y046InN0cmluZyIsYjonIicsZTonIicsYzpbZS5CRSx7YjonIiInfV19LHtjTjoic3RyaW5nIixiOiJgIixlOiJgIixjOltlLkJFXX0sZS5DTk0sZS5DQkNNLHRdfSxlLkNCQ00sdF19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJyIixmdW5jdGlvbihlKXt2YXIgcj0iKFthLXpBLVpdfFxcLlthLXpBLVouXSlbYS16QS1aMC05Ll9dKiI7cmV0dXJue2M6W2UuSENNLHtiOnIsbDpyLGs6e2tleXdvcmQ6ImZ1bmN0aW9uIGlmIGluIGJyZWFrIG5leHQgcmVwZWF0IGVsc2UgZm9yIHJldHVybiBzd2l0Y2ggd2hpbGUgdHJ5IHRyeUNhdGNoIHN0b3Agd2FybmluZyByZXF1aXJlIGxpYnJhcnkgYXR0YWNoIGRldGFjaCBzb3VyY2Ugc2V0TWV0aG9kIHNldEdlbmVyaWMgc2V0R3JvdXBHZW5lcmljIHNldENsYXNzIC4uLiIsbGl0ZXJhbDoiTlVMTCBOQSBUUlVFIEZBTFNFIFQgRiBJbmYgTmFOIE5BX2ludGVnZXJffDEwIE5BX3JlYWxffDEwIE5BX2NoYXJhY3Rlcl98MTAgTkFfY29tcGxleF98MTAifSxyOjB9LHtjTjoibnVtYmVyIixiOiIwW3hYXVswLTlhLWZBLUZdK1tMaV0/XFxiIixyOjB9LHtjTjoibnVtYmVyIixiOiJcXGQrKD86W2VFXVsrXFwtXT9cXGQqKT9MXFxiIixyOjB9LHtjTjoibnVtYmVyIixiOiJcXGQrXFwuKD8hXFxkKSg/OmlcXGIpPyIscjowfSx7Y046Im51bWJlciIsYjoiXFxkKyg/OlxcLlxcZCopPyg/OltlRV1bK1xcLV0/XFxkKik/aT9cXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcLlxcZCsoPzpbZUVdWytcXC1dP1xcZCopP2k/XFxiIixyOjB9LHtiOiJgIixlOiJgIixyOjB9LHtjTjoic3RyaW5nIixjOltlLkJFXSx2Olt7YjonIicsZTonIid9LHtiOiInIixlOiInIn1dfV19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJwZXJsIixmdW5jdGlvbihlKXt2YXIgdD0iZ2V0cHdlbnQgZ2V0c2VydmVudCBxdW90ZW1ldGEgbXNncmN2IHNjYWxhciBraWxsIGRibWNsb3NlIHVuZGVmIGxjIG1hIHN5c3dyaXRlIHRyIHNlbmQgdW1hc2sgc3lzb3BlbiBzaG13cml0ZSB2ZWMgcXggdXRpbWUgbG9jYWwgb2N0IHNlbWN0bCBsb2NhbHRpbWUgcmVhZHBpcGUgZG8gcmV0dXJuIGZvcm1hdCByZWFkIHNwcmludGYgZGJtb3BlbiBwb3AgZ2V0cGdycCBub3QgZ2V0cHduYW0gcmV3aW5kZGlyIHFxZmlsZW5vIHF3IGVuZHByb3RvZW50IHdhaXQgc2V0aG9zdGVudCBibGVzcyBzfDAgb3BlbmRpciBjb250aW51ZSBlYWNoIHNsZWVwIGVuZGdyZW50IHNodXRkb3duIGR1bXAgY2hvbXAgY29ubmVjdCBnZXRzb2NrbmFtZSBkaWUgc29ja2V0cGFpciBjbG9zZSBmbG9jayBleGlzdHMgaW5kZXggc2htZ2V0c3ViIGZvciBlbmRwd2VudCByZWRvIGxzdGF0IG1zZ2N0bCBzZXRwZ3JwIGFicyBleGl0IHNlbGVjdCBwcmludCByZWYgZ2V0aG9zdGJ5YWRkciB1bnNoaWZ0IGZjbnRsIHN5c2NhbGwgZ290byBnZXRuZXRieWFkZHIgam9pbiBnbXRpbWUgc3ltbGluayBzZW1nZXQgc3BsaWNlIHh8MCBnZXRwZWVybmFtZSByZWN2IGxvZyBzZXRzb2Nrb3B0IGNvcyBsYXN0IHJldmVyc2UgZ2V0aG9zdGJ5bmFtZSBnZXRncm5hbSBzdHVkeSBmb3JtbGluZSBlbmRob3N0ZW50IHRpbWVzIGNob3AgbGVuZ3RoIGdldGhvc3RlbnQgZ2V0bmV0ZW50IHBhY2sgZ2V0cHJvdG9lbnQgZ2V0c2VydmJ5bmFtZSByYW5kIG1rZGlyIHBvcyBjaG1vZCB5fDAgc3Vic3RyIGVuZG5ldGVudCBwcmludGYgbmV4dCBvcGVuIG1zZ3NuZCByZWFkZGlyIHVzZSB1bmxpbmsgZ2V0c29ja29wdCBnZXRwcmlvcml0eSByaW5kZXggd2FudGFycmF5IGhleCBzeXN0ZW0gZ2V0c2VydmJ5cG9ydCBlbmRzZXJ2ZW50IGludCBjaHIgdW50aWUgcm1kaXIgcHJvdG90eXBlIHRlbGwgbGlzdGVuIGZvcmsgc2htcmVhZCB1Y2ZpcnN0IHNldHByb3RvZW50IGVsc2Ugc3lzc2VlayBsaW5rIGdldGdyZ2lkIHNobWN0bCB3YWl0cGlkIHVucGFjayBnZXRuZXRieW5hbWUgcmVzZXQgY2hkaXIgZ3JlcCBzcGxpdCByZXF1aXJlIGNhbGxlciBsY2ZpcnN0IHVudGlsIHdhcm4gd2hpbGUgdmFsdWVzIHNoaWZ0IHRlbGxkaXIgZ2V0cHd1aWQgbXkgZ2V0cHJvdG9ieW51bWJlciBkZWxldGUgYW5kIHNvcnQgdWMgZGVmaW5lZCBzcmFuZCBhY2NlcHQgcGFja2FnZSBzZWVrZGlyIGdldHByb3RvYnluYW1lIHNlbW9wIG91ciByZW5hbWUgc2VlayBpZiBxfDAgY2hyb290IHN5c3JlYWQgc2V0cHdlbnQgbm8gY3J5cHQgZ2V0YyBjaG93biBzcXJ0IHdyaXRlIHNldG5ldGVudCBzZXRwcmlvcml0eSBmb3JlYWNoIHRpZSBzaW4gbXNnZ2V0IG1hcCBzdGF0IGdldGxvZ2luIHVubGVzcyBlbHNpZiB0cnVuY2F0ZSBleGVjIGtleXMgZ2xvYiB0aWVkIGNsb3NlZGlyaW9jdGwgc29ja2V0IHJlYWRsaW5rIGV2YWwgeG9yIHJlYWRsaW5lIGJpbm1vZGUgc2V0c2VydmVudCBlb2Ygb3JkIGJpbmQgYWxhcm0gcGlwZSBhdGFuMiBnZXRncmVudCBleHAgdGltZSBwdXNoIHNldGdyZW50IGd0IGx0IG9yIG5lIG18MCBicmVhayBnaXZlbiBzYXkgc3RhdGUgd2hlbiIscj17Y046InN1YnN0IixiOiJbJEBdXFx7IixlOiJcXH0iLGs6dH0scz17YjoiLT57IixlOiJ9In0sbj17djpbe2I6L1wkXGQvfSx7YjovW1wkJUBdKFxeXHdcYnwjXHcrKDo6XHcrKSp8e1x3K318XHcrKDo6XHcqKSopL30se2I6L1tcJCVAXVteXHNcd3tdLyxyOjB9XX0saT1bZS5CRSxyLG5dLG89W24sZS5IQ00sZS5DKCJeXFw9XFx3IiwiXFw9Y3V0Iix7ZVc6ITB9KSxzLHtjTjoic3RyaW5nIixjOmksdjpbe2I6InFbcXd4cl0/XFxzKlxcKCIsZToiXFwpIixyOjV9LHtiOiJxW3F3eHJdP1xccypcXFsiLGU6IlxcXSIscjo1fSx7YjoicVtxd3hyXT9cXHMqXFx7IixlOiJcXH0iLHI6NX0se2I6InFbcXd4cl0/XFxzKlxcfCIsZToiXFx8IixyOjV9LHtiOiJxW3F3eHJdP1xccypcXDwiLGU6IlxcPiIscjo1fSx7YjoicXdcXHMrcSIsZToicSIscjo1fSx7YjoiJyIsZToiJyIsYzpbZS5CRV19LHtiOiciJyxlOiciJ30se2I6ImAiLGU6ImAiLGM6W2UuQkVdfSx7Yjoie1xcdyt9IixjOltdLHI6MH0se2I6Ii0/XFx3K1xccypcXD1cXD4iLGM6W10scjowfV19LHtjTjoibnVtYmVyIixiOiIoXFxiMFswLTdfXSspfChcXGIweFswLTlhLWZBLUZfXSspfChcXGJbMS05XVswLTlfXSooXFwuWzAtOV9dKyk/KXxbMF9dXFxiIixyOjB9LHtiOiIoXFwvXFwvfCIrZS5SU1IrInxcXGIoc3BsaXR8cmV0dXJufHByaW50fHJldmVyc2V8Z3JlcClcXGIpXFxzKiIsazoic3BsaXQgcmV0dXJuIHByaW50IHJldmVyc2UgZ3JlcCIscjowLGM6W2UuSENNLHtjTjoicmVnZXhwIixiOiIoc3x0cnx5KS8oXFxcXC58W14vXSkqLyhcXFxcLnxbXi9dKSovW2Etel0qIixyOjEwfSx7Y046InJlZ2V4cCIsYjoiKG18cXIpPy8iLGU6Ii9bYS16XSoiLGM6W2UuQkVdLHI6MH1dfSx7Y046ImZ1bmN0aW9uIixiSzoic3ViIixlOiIoXFxzKlxcKC4qP1xcKSk/Wzt7XSIsZUU6ITAscjo1LGM6W2UuVE1dfSx7YjoiLVxcd1xcYiIscjowfSx7YjoiXl9fREFUQV9fJCIsZToiXl9fRU5EX18kIixzTDoibW9qb2xpY2lvdXMiLGM6W3tiOiJeQEAuKiIsZToiJCIsY046ImNvbW1lbnQifV19XTtyZXR1cm4gci5jPW8scy5jPW8se2FsaWFzZXM6WyJwbCIsInBtIl0sbDovW1x3XC5dKy8sazp0LGM6b319KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoImluaSIsZnVuY3Rpb24oZSl7dmFyIGI9e2NOOiJzdHJpbmciLGM6W2UuQkVdLHY6W3tiOiInJyciLGU6IicnJyIscjoxMH0se2I6JyIiIicsZTonIiIiJyxyOjEwfSx7YjonIicsZTonIid9LHtiOiInIixlOiInIn1dfTtyZXR1cm57YWxpYXNlczpbInRvbWwiXSxjSTohMCxpOi9cUy8sYzpbZS5DKCI7IiwiJCIpLGUuSENNLHtjTjoic2VjdGlvbiIsYjovXlxzKlxbKy8sZTovXF0rL30se2I6L15bYS16MC05XFtcXV8tXStccyo9XHMqLyxlOiIkIixyQjohMCxjOlt7Y046ImF0dHIiLGI6L1thLXowLTlcW1xdXy1dKy99LHtiOi89LyxlVzohMCxyOjAsYzpbe2NOOiJsaXRlcmFsIixiOi9cYm9ufG9mZnx0cnVlfGZhbHNlfHllc3xub1xiL30se2NOOiJ2YXJpYWJsZSIsdjpbe2I6L1wkW1x3XGQiXVtcd1xkX10qL30se2I6L1wkXHsoLio/KX0vfV19LGIse2NOOiJudW1iZXIiLGI6LyhbXCtcLV0rKT9bXGRdK19bXGRfXSsvfSxlLk5NXX1dfV19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJkaWZmIixmdW5jdGlvbihlKXtyZXR1cm57YWxpYXNlczpbInBhdGNoIl0sYzpbe2NOOiJtZXRhIixyOjEwLHY6W3tiOi9eQEAgK1wtXGQrLFxkKyArXCtcZCssXGQrICtAQCQvfSx7YjovXlwqXCpcKiArXGQrLFxkKyArXCpcKlwqXCokL30se2I6L15cLVwtXC0gK1xkKyxcZCsgK1wtXC1cLVwtJC99XX0se2NOOiJjb21tZW50Iix2Olt7YjovSW5kZXg6IC8sZTovJC99LHtiOi89ezMsfS8sZTovJC99LHtiOi9eXC17M30vLGU6LyQvfSx7YjovXlwqezN9IC8sZTovJC99LHtiOi9eXCt7M30vLGU6LyQvfSx7YjovXCp7NX0vLGU6L1wqezV9JC99XX0se2NOOiJhZGRpdGlvbiIsYjoiXlxcKyIsZToiJCJ9LHtjTjoiZGVsZXRpb24iLGI6Il5cXC0iLGU6IiQifSx7Y046ImFkZGl0aW9uIixiOiJeXFwhIixlOiIkIn1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiZ28iLGZ1bmN0aW9uKGUpe3ZhciB0PXtrZXl3b3JkOiJicmVhayBkZWZhdWx0IGZ1bmMgaW50ZXJmYWNlIHNlbGVjdCBjYXNlIG1hcCBzdHJ1Y3QgY2hhbiBlbHNlIGdvdG8gcGFja2FnZSBzd2l0Y2ggY29uc3QgZmFsbHRocm91Z2ggaWYgcmFuZ2UgdHlwZSBjb250aW51ZSBmb3IgaW1wb3J0IHJldHVybiB2YXIgZ28gZGVmZXIgYm9vbCBieXRlIGNvbXBsZXg2NCBjb21wbGV4MTI4IGZsb2F0MzIgZmxvYXQ2NCBpbnQ4IGludDE2IGludDMyIGludDY0IHN0cmluZyB1aW50OCB1aW50MTYgdWludDMyIHVpbnQ2NCBpbnQgdWludCB1aW50cHRyIHJ1bmUiLGxpdGVyYWw6InRydWUgZmFsc2UgaW90YSBuaWwiLGJ1aWx0X2luOiJhcHBlbmQgY2FwIGNsb3NlIGNvbXBsZXggY29weSBpbWFnIGxlbiBtYWtlIG5ldyBwYW5pYyBwcmludCBwcmludGxuIHJlYWwgcmVjb3ZlciBkZWxldGUifTtyZXR1cm57YWxpYXNlczpbImdvbGFuZyJdLGs6dCxpOiI8LyIsYzpbZS5DTENNLGUuQ0JDTSx7Y046InN0cmluZyIsdjpbZS5RU00se2I6IiciLGU6IlteXFxcXF0nIn0se2I6ImAiLGU6ImAifV19LHtjTjoibnVtYmVyIix2Olt7YjplLkNOUisiW2RmbHNpXSIscjoxfSxlLkNOTV19LHtiOi86PS99LHtjTjoiZnVuY3Rpb24iLGJLOiJmdW5jIixlOi9ccypcey8sZUU6ITAsYzpbZS5UTSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxrOnQsaTovWyInXS99XX1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiYmFzaCIsZnVuY3Rpb24oZSl7dmFyIHQ9e2NOOiJ2YXJpYWJsZSIsdjpbe2I6L1wkW1x3XGQjQF1bXHdcZF9dKi99LHtiOi9cJFx7KC4qPyl9L31dfSxzPXtjTjoic3RyaW5nIixiOi8iLyxlOi8iLyxjOltlLkJFLHQse2NOOiJ2YXJpYWJsZSIsYjovXCRcKC8sZTovXCkvLGM6W2UuQkVdfV19LGE9e2NOOiJzdHJpbmciLGI6LycvLGU6LycvfTtyZXR1cm57YWxpYXNlczpbInNoIiwienNoIl0sbDovXGItP1thLXpcLl9dK1xiLyxrOntrZXl3b3JkOiJpZiB0aGVuIGVsc2UgZWxpZiBmaSBmb3Igd2hpbGUgaW4gZG8gZG9uZSBjYXNlIGVzYWMgZnVuY3Rpb24iLGxpdGVyYWw6InRydWUgZmFsc2UiLGJ1aWx0X2luOiJicmVhayBjZCBjb250aW51ZSBldmFsIGV4ZWMgZXhpdCBleHBvcnQgZ2V0b3B0cyBoYXNoIHB3ZCByZWFkb25seSByZXR1cm4gc2hpZnQgdGVzdCB0aW1lcyB0cmFwIHVtYXNrIHVuc2V0IGFsaWFzIGJpbmQgYnVpbHRpbiBjYWxsZXIgY29tbWFuZCBkZWNsYXJlIGVjaG8gZW5hYmxlIGhlbHAgbGV0IGxvY2FsIGxvZ291dCBtYXBmaWxlIHByaW50ZiByZWFkIHJlYWRhcnJheSBzb3VyY2UgdHlwZSB0eXBlc2V0IHVsaW1pdCB1bmFsaWFzIHNldCBzaG9wdCBhdXRvbG9hZCBiZyBiaW5ka2V5IGJ5ZSBjYXAgY2hkaXIgY2xvbmUgY29tcGFyZ3VtZW50cyBjb21wY2FsbCBjb21wY3RsIGNvbXBkZXNjcmliZSBjb21wZmlsZXMgY29tcGdyb3VwcyBjb21wcXVvdGUgY29tcHRhZ3MgY29tcHRyeSBjb21wdmFsdWVzIGRpcnMgZGlzYWJsZSBkaXNvd24gZWNob3RjIGVjaG90aSBlbXVsYXRlIGZjIGZnIGZsb2F0IGZ1bmN0aW9ucyBnZXRjYXAgZ2V0bG4gaGlzdG9yeSBpbnRlZ2VyIGpvYnMga2lsbCBsaW1pdCBsb2cgbm9nbG9iIHBvcGQgcHJpbnQgcHVzaGQgcHVzaGxuIHJlaGFzaCBzY2hlZCBzZXRjYXAgc2V0b3B0IHN0YXQgc3VzcGVuZCB0dHljdGwgdW5mdW5jdGlvbiB1bmhhc2ggdW5saW1pdCB1bnNldG9wdCB2YXJlZCB3YWl0IHdoZW5jZSB3aGVyZSB3aGljaCB6Y29tcGlsZSB6Zm9ybWF0IHpmdHAgemxlIHptb2Rsb2FkIHpwYXJzZW9wdHMgenByb2YgenB0eSB6cmVnZXhwYXJzZSB6c29ja2V0IHpzdHlsZSB6dGNwIixfOiItbmUgLWVxIC1sdCAtZ3QgLWYgLWQgLWUgLXMgLWwgLWEifSxjOlt7Y046Im1ldGEiLGI6L14jIVteXG5dK3NoXHMqJC8scjoxMH0se2NOOiJmdW5jdGlvbiIsYjovXHdbXHdcZF9dKlxzKlwoXHMqXClccypcey8sckI6ITAsYzpbZS5pbmhlcml0KGUuVE0se2I6L1x3W1x3XGRfXSovfSldLHI6MH0sZS5IQ00scyxhLHRdfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgicHl0aG9uIixmdW5jdGlvbihlKXt2YXIgcj17a2V5d29yZDoiYW5kIGVsaWYgaXMgZ2xvYmFsIGFzIGluIGlmIGZyb20gcmFpc2UgZm9yIGV4Y2VwdCBmaW5hbGx5IHByaW50IGltcG9ydCBwYXNzIHJldHVybiBleGVjIGVsc2UgYnJlYWsgbm90IHdpdGggY2xhc3MgYXNzZXJ0IHlpZWxkIHRyeSB3aGlsZSBjb250aW51ZSBkZWwgb3IgZGVmIGxhbWJkYSBhc3luYyBhd2FpdCBub25sb2NhbHwxMCBOb25lIFRydWUgRmFsc2UiLGJ1aWx0X2luOiJFbGxpcHNpcyBOb3RJbXBsZW1lbnRlZCJ9LGI9e2NOOiJtZXRhIixiOi9eKD4+PnxcLlwuXC4pIC99LGM9e2NOOiJzdWJzdCIsYjovXHsvLGU6L1x9LyxrOnIsaTovIy99LGE9e2NOOiJzdHJpbmciLGM6W2UuQkVdLHY6W3tiOi8odXxiKT9yPycnJy8sZTovJycnLyxjOltiXSxyOjEwfSx7YjovKHV8Yik/cj8iIiIvLGU6LyIiIi8sYzpbYl0scjoxMH0se2I6LyhmcnxyZnxmKScnJy8sZTovJycnLyxjOltiLGNdfSx7YjovKGZyfHJmfGYpIiIiLyxlOi8iIiIvLGM6W2IsY119LHtiOi8odXxyfHVyKScvLGU6LycvLHI6MTB9LHtiOi8odXxyfHVyKSIvLGU6LyIvLHI6MTB9LHtiOi8oYnxiciknLyxlOi8nL30se2I6LyhifGJyKSIvLGU6LyIvfSx7YjovKGZyfHJmfGYpJy8sZTovJy8sYzpbY119LHtiOi8oZnJ8cmZ8ZikiLyxlOi8iLyxjOltjXX0sZS5BU00sZS5RU01dfSxzPXtjTjoibnVtYmVyIixyOjAsdjpbe2I6ZS5CTlIrIltsTGpKXT8ifSx7YjoiXFxiKDBvWzAtN10rKVtsTGpKXT8ifSx7YjplLkNOUisiW2xMakpdPyJ9XX0saT17Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxjOlsic2VsZiIsYixzLGFdfTtyZXR1cm4gYy5jPVthLHMsYl0se2FsaWFzZXM6WyJweSIsImd5cCJdLGs6cixpOi8oPFwvfC0+fFw/KXw9Pi8sYzpbYixzLGEsZS5IQ00se3Y6W3tjTjoiZnVuY3Rpb24iLGJLOiJkZWYifSx7Y046ImNsYXNzIixiSzoiY2xhc3MifV0sZTovOi8saTovWyR7PTtcbixdLyxjOltlLlVUTSxpLHtiOi8tPi8sZVc6ITAsazoiTm9uZSJ9XX0se2NOOiJtZXRhIixiOi9eW1x0IF0qQC8sZTovJC99LHtiOi9cYihwcmludHxleGVjKVwoL31dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgianVsaWEiLGZ1bmN0aW9uKGUpe3ZhciByPXtrZXl3b3JkOiJpbiBpc2Egd2hlcmUgYmFyZW1vZHVsZSBiZWdpbiBicmVhayBjYXRjaCBjY2FsbCBjb25zdCBjb250aW51ZSBkbyBlbHNlIGVsc2VpZiBlbmQgZXhwb3J0IGZhbHNlIGZpbmFsbHkgZm9yIGZ1bmN0aW9uIGdsb2JhbCBpZiBpbXBvcnQgaW1wb3J0YWxsIGxldCBsb2NhbCBtYWNybyBtb2R1bGUgcXVvdGUgcmV0dXJuIHRydWUgdHJ5IHVzaW5nIHdoaWxlIHR5cGUgaW1tdXRhYmxlIGFic3RyYWN0IGJpdHN0eXBlIHR5cGVhbGlhcyAiLGxpdGVyYWw6InRydWUgZmFsc2UgQVJHUyBDX05VTEwgRGV2TnVsbCBFTkRJQU5fQk9NIEVOViBJIEluZiBJbmYxNiBJbmYzMiBJbmY2NCBJbnNlcnRpb25Tb3J0IEpVTElBX0hPTUUgTE9BRF9QQVRIIE1lcmdlU29ydCBOYU4gTmFOMTYgTmFOMzIgTmFONjQgUFJPR1JBTV9GSUxFIFF1aWNrU29ydCBSb3VuZERvd24gUm91bmRGcm9tWmVybyBSb3VuZE5lYXJlc3QgUm91bmROZWFyZXN0VGllc0F3YXkgUm91bmROZWFyZXN0VGllc1VwIFJvdW5kVG9aZXJvIFJvdW5kVXAgU1RERVJSIFNURElOIFNURE9VVCBWRVJTSU9OIGNhdGFsYW4gZXwwIGV1fDAgZXVsZXJnYW1tYSBnb2xkZW4gaW0gbm90aGluZyBwaSDOsyDPgCDPhiAiLGJ1aWx0X2luOiJBTlkgQWJzdHJhY3RBcnJheSBBYnN0cmFjdENoYW5uZWwgQWJzdHJhY3RGbG9hdCBBYnN0cmFjdE1hdHJpeCBBYnN0cmFjdFJORyBBYnN0cmFjdFNlcmlhbGl6ZXIgQWJzdHJhY3RTZXQgQWJzdHJhY3RTcGFyc2VBcnJheSBBYnN0cmFjdFNwYXJzZU1hdHJpeCBBYnN0cmFjdFNwYXJzZVZlY3RvciBBYnN0cmFjdFN0cmluZyBBYnN0cmFjdFVuaXRSYW5nZSBBYnN0cmFjdFZlY09yTWF0IEFic3RyYWN0VmVjdG9yIEFueSBBcmd1bWVudEVycm9yIEFycmF5IEFzc2VydGlvbkVycm9yIEFzc29jaWF0aXZlIEJhc2U2NERlY29kZVBpcGUgQmFzZTY0RW5jb2RlUGlwZSBCaWRpYWdvbmFsIEJpZ0Zsb2F0IEJpZ0ludCBCaXRBcnJheSBCaXRNYXRyaXggQml0VmVjdG9yIEJvb2wgQm91bmRzRXJyb3IgQnVmZmVyU3RyZWFtIENhY2hpbmdQb29sIENhcHR1cmVkRXhjZXB0aW9uIENhcnRlc2lhbkluZGV4IENhcnRlc2lhblJhbmdlIENjaGFyIENkb3VibGUgQ2Zsb2F0IENoYW5uZWwgQ2hhciBDaW50IENpbnRtYXhfdCBDbG9uZyBDbG9uZ2xvbmcgQ2x1c3Rlck1hbmFnZXIgQ21kIENvZGVJbmZvIENvbG9uIENvbXBsZXggQ29tcGxleDEyOCBDb21wbGV4MzIgQ29tcGxleDY0IENvbXBvc2l0ZUV4Y2VwdGlvbiBDb25kaXRpb24gQ29uakFycmF5IENvbmpNYXRyaXggQ29ualZlY3RvciBDcHRyZGlmZl90IENzaG9ydCBDc2l6ZV90IENzc2l6ZV90IENzdHJpbmcgQ3VjaGFyIEN1aW50IEN1aW50bWF4X3QgQ3Vsb25nIEN1bG9uZ2xvbmcgQ3VzaG9ydCBDd2NoYXJfdCBDd3N0cmluZyBEYXRhVHlwZSBEYXRlIERhdGVGb3JtYXQgRGF0ZVRpbWUgRGVuc2VBcnJheSBEZW5zZU1hdHJpeCBEZW5zZVZlY09yTWF0IERlbnNlVmVjdG9yIERpYWdvbmFsIERpY3QgRGltZW5zaW9uTWlzbWF0Y2ggRGltcyBEaXJlY3RJbmRleFN0cmluZyBEaXNwbGF5IERpdmlkZUVycm9yIERvbWFpbkVycm9yIEVPRkVycm9yIEVhY2hMaW5lIEVudW0gRW51bWVyYXRlIEVycm9yRXhjZXB0aW9uIEV4Y2VwdGlvbiBFeHBvbmVudGlhbEJhY2tPZmYgRXhwciBGYWN0b3JpemF0aW9uIEZpbGVNb25pdG9yIEZsb2F0MTYgRmxvYXQzMiBGbG9hdDY0IEZ1bmN0aW9uIEZ1dHVyZSBHbG9iYWxSZWYgR290b05vZGUgSFRNTCBIZXJtaXRpYW4gSU8gSU9CdWZmZXIgSU9Db250ZXh0IElPU3RyZWFtIElQQWRkciBJUHY0IElQdjYgSW5kZXhDYXJ0ZXNpYW4gSW5kZXhMaW5lYXIgSW5kZXhTdHlsZSBJbmV4YWN0RXJyb3IgSW5pdEVycm9yIEludCBJbnQxMjggSW50MTYgSW50MzIgSW50NjQgSW50OCBJbnRTZXQgSW50ZWdlciBJbnRlcnJ1cHRFeGNlcHRpb24gSW52YWxpZFN0YXRlRXhjZXB0aW9uIElycmF0aW9uYWwgS2V5RXJyb3IgTGFiZWxOb2RlIExpblNwYWNlIExpbmVOdW1iZXJOb2RlIExvYWRFcnJvciBMb3dlclRyaWFuZ3VsYXIgTUlNRSBNYXRyaXggTWVyc2VubmVUd2lzdGVyIE1ldGhvZCBNZXRob2RFcnJvciBNZXRob2RUYWJsZSBNb2R1bGUgTlR1cGxlIE5ld3Zhck5vZGUgTnVsbEV4Y2VwdGlvbiBOdWxsYWJsZSBOdW1iZXIgT2JqZWN0SWREaWN0IE9yZGluYWxSYW5nZSBPdXRPZk1lbW9yeUVycm9yIE92ZXJmbG93RXJyb3IgUGFpciBQYXJzZUVycm9yIFBhcnRpYWxRdWlja1NvcnQgUGVybXV0ZWREaW1zQXJyYXkgUGlwZSBQb2xsaW5nRmlsZVdhdGNoZXIgUHJvY2Vzc0V4aXRlZEV4Y2VwdGlvbiBQdHIgUXVvdGVOb2RlIFJhbmRvbURldmljZSBSYW5nZSBSYW5nZUluZGV4IFJhdGlvbmFsIFJhd0ZEIFJlYWRPbmx5TWVtb3J5RXJyb3IgUmVhbCBSZWVudHJhbnRMb2NrIFJlZiBSZWdleCBSZWdleE1hdGNoIFJlbW90ZUNoYW5uZWwgUmVtb3RlRXhjZXB0aW9uIFJldlN0cmluZyBSb3VuZGluZ01vZGUgUm93VmVjdG9yIFNTQVZhbHVlIFNlZ21lbnRhdGlvbkZhdWx0IFNlcmlhbGl6YXRpb25TdGF0ZSBTZXQgU2hhcmVkQXJyYXkgU2hhcmVkTWF0cml4IFNoYXJlZFZlY3RvciBTaWduZWQgU2ltcGxlVmVjdG9yIFNsb3QgU2xvdE51bWJlciBTcGFyc2VNYXRyaXhDU0MgU3BhcnNlVmVjdG9yIFN0YWNrRnJhbWUgU3RhY2tPdmVyZmxvd0Vycm9yIFN0YWNrVHJhY2UgU3RlcFJhbmdlIFN0ZXBSYW5nZUxlbiBTdHJpZGVkQXJyYXkgU3RyaWRlZE1hdHJpeCBTdHJpZGVkVmVjT3JNYXQgU3RyaWRlZFZlY3RvciBTdHJpbmcgU3ViQXJyYXkgU3ViU3RyaW5nIFN5bVRyaWRpYWdvbmFsIFN5bWJvbCBTeW1tZXRyaWMgU3lzdGVtRXJyb3IgVENQU29ja2V0IFRhc2sgVGV4dCBUZXh0RGlzcGxheSBUaW1lciBUcmlkaWFnb25hbCBUdXBsZSBUeXBlIFR5cGVFcnJvciBUeXBlTWFwRW50cnkgVHlwZU1hcExldmVsIFR5cGVOYW1lIFR5cGVWYXIgVHlwZWRTbG90IFVEUFNvY2tldCBVSW50IFVJbnQxMjggVUludDE2IFVJbnQzMiBVSW50NjQgVUludDggVW5kZWZSZWZFcnJvciBVbmRlZlZhckVycm9yIFVuaWNvZGVFcnJvciBVbmlmb3JtU2NhbGluZyBVbmlvbiBVbmlvbkFsbCBVbml0UmFuZ2UgVW5zaWduZWQgVXBwZXJUcmlhbmd1bGFyIFZhbCBWYXJhcmcgVmVjRWxlbWVudCBWZWNPck1hdCBWZWN0b3IgVmVyc2lvbk51bWJlciBWb2lkIFdlYWtLZXlEaWN0IFdlYWtSZWYgV29ya2VyQ29uZmlnIFdvcmtlclBvb2wgIn0sdD0iW0EtWmEtel9cXHUwMEExLVxcdUZGRkZdW0EtWmEtel8wLTlcXHUwMEExLVxcdUZGRkZdKiIsYT17bDp0LGs6cixpOi88XC8vfSxuPXtjTjoibnVtYmVyIixiOi8oXGIweFtcZF9dKihcLltcZF9dKik/fDB4XC5cZFtcZF9dKilwWy0rXT9cZCt8XGIwW2JveF1bYS1mQS1GMC05XVthLWZBLUYwLTlfXSp8KFxiXGRbXGRfXSooXC5bXGRfXSopP3xcLlxkW1xkX10qKShbZUVmRl1bLStdP1xkKyk/LyxyOjB9LG89e2NOOiJzdHJpbmciLGI6LycoLnxcXFt4WHVVXVthLXpBLVowLTldKyknL30saT17Y046InN1YnN0IixiOi9cJFwoLyxlOi9cKS8sazpyfSxsPXtjTjoidmFyaWFibGUiLGI6IlxcJCIrdH0sYz17Y046InN0cmluZyIsYzpbZS5CRSxpLGxdLHY6W3tiOi9cdyoiIiIvLGU6LyIiIlx3Ki8scjoxMH0se2I6L1x3KiIvLGU6LyJcdyovfV19LHM9e2NOOiJzdHJpbmciLGM6W2UuQkUsaSxsXSxiOiJgIixlOiJgIn0sZD17Y046Im1ldGEiLGI6IkAiK3R9LHU9e2NOOiJjb21tZW50Iix2Olt7YjoiIz0iLGU6Ij0jIixyOjEwfSx7YjoiIyIsZToiJCJ9XX07cmV0dXJuIGEuYz1bbixvLGMscyxkLHUsZS5IQ00se2NOOiJrZXl3b3JkIixiOiJcXGIoKChhYnN0cmFjdHxwcmltaXRpdmUpXFxzKyl0eXBlfChtdXRhYmxlXFxzKyk/c3RydWN0KVxcYiJ9LHtiOi88Oi99XSxpLmM9YS5jLGF9KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoImNvZmZlZXNjcmlwdCIsZnVuY3Rpb24oZSl7dmFyIGM9e2tleXdvcmQ6ImluIGlmIGZvciB3aGlsZSBmaW5hbGx5IG5ldyBkbyByZXR1cm4gZWxzZSBicmVhayBjYXRjaCBpbnN0YW5jZW9mIHRocm93IHRyeSB0aGlzIHN3aXRjaCBjb250aW51ZSB0eXBlb2YgZGVsZXRlIGRlYnVnZ2VyIHN1cGVyIHlpZWxkIGltcG9ydCBleHBvcnQgZnJvbSBhcyBkZWZhdWx0IGF3YWl0IHRoZW4gdW5sZXNzIHVudGlsIGxvb3Agb2YgYnkgd2hlbiBhbmQgb3IgaXMgaXNudCBub3QiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgeWVzIG5vIG9uIG9mZiIsYnVpbHRfaW46Im5wbSByZXF1aXJlIGNvbnNvbGUgcHJpbnQgbW9kdWxlIGdsb2JhbCB3aW5kb3cgZG9jdW1lbnQifSxuPSJbQS1aYS16JF9dWzAtOUEtWmEteiRfXSoiLHI9e2NOOiJzdWJzdCIsYjovI1x7LyxlOi99LyxrOmN9LGk9W2UuQk5NLGUuaW5oZXJpdChlLkNOTSx7c3RhcnRzOntlOiIoXFxzKi8pPyIscjowfX0pLHtjTjoic3RyaW5nIix2Olt7YjovJycnLyxlOi8nJycvLGM6W2UuQkVdfSx7YjovJy8sZTovJy8sYzpbZS5CRV19LHtiOi8iIiIvLGU6LyIiIi8sYzpbZS5CRSxyXX0se2I6LyIvLGU6LyIvLGM6W2UuQkUscl19XX0se2NOOiJyZWdleHAiLHY6W3tiOiIvLy8iLGU6Ii8vLyIsYzpbcixlLkhDTV19LHtiOiIvL1tnaW1dKiIscjowfSx7YjovXC8oPyFbICpdKShcXFwvfC4pKj9cL1tnaW1dKig/PVxXfCQpL31dfSx7YjoiQCIrbn0se3NMOiJqYXZhc2NyaXB0IixlQjohMCxlRTohMCx2Olt7YjoiYGBgIixlOiJgYGAifSx7YjoiYCIsZToiYCJ9XX1dO3IuYz1pO3ZhciBzPWUuaW5oZXJpdChlLlRNLHtiOm59KSx0PSIoXFwoLipcXCkpP1xccypcXEJbLT1dPiIsbz17Y046InBhcmFtcyIsYjoiXFwoW15cXChdIixyQjohMCxjOlt7YjovXCgvLGU6L1wpLyxrOmMsYzpbInNlbGYiXS5jb25jYXQoaSl9XX07cmV0dXJue2FsaWFzZXM6WyJjb2ZmZWUiLCJjc29uIiwiaWNlZCJdLGs6YyxpOi9cL1wqLyxjOmkuY29uY2F0KFtlLkMoIiMjIyIsIiMjIyIpLGUuSENNLHtjTjoiZnVuY3Rpb24iLGI6Il5cXHMqIituKyJcXHMqPVxccyoiK3QsZToiWy09XT4iLHJCOiEwLGM6W3Msb119LHtiOi9bOlwoLD1dXHMqLyxyOjAsYzpbe2NOOiJmdW5jdGlvbiIsYjp0LGU6IlstPV0+IixyQjohMCxjOltvXX1dfSx7Y046ImNsYXNzIixiSzoiY2xhc3MiLGU6IiQiLGk6L1s6PSJcW1xdXS8sYzpbe2JLOiJleHRlbmRzIixlVzohMCxpOi9bOj0iXFtcXV0vLGM6W3NdfSxzXX0se2I6bisiOiIsZToiOiIsckI6ITAsckU6ITAscjowfV0pfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiY3BwIixmdW5jdGlvbih0KXt2YXIgZT17Y046ImtleXdvcmQiLGI6IlxcYlthLXpcXGRfXSpfdFxcYiJ9LHI9e2NOOiJzdHJpbmciLHY6W3tiOicodTg/fFUpP0w/IicsZTonIicsaToiXFxuIixjOlt0LkJFXX0se2I6Jyh1OD98VSk/UiInLGU6JyInLGM6W3QuQkVdfSx7YjoiJ1xcXFw/LiIsZToiJyIsaToiLiJ9XX0scz17Y046Im51bWJlciIsdjpbe2I6IlxcYigwYlswMSddKykifSx7YjoiKC0/KVxcYihbXFxkJ10rKFxcLltcXGQnXSopP3xcXC5bXFxkJ10rKSh1fFV8bHxMfHVsfFVMfGZ8RnxifEIpIn0se2I6IigtPykoXFxiMFt4WF1bYS1mQS1GMC05J10rfChcXGJbXFxkJ10rKFxcLltcXGQnXSopP3xcXC5bXFxkJ10rKShbZUVdWy0rXT9bXFxkJ10rKT8pIn1dLHI6MH0saT17Y046Im1ldGEiLGI6LyNccypbYS16XStcYi8sZTovJC8sazp7Im1ldGEta2V5d29yZCI6ImlmIGVsc2UgZWxpZiBlbmRpZiBkZWZpbmUgdW5kZWYgd2FybmluZyBlcnJvciBsaW5lIHByYWdtYSBpZmRlZiBpZm5kZWYgaW5jbHVkZSJ9LGM6W3tiOi9cXFxuLyxyOjB9LHQuaW5oZXJpdChyLHtjTjoibWV0YS1zdHJpbmcifSkse2NOOiJtZXRhLXN0cmluZyIsYjovPFteXG4+XSo+LyxlOi8kLyxpOiJcXG4ifSx0LkNMQ00sdC5DQkNNXX0sYT10LklSKyJcXHMqXFwoIixjPXtrZXl3b3JkOiJpbnQgZmxvYXQgd2hpbGUgcHJpdmF0ZSBjaGFyIGNhdGNoIGltcG9ydCBtb2R1bGUgZXhwb3J0IHZpcnR1YWwgb3BlcmF0b3Igc2l6ZW9mIGR5bmFtaWNfY2FzdHwxMCB0eXBlZGVmIGNvbnN0X2Nhc3R8MTAgY29uc3QgZm9yIHN0YXRpY19jYXN0fDEwIHVuaW9uIG5hbWVzcGFjZSB1bnNpZ25lZCBsb25nIHZvbGF0aWxlIHN0YXRpYyBwcm90ZWN0ZWQgYm9vbCB0ZW1wbGF0ZSBtdXRhYmxlIGlmIHB1YmxpYyBmcmllbmQgZG8gZ290byBhdXRvIHZvaWQgZW51bSBlbHNlIGJyZWFrIGV4dGVybiB1c2luZyBhc20gY2FzZSB0eXBlaWQgc2hvcnQgcmVpbnRlcnByZXRfY2FzdHwxMCBkZWZhdWx0IGRvdWJsZSByZWdpc3RlciBleHBsaWNpdCBzaWduZWQgdHlwZW5hbWUgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIGlubGluZSBkZWxldGUgYWxpZ25vZiBjb25zdGV4cHIgZGVjbHR5cGUgbm9leGNlcHQgc3RhdGljX2Fzc2VydCB0aHJlYWRfbG9jYWwgcmVzdHJpY3QgX0Jvb2wgY29tcGxleCBfQ29tcGxleCBfSW1hZ2luYXJ5IGF0b21pY19ib29sIGF0b21pY19jaGFyIGF0b21pY19zY2hhciBhdG9taWNfdWNoYXIgYXRvbWljX3Nob3J0IGF0b21pY191c2hvcnQgYXRvbWljX2ludCBhdG9taWNfdWludCBhdG9taWNfbG9uZyBhdG9taWNfdWxvbmcgYXRvbWljX2xsb25nIGF0b21pY191bGxvbmcgbmV3IHRocm93IHJldHVybiBhbmQgb3Igbm90IixidWlsdF9pbjoic3RkIHN0cmluZyBjaW4gY291dCBjZXJyIGNsb2cgc3RkaW4gc3Rkb3V0IHN0ZGVyciBzdHJpbmdzdHJlYW0gaXN0cmluZ3N0cmVhbSBvc3RyaW5nc3RyZWFtIGF1dG9fcHRyIGRlcXVlIGxpc3QgcXVldWUgc3RhY2sgdmVjdG9yIG1hcCBzZXQgYml0c2V0IG11bHRpc2V0IG11bHRpbWFwIHVub3JkZXJlZF9zZXQgdW5vcmRlcmVkX21hcCB1bm9yZGVyZWRfbXVsdGlzZXQgdW5vcmRlcmVkX211bHRpbWFwIGFycmF5IHNoYXJlZF9wdHIgYWJvcnQgYWJzIGFjb3MgYXNpbiBhdGFuMiBhdGFuIGNhbGxvYyBjZWlsIGNvc2ggY29zIGV4aXQgZXhwIGZhYnMgZmxvb3IgZm1vZCBmcHJpbnRmIGZwdXRzIGZyZWUgZnJleHAgZnNjYW5mIGlzYWxudW0gaXNhbHBoYSBpc2NudHJsIGlzZGlnaXQgaXNncmFwaCBpc2xvd2VyIGlzcHJpbnQgaXNwdW5jdCBpc3NwYWNlIGlzdXBwZXIgaXN4ZGlnaXQgdG9sb3dlciB0b3VwcGVyIGxhYnMgbGRleHAgbG9nMTAgbG9nIG1hbGxvYyByZWFsbG9jIG1lbWNociBtZW1jbXAgbWVtY3B5IG1lbXNldCBtb2RmIHBvdyBwcmludGYgcHV0Y2hhciBwdXRzIHNjYW5mIHNpbmggc2luIHNucHJpbnRmIHNwcmludGYgc3FydCBzc2NhbmYgc3RyY2F0IHN0cmNociBzdHJjbXAgc3RyY3B5IHN0cmNzcG4gc3RybGVuIHN0cm5jYXQgc3RybmNtcCBzdHJuY3B5IHN0cnBicmsgc3RycmNociBzdHJzcG4gc3Ryc3RyIHRhbmggdGFuIHZmcHJpbnRmIHZwcmludGYgdnNwcmludGYgZW5kbCBpbml0aWFsaXplcl9saXN0IHVuaXF1ZV9wdHIiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbHB0ciBOVUxMIn0sbj1bZSx0LkNMQ00sdC5DQkNNLHMscl07cmV0dXJue2FsaWFzZXM6WyJjIiwiY2MiLCJoIiwiYysrIiwiaCsrIiwiaHBwIl0sazpjLGk6IjwvIixjOm4uY29uY2F0KFtpLHtiOiJcXGIoZGVxdWV8bGlzdHxxdWV1ZXxzdGFja3x2ZWN0b3J8bWFwfHNldHxiaXRzZXR8bXVsdGlzZXR8bXVsdGltYXB8dW5vcmRlcmVkX21hcHx1bm9yZGVyZWRfc2V0fHVub3JkZXJlZF9tdWx0aXNldHx1bm9yZGVyZWRfbXVsdGltYXB8YXJyYXkpXFxzKjwiLGU6Ij4iLGs6YyxjOlsic2VsZiIsZV19LHtiOnQuSVIrIjo6IixrOmN9LHt2Olt7YjovPS8sZTovOy99LHtiOi9cKC8sZTovXCkvfSx7Yks6Im5ldyB0aHJvdyByZXR1cm4gZWxzZSIsZTovOy99XSxrOmMsYzpuLmNvbmNhdChbe2I6L1woLyxlOi9cKS8sazpjLGM6bi5jb25jYXQoWyJzZWxmIl0pLHI6MH1dKSxyOjB9LHtjTjoiZnVuY3Rpb24iLGI6IigiK3QuSVIrIltcXComXFxzXSspKyIrYSxyQjohMCxlOi9bezs9XS8sZUU6ITAsazpjLGk6L1teXHdcc1wqJl0vLGM6W3tiOmEsckI6ITAsYzpbdC5UTV0scjowfSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxrOmMscjowLGM6W3QuQ0xDTSx0LkNCQ00scixzLGVdfSx0LkNMQ00sdC5DQkNNLGldfSx7Y046ImNsYXNzIixiSzoiY2xhc3Mgc3RydWN0IixlOi9bezs6XS8sYzpbe2I6LzwvLGU6Lz4vLGM6WyJzZWxmIl19LHQuVE1dfV0pLGV4cG9ydHM6e3ByZXByb2Nlc3NvcjppLHN0cmluZ3M6cixrOmN9fX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgicnVieSIsZnVuY3Rpb24oZSl7dmFyIGI9IlthLXpBLVpfXVxcdypbIT89XT98Wy0rfl1cXEB8PDx8Pj58PX58PT09P3w8PT58Wzw+XT0/fFxcKlxcKnxbLS8rJV4mKn5gfF18XFxbXFxdPT8iLHI9e2tleXdvcmQ6ImFuZCB0aGVuIGRlZmluZWQgbW9kdWxlIGluIHJldHVybiByZWRvIGlmIEJFR0lOIHJldHJ5IGVuZCBmb3Igc2VsZiB3aGVuIG5leHQgdW50aWwgZG8gYmVnaW4gdW5sZXNzIEVORCByZXNjdWUgZWxzZSBicmVhayB1bmRlZiBub3Qgc3VwZXIgY2xhc3MgY2FzZSByZXF1aXJlIHlpZWxkIGFsaWFzIHdoaWxlIGVuc3VyZSBlbHNpZiBvciBpbmNsdWRlIGF0dHJfcmVhZGVyIGF0dHJfd3JpdGVyIGF0dHJfYWNjZXNzb3IiLGxpdGVyYWw6InRydWUgZmFsc2UgbmlsIn0sYz17Y046ImRvY3RhZyIsYjoiQFtBLVphLXpdKyJ9LGE9e2I6IiM8IixlOiI+In0scz1bZS5DKCIjIiwiJCIse2M6W2NdfSksZS5DKCJeXFw9YmVnaW4iLCJeXFw9ZW5kIix7YzpbY10scjoxMH0pLGUuQygiXl9fRU5EX18iLCJcXG4kIildLG49e2NOOiJzdWJzdCIsYjoiI1xceyIsZToifSIsazpyfSx0PXtjTjoic3RyaW5nIixjOltlLkJFLG5dLHY6W3tiOi8nLyxlOi8nL30se2I6LyIvLGU6LyIvfSx7YjovYC8sZTovYC99LHtiOiIlW3FRd1d4XT9cXCgiLGU6IlxcKSJ9LHtiOiIlW3FRd1d4XT9cXFsiLGU6IlxcXSJ9LHtiOiIlW3FRd1d4XT97IixlOiJ9In0se2I6IiVbcVF3V3hdPzwiLGU6Ij4ifSx7YjoiJVtxUXdXeF0/LyIsZToiLyJ9LHtiOiIlW3FRd1d4XT8lIixlOiIlIn0se2I6IiVbcVF3V3hdPy0iLGU6Ii0ifSx7YjoiJVtxUXdXeF0/XFx8IixlOiJcXHwifSx7YjovXEJcPyhcXFxkezEsM318XFx4W0EtRmEtZjAtOV17MSwyfXxcXHVbQS1GYS1mMC05XXs0fXxcXD9cUylcYi99LHtiOi88PCgtPylcdyskLyxlOi9eXHMqXHcrJC99XX0saT17Y046InBhcmFtcyIsYjoiXFwoIixlOiJcXCkiLGVuZHNQYXJlbnQ6ITAsazpyfSxkPVt0LGEse2NOOiJjbGFzcyIsYks6ImNsYXNzIG1vZHVsZSIsZToiJHw7IixpOi89LyxjOltlLmluaGVyaXQoZS5UTSx7YjoiW0EtWmEtel9dXFx3Kig6OlxcdyspKihcXD98XFwhKT8ifSkse2I6IjxcXHMqIixjOlt7YjoiKCIrZS5JUisiOjopPyIrZS5JUn1dfV0uY29uY2F0KHMpfSx7Y046ImZ1bmN0aW9uIixiSzoiZGVmIixlOiIkfDsiLGM6W2UuaW5oZXJpdChlLlRNLHtiOmJ9KSxpXS5jb25jYXQocyl9LHtiOmUuSVIrIjo6In0se2NOOiJzeW1ib2wiLGI6ZS5VSVIrIihcXCF8XFw/KT86IixyOjB9LHtjTjoic3ltYm9sIixiOiI6KD8hXFxzKSIsYzpbdCx7YjpifV0scjowfSx7Y046Im51bWJlciIsYjoiKFxcYjBbMC03X10rKXwoXFxiMHhbMC05YS1mQS1GX10rKXwoXFxiWzEtOV1bMC05X10qKFxcLlswLTlfXSspPyl8WzBfXVxcYiIscjowfSx7YjoiKFxcJFxcVyl8KChcXCR8XFxAXFxAPykoXFx3KykpIn0se2NOOiJwYXJhbXMiLGI6L1x8LyxlOi9cfC8sazpyfSx7YjoiKCIrZS5SU1IrInx1bmxlc3MpXFxzKiIsazoidW5sZXNzIixjOlthLHtjTjoicmVnZXhwIixjOltlLkJFLG5dLGk6L1xuLyx2Olt7YjoiLyIsZToiL1thLXpdKiJ9LHtiOiIlcnsiLGU6In1bYS16XSoifSx7YjoiJXJcXCgiLGU6IlxcKVthLXpdKiJ9LHtiOiIlciEiLGU6IiFbYS16XSoifSx7YjoiJXJcXFsiLGU6IlxcXVthLXpdKiJ9XX1dLmNvbmNhdChzKSxyOjB9XS5jb25jYXQocyk7bi5jPWQsaS5jPWQ7dmFyIGw9Ils+P10+IixvPSJbXFx3I10rXFwoXFx3K1xcKTpcXGQrOlxcZCs+Iix1PSIoXFx3Ky0pP1xcZCtcXC5cXGQrXFwuXFxkKHBcXGQrKT9bXj5dKz4iLHc9W3tiOi9eXHMqPT4vLHN0YXJ0czp7ZToiJCIsYzpkfX0se2NOOiJtZXRhIixiOiJeKCIrbCsifCIrbysifCIrdSsiKSIsc3RhcnRzOntlOiIkIixjOmR9fV07cmV0dXJue2FsaWFzZXM6WyJyYiIsImdlbXNwZWMiLCJwb2RzcGVjIiwidGhvciIsImlyYiJdLGs6cixpOi9cL1wqLyxjOnMuY29uY2F0KHcpLmNvbmNhdChkKX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInlhbWwiLGZ1bmN0aW9uKGUpe3ZhciBiPSJ0cnVlIGZhbHNlIHllcyBubyBudWxsIixhPSJeWyBcXC1dKiIscj0iW2EtekEtWl9dW1xcd1xcLV0qIix0PXtjTjoiYXR0ciIsdjpbe2I6YStyKyI6In0se2I6YSsnIicrcisnIjonfSx7YjphKyInIityKyInOiJ9XX0sYz17Y046InRlbXBsYXRlLXZhcmlhYmxlIix2Olt7Yjoie3siLGU6In19In0se2I6IiV7IixlOiJ9In1dfSxsPXtjTjoic3RyaW5nIixyOjAsdjpbe2I6LycvLGU6LycvfSx7YjovIi8sZTovIi99LHtiOi9cUysvfV0sYzpbZS5CRSxjXX07cmV0dXJue2NJOiEwLGFsaWFzZXM6WyJ5bWwiLCJZQU1MIiwieWFtbCJdLGM6W3Qse2NOOiJtZXRhIixiOiJeLS0tcyokIixyOjEwfSx7Y046InN0cmluZyIsYjoiW1xcfD5dICokIixyRTohMCxjOmwuYyxlOnQudlswXS5ifSx7YjoiPCVbJT0tXT8iLGU6IlslLV0/JT4iLHNMOiJydWJ5IixlQjohMCxlRTohMCxyOjB9LHtjTjoidHlwZSIsYjoiISEiK2UuVUlSfSx7Y046Im1ldGEiLGI6IiYiK2UuVUlSKyIkIn0se2NOOiJtZXRhIixiOiJcXCoiK2UuVUlSKyIkIn0se2NOOiJidWxsZXQiLGI6Il4gKi0iLHI6MH0sZS5IQ00se2JLOmIsazp7bGl0ZXJhbDpifX0sZS5DTk0sbF19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJjc3MiLGZ1bmN0aW9uKGUpe3ZhciBjPSJbYS16QS1aLV1bYS16QS1aMC05Xy1dKiIsdD17YjovW0EtWlxfXC5cLV0rXHMqOi8sckI6ITAsZToiOyIsZVc6ITAsYzpbe2NOOiJhdHRyaWJ1dGUiLGI6L1xTLyxlOiI6IixlRTohMCxzdGFydHM6e2VXOiEwLGVFOiEwLGM6W3tiOi9bXHctXStcKC8sckI6ITAsYzpbe2NOOiJidWlsdF9pbiIsYjovW1x3LV0rL30se2I6L1woLyxlOi9cKS8sYzpbZS5BU00sZS5RU01dfV19LGUuQ1NTTk0sZS5RU00sZS5BU00sZS5DQkNNLHtjTjoibnVtYmVyIixiOiIjWzAtOUEtRmEtZl0rIn0se2NOOiJtZXRhIixiOiIhaW1wb3J0YW50In1dfX1dfTtyZXR1cm57Y0k6ITAsaTovWz1cL3wnXCRdLyxjOltlLkNCQ00se2NOOiJzZWxlY3Rvci1pZCIsYjovI1tBLVphLXowLTlfLV0rL30se2NOOiJzZWxlY3Rvci1jbGFzcyIsYjovXC5bQS1aYS16MC05Xy1dKy99LHtjTjoic2VsZWN0b3ItYXR0ciIsYjovXFsvLGU6L1xdLyxpOiIkIn0se2NOOiJzZWxlY3Rvci1wc2V1ZG8iLGI6LzooOik/W2EtekEtWjAtOVxfXC1cK1woXCkiJy5dKy99LHtiOiJAKGZvbnQtZmFjZXxwYWdlKSIsbDoiW2Etei1dKyIsazoiZm9udC1mYWNlIHBhZ2UifSx7YjoiQCIsZToiW3s7XSIsaTovOi8sYzpbe2NOOiJrZXl3b3JkIixiOi9cdysvfSx7YjovXHMvLGVXOiEwLGVFOiEwLHI6MCxjOltlLkFTTSxlLlFTTSxlLkNTU05NXX1dfSx7Y046InNlbGVjdG9yLXRhZyIsYjpjLHI6MH0se2I6InsiLGU6In0iLGk6L1xTLyxjOltlLkNCQ00sdF19XX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoImZvcnRyYW4iLGZ1bmN0aW9uKGUpe3ZhciB0PXtjTjoicGFyYW1zIixiOiJcXCgiLGU6IlxcKSJ9LG49e2xpdGVyYWw6Ii5GYWxzZS4gLlRydWUuIixrZXl3b3JkOiJraW5kIGRvIHdoaWxlIHByaXZhdGUgY2FsbCBpbnRyaW5zaWMgd2hlcmUgZWxzZXdoZXJlIHR5cGUgZW5kdHlwZSBlbmRtb2R1bGUgZW5kc2VsZWN0IGVuZGludGVyZmFjZSBlbmQgZW5kZG8gZW5kaWYgaWYgZm9yYWxsIGVuZGZvcmFsbCBvbmx5IGNvbnRhaW5zIGRlZmF1bHQgcmV0dXJuIHN0b3AgdGhlbiBwdWJsaWMgc3Vicm91dGluZXwxMCBmdW5jdGlvbiBwcm9ncmFtIC5hbmQuIC5vci4gLm5vdC4gLmxlLiAuZXEuIC5nZS4gLmd0LiAubHQuIGdvdG8gc2F2ZSBlbHNlIHVzZSBtb2R1bGUgc2VsZWN0IGNhc2UgYWNjZXNzIGJsYW5rIGRpcmVjdCBleGlzdCBmaWxlIGZtdCBmb3JtIGZvcm1hdHRlZCBpb3N0YXQgbmFtZSBuYW1lZCBuZXh0cmVjIG51bWJlciBvcGVuZWQgcmVjIHJlY2wgc2VxdWVudGlhbCBzdGF0dXMgdW5mb3JtYXR0ZWQgdW5pdCBjb250aW51ZSBmb3JtYXQgcGF1c2UgY3ljbGUgZXhpdCBjX251bGxfY2hhciBjX2FsZXJ0IGNfYmFja3NwYWNlIGNfZm9ybV9mZWVkIGZsdXNoIHdhaXQgZGVjaW1hbCByb3VuZCBpb21zZyBzeW5jaHJvbm91cyBub3Bhc3Mgbm9uX292ZXJyaWRhYmxlIHBhc3MgcHJvdGVjdGVkIHZvbGF0aWxlIGFic3RyYWN0IGV4dGVuZHMgaW1wb3J0IG5vbl9pbnRyaW5zaWMgdmFsdWUgZGVmZXJyZWQgZ2VuZXJpYyBmaW5hbCBlbnVtZXJhdG9yIGNsYXNzIGFzc29jaWF0ZSBiaW5kIGVudW0gY19pbnQgY19zaG9ydCBjX2xvbmcgY19sb25nX2xvbmcgY19zaWduZWRfY2hhciBjX3NpemVfdCBjX2ludDhfdCBjX2ludDE2X3QgY19pbnQzMl90IGNfaW50NjRfdCBjX2ludF9sZWFzdDhfdCBjX2ludF9sZWFzdDE2X3QgY19pbnRfbGVhc3QzMl90IGNfaW50X2xlYXN0NjRfdCBjX2ludF9mYXN0OF90IGNfaW50X2Zhc3QxNl90IGNfaW50X2Zhc3QzMl90IGNfaW50X2Zhc3Q2NF90IGNfaW50bWF4X3QgQ19pbnRwdHJfdCBjX2Zsb2F0IGNfZG91YmxlIGNfbG9uZ19kb3VibGUgY19mbG9hdF9jb21wbGV4IGNfZG91YmxlX2NvbXBsZXggY19sb25nX2RvdWJsZV9jb21wbGV4IGNfYm9vbCBjX2NoYXIgY19udWxsX3B0ciBjX251bGxfZnVucHRyIGNfbmV3X2xpbmUgY19jYXJyaWFnZV9yZXR1cm4gY19ob3Jpem9udGFsX3RhYiBjX3ZlcnRpY2FsX3RhYiBpc29fY19iaW5kaW5nIGNfbG9jIGNfZnVubG9jIGNfYXNzb2NpYXRlZCAgY19mX3BvaW50ZXIgY19wdHIgY19mdW5wdHIgaXNvX2ZvcnRyYW5fZW52IGNoYXJhY3Rlcl9zdG9yYWdlX3NpemUgZXJyb3JfdW5pdCBmaWxlX3N0b3JhZ2Vfc2l6ZSBpbnB1dF91bml0IGlvc3RhdF9lbmQgaW9zdGF0X2VvciBudW1lcmljX3N0b3JhZ2Vfc2l6ZSBvdXRwdXRfdW5pdCBjX2ZfcHJvY3BvaW50ZXIgaWVlZV9hcml0aG1ldGljIGllZWVfc3VwcG9ydF91bmRlcmZsb3dfY29udHJvbCBpZWVlX2dldF91bmRlcmZsb3dfbW9kZSBpZWVlX3NldF91bmRlcmZsb3dfbW9kZSBuZXd1bml0IGNvbnRpZ3VvdXMgcmVjdXJzaXZlIHBhZCBwb3NpdGlvbiBhY3Rpb24gZGVsaW0gcmVhZHdyaXRlIGVvciBhZHZhbmNlIG5tbCBpbnRlcmZhY2UgcHJvY2VkdXJlIG5hbWVsaXN0IGluY2x1ZGUgc2VxdWVuY2UgZWxlbWVudGFsIHB1cmUgaW50ZWdlciByZWFsIGNoYXJhY3RlciBjb21wbGV4IGxvZ2ljYWwgZGltZW5zaW9uIGFsbG9jYXRhYmxlfDEwIHBhcmFtZXRlciBleHRlcm5hbCBpbXBsaWNpdHwxMCBub25lIGRvdWJsZSBwcmVjaXNpb24gYXNzaWduIGludGVudCBvcHRpb25hbCBwb2ludGVyIHRhcmdldCBpbiBvdXQgY29tbW9uIGVxdWl2YWxlbmNlIGRhdGEiLGJ1aWx0X2luOiJhbG9nIGFsb2cxMCBhbWF4MCBhbWF4MSBhbWluMCBhbWluMSBhbW9kIGNhYnMgY2NvcyBjZXhwIGNsb2cgY3NpbiBjc3FydCBkYWJzIGRhY29zIGRhc2luIGRhdGFuIGRhdGFuMiBkY29zIGRjb3NoIGRkaW0gZGV4cCBkaW50IGRsb2cgZGxvZzEwIGRtYXgxIGRtaW4xIGRtb2QgZG5pbnQgZHNpZ24gZHNpbiBkc2luaCBkc3FydCBkdGFuIGR0YW5oIGZsb2F0IGlhYnMgaWRpbSBpZGludCBpZG5pbnQgaWZpeCBpc2lnbiBtYXgwIG1heDEgbWluMCBtaW4xIHNuZ2wgYWxnYW1hIGNkYWJzIGNkY29zIGNkZXhwIGNkbG9nIGNkc2luIGNkc3FydCBjcWFicyBjcWNvcyBjcWV4cCBjcWxvZyBjcXNpbiBjcXNxcnQgZGNtcGx4IGRjb25qZyBkZXJmIGRlcmZjIGRmbG9hdCBkZ2FtbWEgZGltYWcgZGxnYW1hIGlxaW50IHFhYnMgcWFjb3MgcWFzaW4gcWF0YW4gcWF0YW4yIHFjbXBseCBxY29uamcgcWNvcyBxY29zaCBxZGltIHFlcmYgcWVyZmMgcWV4cCBxZ2FtbWEgcWltYWcgcWxnYW1hIHFsb2cgcWxvZzEwIHFtYXgxIHFtaW4xIHFtb2QgcW5pbnQgcXNpZ24gcXNpbiBxc2luaCBxc3FydCBxdGFuIHF0YW5oIGFicyBhY29zIGFpbWFnIGFpbnQgYW5pbnQgYXNpbiBhdGFuIGF0YW4yIGNoYXIgY21wbHggY29uamcgY29zIGNvc2ggZXhwIGljaGFyIGluZGV4IGludCBsb2cgbG9nMTAgbWF4IG1pbiBuaW50IHNpZ24gc2luIHNpbmggc3FydCB0YW4gdGFuaCBwcmludCB3cml0ZSBkaW0gbGdlIGxndCBsbGUgbGx0IG1vZCBudWxsaWZ5IGFsbG9jYXRlIGRlYWxsb2NhdGUgYWRqdXN0bCBhZGp1c3RyIGFsbCBhbGxvY2F0ZWQgYW55IGFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZyBjb3VudCBjc2hpZnQgZGF0ZV9hbmRfdGltZSBkaWdpdHMgZG90X3Byb2R1Y3QgZW9zaGlmdCBlcHNpbG9uIGV4cG9uZW50IGZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yIGlvciBpc2hmdCBpc2hmdGMgbGJvdW5kIGxlbl90cmltIG1hdG11bCBtYXhleHBvbmVudCBtYXhsb2MgbWF4dmFsIG1lcmdlIG1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0IHBhY2sgcHJlc2VudCBwcm9kdWN0IHJhZGl4IHJhbmRvbV9udW1iZXIgcmFuZG9tX3NlZWQgcmFuZ2UgcmVwZWF0IHJlc2hhcGUgcnJzcGFjaW5nIHNjYWxlIHNjYW4gc2VsZWN0ZWRfaW50X2tpbmQgc2VsZWN0ZWRfcmVhbF9raW5kIHNldF9leHBvbmVudCBzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHN1bSBzeXN0ZW1fY2xvY2sgdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeSBhY2hhciBpYWNoYXIgdHJhbnNmZXIgZGJsZSBlbnRyeSBkcHJvZCBjcHVfdGltZSBjb21tYW5kX2FyZ3VtZW50X2NvdW50IGdldF9jb21tYW5kIGdldF9jb21tYW5kX2FyZ3VtZW50IGdldF9lbnZpcm9ubWVudF92YXJpYWJsZSBpc19pb3N0YXRfZW5kIGllZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgaXNfaW9zdGF0X2VvciBtb3ZlX2FsbG9jIG5ld19saW5lIHNlbGVjdGVkX2NoYXJfa2luZCBzYW1lX3R5cGVfYXMgZXh0ZW5kc190eXBlX29mYWNvc2ggYXNpbmggYXRhbmggYmVzc2VsX2owIGJlc3NlbF9qMSBiZXNzZWxfam4gYmVzc2VsX3kwIGJlc3NlbF95MSBiZXNzZWxfeW4gZXJmIGVyZmMgZXJmY19zY2FsZWQgZ2FtbWEgbG9nX2dhbW1hIGh5cG90IG5vcm0yIGF0b21pY19kZWZpbmUgYXRvbWljX3JlZiBleGVjdXRlX2NvbW1hbmRfbGluZSBsZWFkeiB0cmFpbHogc3RvcmFnZV9zaXplIG1lcmdlX2JpdHMgYmdlIGJndCBibGUgYmx0IGRzaGlmdGwgZHNoaWZ0ciBmaW5kbG9jIGlhbGwgaWFueSBpcGFyaXR5IGltYWdlX2luZGV4IGxjb2JvdW5kIHVjb2JvdW5kIG1hc2tsIG1hc2tyIG51bV9pbWFnZXMgcGFyaXR5IHBvcGNudCBwb3BwYXIgc2hpZnRhIHNoaWZ0bCBzaGlmdHIgdGhpc19pbWFnZSJ9O3JldHVybntjSTohMCxhbGlhc2VzOlsiZjkwIiwiZjk1Il0sazpuLGk6L1wvXCovLGM6W2UuaW5oZXJpdChlLkFTTSx7Y046InN0cmluZyIscjowfSksZS5pbmhlcml0KGUuUVNNLHtjTjoic3RyaW5nIixyOjB9KSx7Y046ImZ1bmN0aW9uIixiSzoic3Vicm91dGluZSBmdW5jdGlvbiBwcm9ncmFtIixpOiJbJHs9XFxuXSIsYzpbZS5VVE0sdF19LGUuQygiISIsIiQiLHtyOjB9KSx7Y046Im51bWJlciIsYjoiKD89XFxifFxcK3xcXC18XFwuKSg/PVxcLlxcZHxcXGQpKD86XFxkKyk/KD86XFwuP1xcZCopKD86W2RlXVsrLV0/XFxkKyk/XFxiXFwuPyIscjowfV19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJhd2siLGZ1bmN0aW9uKGUpe3ZhciByPXtjTjoidmFyaWFibGUiLHY6W3tiOi9cJFtcd1xkI0BdW1x3XGRfXSovfSx7YjovXCRceyguKj8pfS99XX0sYj0iQkVHSU4gRU5EIGlmIGVsc2Ugd2hpbGUgZG8gZm9yIGluIGJyZWFrIGNvbnRpbnVlIGRlbGV0ZSBuZXh0IG5leHRmaWxlIGZ1bmN0aW9uIGZ1bmMgZXhpdHwxMCIsbj17Y046InN0cmluZyIsYzpbZS5CRV0sdjpbe2I6Lyh1fGIpP3I/JycnLyxlOi8nJycvLHI6MTB9LHtiOi8odXxiKT9yPyIiIi8sZTovIiIiLyxyOjEwfSx7YjovKHV8cnx1ciknLyxlOi8nLyxyOjEwfSx7YjovKHV8cnx1cikiLyxlOi8iLyxyOjEwfSx7YjovKGJ8YnIpJy8sZTovJy99LHtiOi8oYnxicikiLyxlOi8iL30sZS5BU00sZS5RU01dfTtyZXR1cm57azp7a2V5d29yZDpifSxjOltyLG4sZS5STSxlLkhDTSxlLk5NXX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoIm1ha2VmaWxlIixmdW5jdGlvbihlKXt2YXIgaT17Y046InZhcmlhYmxlIix2Olt7YjoiXFwkXFwoIitlLlVJUisiXFwpIixjOltlLkJFXX0se2I6L1wkW0AlPD9cXlwrXCpdL31dfSxyPXtjTjoic3RyaW5nIixiOi8iLyxlOi8iLyxjOltlLkJFLGldfSxhPXtjTjoidmFyaWFibGUiLGI6L1wkXChbXHctXStccy8sZTovXCkvLGs6e2J1aWx0X2luOiJzdWJzdCBwYXRzdWJzdCBzdHJpcCBmaW5kc3RyaW5nIGZpbHRlciBmaWx0ZXItb3V0IHNvcnQgd29yZCB3b3JkbGlzdCBmaXJzdHdvcmQgbGFzdHdvcmQgZGlyIG5vdGRpciBzdWZmaXggYmFzZW5hbWUgYWRkc3VmZml4IGFkZHByZWZpeCBqb2luIHdpbGRjYXJkIHJlYWxwYXRoIGFic3BhdGggZXJyb3Igd2FybmluZyBzaGVsbCBvcmlnaW4gZmxhdm9yIGZvcmVhY2ggaWYgb3IgYW5kIGNhbGwgZXZhbCBmaWxlIHZhbHVlIn0sYzpbaV19LG49e2I6Il4iK2UuVUlSKyJcXHMqWzorP10/PSIsaToiXFxuIixyQjohMCxjOlt7YjoiXiIrZS5VSVIsZToiWzorP10/PSIsZUU6ITB9XX0sdD17Y046Im1ldGEiLGI6L15cLlBIT05ZOi8sZTovJC8sazp7Im1ldGEta2V5d29yZCI6Ii5QSE9OWSJ9LGw6L1tcLlx3XSsvfSxsPXtjTjoic2VjdGlvbiIsYjovXlteXHNdKzovLGU6LyQvLGM6W2ldfTtyZXR1cm57YWxpYXNlczpbIm1rIiwibWFrIl0sazoiZGVmaW5lIGVuZGVmIHVuZGVmaW5lIGlmZGVmIGlmbmRlZiBpZmVxIGlmbmVxIGVsc2UgZW5kaWYgaW5jbHVkZSAtaW5jbHVkZSBzaW5jbHVkZSBvdmVycmlkZSBleHBvcnQgdW5leHBvcnQgcHJpdmF0ZSB2cGF0aCIsbDovW1x3LV0rLyxjOltlLkhDTSxpLHIsYSxuLHQsbF19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJqYXZhIixmdW5jdGlvbihlKXt2YXIgYT0iW8OALcq4YS16QS1aXyRdW8OALcq4YS16QS1aXyQwLTldKiIsdD1hKyIoPCIrYSsiKFxccyosXFxzKiIrYSsiKSo+KT8iLHI9ImZhbHNlIHN5bmNocm9uaXplZCBpbnQgYWJzdHJhY3QgZmxvYXQgcHJpdmF0ZSBjaGFyIGJvb2xlYW4gc3RhdGljIG51bGwgaWYgY29uc3QgZm9yIHRydWUgd2hpbGUgbG9uZyBzdHJpY3RmcCBmaW5hbGx5IHByb3RlY3RlZCBpbXBvcnQgbmF0aXZlIGZpbmFsIHZvaWQgZW51bSBlbHNlIGJyZWFrIHRyYW5zaWVudCBjYXRjaCBpbnN0YW5jZW9mIGJ5dGUgc3VwZXIgdm9sYXRpbGUgY2FzZSBhc3NlcnQgc2hvcnQgcGFja2FnZSBkZWZhdWx0IGRvdWJsZSBwdWJsaWMgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHRocm93cyBwcm90ZWN0ZWQgcHVibGljIHByaXZhdGUgbW9kdWxlIHJlcXVpcmVzIGV4cG9ydHMgZG8iLHM9IlxcYigwW2JCXShbMDFdK1swMV9dK1swMV0rfFswMV0rKXwwW3hYXShbYS1mQS1GMC05XStbYS1mQS1GMC05X10rW2EtZkEtRjAtOV0rfFthLWZBLUYwLTldKyl8KChbXFxkXStbXFxkX10rW1xcZF0rfFtcXGRdKykoXFwuKFtcXGRdK1tcXGRfXStbXFxkXSt8W1xcZF0rKSk/fFxcLihbXFxkXStbXFxkX10rW1xcZF0rfFtcXGRdKykpKFtlRV1bLStdP1xcZCspPylbbExmRl0/IixjPXtjTjoibnVtYmVyIixiOnMscjowfTtyZXR1cm57YWxpYXNlczpbImpzcCJdLGs6cixpOi88XC98Iy8sYzpbZS5DKCIvXFwqXFwqIiwiXFwqLyIse3I6MCxjOlt7YjovXHcrQC8scjowfSx7Y046ImRvY3RhZyIsYjoiQFtBLVphLXpdKyJ9XX0pLGUuQ0xDTSxlLkNCQ00sZS5BU00sZS5RU00se2NOOiJjbGFzcyIsYks6ImNsYXNzIGludGVyZmFjZSIsZTovW3s7PV0vLGVFOiEwLGs6ImNsYXNzIGludGVyZmFjZSIsaTovWzoiXFtcXV0vLGM6W3tiSzoiZXh0ZW5kcyBpbXBsZW1lbnRzIn0sZS5VVE1dfSx7Yks6Im5ldyB0aHJvdyByZXR1cm4gZWxzZSIscjowfSx7Y046ImZ1bmN0aW9uIixiOiIoIit0KyJcXHMrKSsiK2UuVUlSKyJcXHMqXFwoIixyQjohMCxlOi9bezs9XS8sZUU6ITAsazpyLGM6W3tiOmUuVUlSKyJcXHMqXFwoIixyQjohMCxyOjAsYzpbZS5VVE1dfSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxrOnIscjowLGM6W2UuQVNNLGUuUVNNLGUuQ05NLGUuQ0JDTV19LGUuQ0xDTSxlLkNCQ01dfSxjLHtjTjoibWV0YSIsYjoiQFtBLVphLXpdKyJ9XX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInN0YW4iLGZ1bmN0aW9uKGUpe3JldHVybntjOltlLkhDTSxlLkNMQ00sZS5DQkNNLHtiOmUuVUlSLGw6ZS5VSVIsazp7bmFtZToiZm9yIGluIHdoaWxlIHJlcGVhdCB1bnRpbCBpZiB0aGVuIGVsc2UiLHN5bWJvbDoiYmVybm91bGxpIGJlcm5vdWxsaV9sb2dpdCBiaW5vbWlhbCBiaW5vbWlhbF9sb2dpdCBiZXRhX2Jpbm9taWFsIGh5cGVyZ2VvbWV0cmljIGNhdGVnb3JpY2FsIGNhdGVnb3JpY2FsX2xvZ2l0IG9yZGVyZWRfbG9naXN0aWMgbmVnX2Jpbm9taWFsIG5lZ19iaW5vbWlhbF8yIG5lZ19iaW5vbWlhbF8yX2xvZyBwb2lzc29uIHBvaXNzb25fbG9nIG11bHRpbm9taWFsIG5vcm1hbCBleHBfbW9kX25vcm1hbCBza2V3X25vcm1hbCBzdHVkZW50X3QgY2F1Y2h5IGRvdWJsZV9leHBvbmVudGlhbCBsb2dpc3RpYyBndW1iZWwgbG9nbm9ybWFsIGNoaV9zcXVhcmUgaW52X2NoaV9zcXVhcmUgc2NhbGVkX2ludl9jaGlfc3F1YXJlIGV4cG9uZW50aWFsIGludl9nYW1tYSB3ZWlidWxsIGZyZWNoZXQgcmF5bGVpZ2ggd2llbmVyIHBhcmV0byBwYXJldG9fdHlwZV8yIHZvbl9taXNlcyB1bmlmb3JtIG11bHRpX25vcm1hbCBtdWx0aV9ub3JtYWxfcHJlYyBtdWx0aV9ub3JtYWxfY2hvbGVza3kgbXVsdGlfZ3AgbXVsdGlfZ3BfY2hvbGVza3kgbXVsdGlfc3R1ZGVudF90IGdhdXNzaWFuX2RsbV9vYnMgZGlyaWNobGV0IGxral9jb3JyIGxral9jb3JyX2Nob2xlc2t5IHdpc2hhcnQgaW52X3dpc2hhcnQiLCJzZWxlY3Rvci10YWciOiJpbnQgcmVhbCB2ZWN0b3Igc2ltcGxleCB1bml0X3ZlY3RvciBvcmRlcmVkIHBvc2l0aXZlX29yZGVyZWQgcm93X3ZlY3RvciBtYXRyaXggY2hvbGVza3lfZmFjdG9yX2NvcnIgY2hvbGVza3lfZmFjdG9yX2NvdiBjb3JyX21hdHJpeCBjb3ZfbWF0cml4Iix0aXRsZToiZnVuY3Rpb25zIG1vZGVsIGRhdGEgcGFyYW1ldGVycyBxdWFudGl0aWVzIHRyYW5zZm9ybWVkIGdlbmVyYXRlZCIsbGl0ZXJhbDoidHJ1ZSBmYWxzZSJ9LHI6MH0se2NOOiJudW1iZXIiLGI6IjBbeFhdWzAtOWEtZkEtRl0rW0xpXT9cXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IjBbeFhdWzAtOWEtZkEtRl0rW0xpXT9cXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcZCsoPzpbZUVdWytcXC1dP1xcZCopP0xcXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcZCtcXC4oPyFcXGQpKD86aVxcYik/IixyOjB9LHtjTjoibnVtYmVyIixiOiJcXGQrKD86XFwuXFxkKik/KD86W2VFXVsrXFwtXT9cXGQqKT9pP1xcYiIscjowfSx7Y046Im51bWJlciIsYjoiXFwuXFxkKyg/OltlRV1bK1xcLV0/XFxkKik/aT9cXGIiLHI6MH1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiamF2YXNjcmlwdCIsZnVuY3Rpb24oZSl7dmFyIHI9IltBLVphLXokX11bMC05QS1aYS16JF9dKiIsdD17a2V5d29yZDoiaW4gb2YgaWYgZm9yIHdoaWxlIGZpbmFsbHkgdmFyIG5ldyBmdW5jdGlvbiBkbyByZXR1cm4gdm9pZCBlbHNlIGJyZWFrIGNhdGNoIGluc3RhbmNlb2Ygd2l0aCB0aHJvdyBjYXNlIGRlZmF1bHQgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHR5cGVvZiBkZWxldGUgbGV0IHlpZWxkIGNvbnN0IGV4cG9ydCBzdXBlciBkZWJ1Z2dlciBhcyBhc3luYyBhd2FpdCBzdGF0aWMgaW1wb3J0IGZyb20gYXMiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgTmFOIEluZmluaXR5IixidWlsdF9pbjoiZXZhbCBpc0Zpbml0ZSBpc05hTiBwYXJzZUZsb2F0IHBhcnNlSW50IGRlY29kZVVSSSBkZWNvZGVVUklDb21wb25lbnQgZW5jb2RlVVJJIGVuY29kZVVSSUNvbXBvbmVudCBlc2NhcGUgdW5lc2NhcGUgT2JqZWN0IEZ1bmN0aW9uIEJvb2xlYW4gRXJyb3IgRXZhbEVycm9yIEludGVybmFsRXJyb3IgUmFuZ2VFcnJvciBSZWZlcmVuY2VFcnJvciBTdG9wSXRlcmF0aW9uIFN5bnRheEVycm9yIFR5cGVFcnJvciBVUklFcnJvciBOdW1iZXIgTWF0aCBEYXRlIFN0cmluZyBSZWdFeHAgQXJyYXkgRmxvYXQzMkFycmF5IEZsb2F0NjRBcnJheSBJbnQxNkFycmF5IEludDMyQXJyYXkgSW50OEFycmF5IFVpbnQxNkFycmF5IFVpbnQzMkFycmF5IFVpbnQ4QXJyYXkgVWludDhDbGFtcGVkQXJyYXkgQXJyYXlCdWZmZXIgRGF0YVZpZXcgSlNPTiBJbnRsIGFyZ3VtZW50cyByZXF1aXJlIG1vZHVsZSBjb25zb2xlIHdpbmRvdyBkb2N1bWVudCBTeW1ib2wgU2V0IE1hcCBXZWFrU2V0IFdlYWtNYXAgUHJveHkgUmVmbGVjdCBQcm9taXNlIn0sYT17Y046Im51bWJlciIsdjpbe2I6IlxcYigwW2JCXVswMV0rKSJ9LHtiOiJcXGIoMFtvT11bMC03XSspIn0se2I6ZS5DTlJ9XSxyOjB9LG49e2NOOiJzdWJzdCIsYjoiXFwkXFx7IixlOiJcXH0iLGs6dCxjOltdfSxjPXtjTjoic3RyaW5nIixiOiJgIixlOiJgIixjOltlLkJFLG5dfTtuLmM9W2UuQVNNLGUuUVNNLGMsYSxlLlJNXTt2YXIgcz1uLmMuY29uY2F0KFtlLkNCQ00sZS5DTENNXSk7cmV0dXJue2FsaWFzZXM6WyJqcyIsImpzeCJdLGs6dCxjOlt7Y046Im1ldGEiLHI6MTAsYjovXlxzKlsnIl11c2UgKHN0cmljdHxhc20pWyciXS99LHtjTjoibWV0YSIsYjovXiMhLyxlOi8kL30sZS5BU00sZS5RU00sYyxlLkNMQ00sZS5DQkNNLGEse2I6L1t7LF1ccyovLHI6MCxjOlt7YjpyKyJcXHMqOiIsckI6ITAscjowLGM6W3tjTjoiYXR0ciIsYjpyLHI6MH1dfV19LHtiOiIoIitlLlJTUisifFxcYihjYXNlfHJldHVybnx0aHJvdylcXGIpXFxzKiIsazoicmV0dXJuIHRocm93IGNhc2UiLGM6W2UuQ0xDTSxlLkNCQ00sZS5STSx7Y046ImZ1bmN0aW9uIixiOiIoXFwoLio/XFwpfCIrcisiKVxccyo9PiIsckI6ITAsZToiXFxzKj0+IixjOlt7Y046InBhcmFtcyIsdjpbe2I6cn0se2I6L1woXHMqXCkvfSx7YjovXCgvLGU6L1wpLyxlQjohMCxlRTohMCxrOnQsYzpzfV19XX0se2I6LzwvLGU6LyhcL1x3K3xcdytcLyk+LyxzTDoieG1sIixjOlt7YjovPFx3K1xzKlwvPi8sc2tpcDohMH0se2I6LzxcdysvLGU6LyhcL1x3K3xcdytcLyk+Lyxza2lwOiEwLGM6W3tiOi88XHcrXHMqXC8+Lyxza2lwOiEwfSwic2VsZiJdfV19XSxyOjB9LHtjTjoiZnVuY3Rpb24iLGJLOiJmdW5jdGlvbiIsZTovXHsvLGVFOiEwLGM6W2UuaW5oZXJpdChlLlRNLHtiOnJ9KSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxlQjohMCxlRTohMCxjOnN9XSxpOi9cW3wlL30se2I6L1wkWyguXS99LGUuTUVUSE9EX0dVQVJELHtjTjoiY2xhc3MiLGJLOiJjbGFzcyIsZTovW3s7PV0vLGVFOiEwLGk6L1s6IlxbXF1dLyxjOlt7Yks6ImV4dGVuZHMifSxlLlVUTV19LHtiSzoiY29uc3RydWN0b3IiLGU6L1x7LyxlRTohMH1dLGk6LyMoPyEhKS99fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJ0ZXgiLGZ1bmN0aW9uKGMpe3ZhciBlPXtjTjoidGFnIixiOi9cXC8scjowLGM6W3tjTjoibmFtZSIsdjpbe2I6L1thLXpBLVrQsC3Rj9CQLdGPXStbKl0/L30se2I6L1teYS16QS1a0LAt0Y/QkC3RjzAtOV0vfV0sc3RhcnRzOntlVzohMCxyOjAsYzpbe2NOOiJzdHJpbmciLHY6W3tiOi9cWy8sZTovXF0vfSx7YjovXHsvLGU6L1x9L31dfSx7YjovXHMqPVxzKi8sZVc6ITAscjowLGM6W3tjTjoibnVtYmVyIixiOi8tP1xkKlwuP1xkKyhwdHxwY3xtbXxjbXxpbnxkZHxjY3xleHxlbSk/L31dfV19fV19O3JldHVybntjOltlLHtjTjoiZm9ybXVsYSIsYzpbZV0scjowLHY6W3tiOi9cJFwkLyxlOi9cJFwkL30se2I6L1wkLyxlOi9cJC99XX0sYy5DKCIlIiwiJCIse3I6MH0pXX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInhtbCIsZnVuY3Rpb24ocyl7dmFyIGU9IltBLVphLXowLTlcXC5fOi1dKyIsdD17ZVc6ITAsaTovPC8scjowLGM6W3tjTjoiYXR0ciIsYjplLHI6MH0se2I6Lz1ccyovLHI6MCxjOlt7Y046InN0cmluZyIsZW5kc1BhcmVudDohMCx2Olt7YjovIi8sZTovIi99LHtiOi8nLyxlOi8nL30se2I6L1teXHMiJz08PmBdKy99XX1dfV19O3JldHVybnthbGlhc2VzOlsiaHRtbCIsInhodG1sIiwicnNzIiwiYXRvbSIsInhqYiIsInhzZCIsInhzbCIsInBsaXN0Il0sY0k6ITAsYzpbe2NOOiJtZXRhIixiOiI8IURPQ1RZUEUiLGU6Ij4iLHI6MTAsYzpbe2I6IlxcWyIsZToiXFxdIn1dfSxzLkMoIjwhLS0iLCItLT4iLHtyOjEwfSkse2I6IjxcXCFcXFtDREFUQVxcWyIsZToiXFxdXFxdPiIscjoxMH0se2I6LzxcPyhwaHApPy8sZTovXD8+LyxzTDoicGhwIixjOlt7YjoiL1xcKiIsZToiXFwqLyIsc2tpcDohMH1dfSx7Y046InRhZyIsYjoiPHN0eWxlKD89XFxzfD58JCkiLGU6Ij4iLGs6e25hbWU6InN0eWxlIn0sYzpbdF0sc3RhcnRzOntlOiI8L3N0eWxlPiIsckU6ITAsc0w6WyJjc3MiLCJ4bWwiXX19LHtjTjoidGFnIixiOiI8c2NyaXB0KD89XFxzfD58JCkiLGU6Ij4iLGs6e25hbWU6InNjcmlwdCJ9LGM6W3RdLHN0YXJ0czp7ZToiPC9zY3JpcHQ+IixyRTohMCxzTDpbImFjdGlvbnNjcmlwdCIsImphdmFzY3JpcHQiLCJoYW5kbGViYXJzIiwieG1sIl19fSx7Y046Im1ldGEiLHY6W3tiOi88XD94bWwvLGU6L1w/Pi8scjoxMH0se2I6LzxcP1x3Ky8sZTovXD8+L31dfSx7Y046InRhZyIsYjoiPC8/IixlOiIvPz4iLGM6W3tjTjoibmFtZSIsYjovW15cLz48XHNdKy8scjowfSx0XX1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgibWFya2Rvd24iLGZ1bmN0aW9uKGUpe3JldHVybnthbGlhc2VzOlsibWQiLCJta2Rvd24iLCJta2QiXSxjOlt7Y046InNlY3Rpb24iLHY6W3tiOiJeI3sxLDZ9IixlOiIkIn0se2I6Il4uKz9cXG5bPS1dezIsfSQifV19LHtiOiI8IixlOiI+IixzTDoieG1sIixyOjB9LHtjTjoiYnVsbGV0IixiOiJeKFsqKy1dfChcXGQrXFwuKSlcXHMrIn0se2NOOiJzdHJvbmciLGI6IlsqX117Mn0uKz9bKl9dezJ9In0se2NOOiJlbXBoYXNpcyIsdjpbe2I6IlxcKi4rP1xcKiJ9LHtiOiJfLis/XyIscjowfV19LHtjTjoicXVvdGUiLGI6Il4+XFxzKyIsZToiJCJ9LHtjTjoiY29kZSIsdjpbe2I6Il5gYGB3KnMqJCIsZToiXmBgYHMqJCJ9LHtiOiJgLis/YCJ9LHtiOiJeKCB7NH18CSkiLGU6IiQiLHI6MH1dfSx7YjoiXlstXFwqXXszLH0iLGU6IiQifSx7YjoiXFxbLis/XFxdW1xcKFxcW10uKj9bXFwpXFxdXSIsckI6ITAsYzpbe2NOOiJzdHJpbmciLGI6IlxcWyIsZToiXFxdIixlQjohMCxyRTohMCxyOjB9LHtjTjoibGluayIsYjoiXFxdXFwoIixlOiJcXCkiLGVCOiEwLGVFOiEwfSx7Y046InN5bWJvbCIsYjoiXFxdXFxbIixlOiJcXF0iLGVCOiEwLGVFOiEwfV0scjoxMH0se2I6L15cW1teXG5dK1xdOi8sckI6ITAsYzpbe2NOOiJzeW1ib2wiLGI6L1xbLyxlOi9cXS8sZUI6ITAsZUU6ITB9LHtjTjoibGluayIsYjovOlxzKi8sZTovJC8sZUI6ITB9XX1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgianNvbiIsZnVuY3Rpb24oZSl7dmFyIGk9e2xpdGVyYWw6InRydWUgZmFsc2UgbnVsbCJ9LG49W2UuUVNNLGUuQ05NXSxyPXtlOiIsIixlVzohMCxlRTohMCxjOm4sazppfSx0PXtiOiJ7IixlOiJ9IixjOlt7Y046ImF0dHIiLGI6LyIvLGU6LyIvLGM6W2UuQkVdLGk6IlxcbiJ9LGUuaW5oZXJpdChyLHtiOi86L30pXSxpOiJcXFMifSxjPXtiOiJcXFsiLGU6IlxcXSIsYzpbZS5pbmhlcml0KHIpXSxpOiJcXFMifTtyZXR1cm4gbi5zcGxpY2Uobi5sZW5ndGgsMCx0LGMpLHtjOm4sazppLGk6IlxcUyJ9fSk7"></script>
<script src="data:application/javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEFkZCBhIG1ldGhvZCB0byBkZWxlZ2F0b3IgdGhhdCwgd2hlbiBpbnZva2VkLCBjYWxscwogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbgogIC8vIHRoZSBkZWxlZ2F0ZWUsIGJ1dCB0aGVyZSB3YXMgb25lIG9uIGRlbGVnYXRvciBiZWZvcmUKICAvLyBkZWxlZ2F0ZU1ldGhvZCB3YXMgY2FsbGVkLCB0aGVuIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLgogIC8vIEZvciBleGFtcGxlOgogIC8vCiAgLy8gdmFyIGEgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2ExJyk7IH0KICAvLyAgIG1ldGhvZDI6IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYTInKTsgfQogIC8vIH07CiAgLy8gdmFyIGIgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2IxJyk7IH0KICAvLyB9OwogIC8vIGRlbGVnYXRlTWV0aG9kKGEsIGIsICJtZXRob2QxIik7CiAgLy8gZGVsZWdhdGVNZXRob2QoYSwgYiwgIm1ldGhvZDIiKTsKICAvLyBhLm1ldGhvZDEoKTsKICAvLyBhLm1ldGhvZDIoKTsKICAvLwogIC8vIFRoZSBvdXRwdXQgd291bGQgYmUgImIxIiwgImEyIi4KICBmdW5jdGlvbiBkZWxlZ2F0ZU1ldGhvZChkZWxlZ2F0b3IsIGRlbGVnYXRlZSwgbWV0aG9kTmFtZSkgewogICAgdmFyIGluaGVyaXRlZCA9IGRlbGVnYXRvclttZXRob2ROYW1lXTsKICAgIGRlbGVnYXRvclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGFyZ2V0ID0gZGVsZWdhdGVlOwogICAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGVlW21ldGhvZE5hbWVdOwoKICAgICAgLy8gVGhlIG1ldGhvZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBkZWxlZ2F0ZWUuIEluc3RlYWQsCiAgICAgIC8vIGNhbGwgdGhlIG1ldGhvZCBvbiB0aGUgZGVsZWdhdG9yLCBpZiBpdCBleGlzdHMuCiAgICAgIGlmICghbWV0aG9kKSB7CiAgICAgICAgdGFyZ2V0ID0gZGVsZWdhdG9yOwogICAgICAgIG1ldGhvZCA9IGluaGVyaXRlZDsKICAgICAgfQoKICAgICAgaWYgKG1ldGhvZCkgewogICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9OwogIH0KCiAgLy8gSW1wbGVtZW50IGEgdmFndWUgZmFjc2ltaWxpZSBvZiBqUXVlcnkncyBkYXRhIG1ldGhvZAogIGZ1bmN0aW9uIGVsZW1lbnREYXRhKGVsLCBuYW1lLCB2YWx1ZSkgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgewogICAgICByZXR1cm4gZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV07CiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgewogICAgICBlbFsiaHRtbHdpZGdldF9kYXRhXyIgKyBuYW1lXSA9IHZhbHVlOwogICAgICByZXR1cm4gZWw7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGVsZW1lbnREYXRhOiAiICsKICAgICAgICBhcmd1bWVudHMubGVuZ3RoKTsKICAgIH0KICB9CgogIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleAogIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHsKICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1wtXFtcXVwvXHtcfVwoXClcKlwrXD9cLlxcXF5cJFx8XS9nLCAiXFwkJiIpOwogIH0KCiAgZnVuY3Rpb24gaGFzQ2xhc3MoZWwsIGNsYXNzTmFtZSkgewogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgiXFxiIiArIGVzY2FwZVJlZ0V4cChjbGFzc05hbWUpICsgIlxcYiIpOwogICAgcmV0dXJuIHJlLnRlc3QoZWwuY2xhc3NOYW1lKTsKICB9CgogIC8vIGVsZW1lbnRzIC0gYXJyYXkgKG9yIGFycmF5LWxpa2Ugb2JqZWN0KSBvZiBIVE1MIGVsZW1lbnRzCiAgLy8gY2xhc3NOYW1lIC0gY2xhc3MgbmFtZSB0byB0ZXN0IGZvcgogIC8vIGluY2x1ZGUgLSBpZiB0cnVlLCBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIGdpdmVuIGNsYXNzTmFtZTsKICAvLyAgIGlmIGZhbHNlLCBvbmx5IHJldHVybiBlbGVtZW50cyAqd2l0aG91dCogZ2l2ZW4gY2xhc3NOYW1lCiAgZnVuY3Rpb24gZmlsdGVyQnlDbGFzcyhlbGVtZW50cywgY2xhc3NOYW1lLCBpbmNsdWRlKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoaGFzQ2xhc3MoZWxlbWVudHNbaV0sIGNsYXNzTmFtZSkgPT0gaW5jbHVkZSkKICAgICAgICByZXN1bHRzLnB1c2goZWxlbWVudHNbaV0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICBmdW5jdGlvbiBvbihvYmosIGV2ZW50TmFtZSwgZnVuYykgewogICAgaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgIG9iai5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgfSBlbHNlIGlmIChvYmouYXR0YWNoRXZlbnQpIHsKICAgICAgb2JqLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvZmYob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmoucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgb2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jLCBmYWxzZSk7CiAgICBlbHNlIGlmIChvYmouZGV0YWNoRXZlbnQpIHsKICAgICAgb2JqLmRldGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICAvLyBUcmFuc2xhdGUgYXJyYXkgb2YgdmFsdWVzIHRvIHRvcC9yaWdodC9ib3R0b20vbGVmdCwgYXMgdXN1YWwgd2l0aAogIC8vIHRoZSAicGFkZGluZyIgQ1NTIHByb3BlcnR5CiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3BhZGRpbmcKICBmdW5jdGlvbiB1bnBhY2tQYWRkaW5nKHZhbHVlKSB7CiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gIm51bWJlciIpCiAgICAgIHZhbHVlID0gW3ZhbHVlXTsKICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMF0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzBdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDIpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDQpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzNdfTsKICAgIH0KICB9CgogIC8vIENvbnZlcnQgYW4gdW5wYWNrZWQgcGFkZGluZyBvYmplY3QgdG8gYSBDU1MgdmFsdWUKICBmdW5jdGlvbiBwYWRkaW5nVG9Dc3MocGFkZGluZ09iaikgewogICAgcmV0dXJuIHBhZGRpbmdPYmoudG9wICsgInB4ICIgKyBwYWRkaW5nT2JqLnJpZ2h0ICsgInB4ICIgKyBwYWRkaW5nT2JqLmJvdHRvbSArICJweCAiICsgcGFkZGluZ09iai5sZWZ0ICsgInB4IjsKICB9CgogIC8vIE1ha2VzIGEgbnVtYmVyIHN1aXRhYmxlIGZvciBDU1MKICBmdW5jdGlvbiBweCh4KSB7CiAgICBpZiAodHlwZW9mKHgpID09PSAibnVtYmVyIikKICAgICAgcmV0dXJuIHggKyAicHgiOwogICAgZWxzZQogICAgICByZXR1cm4geDsKICB9CgogIC8vIFJldHJpZXZlcyBydW50aW1lIHdpZGdldCBzaXppbmcgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuCiAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbnVsbCwgb3IgYW4gb2JqZWN0IHdpdGggZmlsbCwgcGFkZGluZywKICAvLyBkZWZhdWx0V2lkdGgsIGRlZmF1bHRIZWlnaHQgZmllbGRzLgogIGZ1bmN0aW9uIHNpemluZ1BvbGljeShlbCkgewogICAgdmFyIHNpemluZ0VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vaHRtbHdpZGdldC1zaXppbmcnXSIpOwogICAgaWYgKCFzaXppbmdFbCkKICAgICAgcmV0dXJuIG51bGw7CiAgICB2YXIgc3AgPSBKU09OLnBhcnNlKHNpemluZ0VsLnRleHRDb250ZW50IHx8IHNpemluZ0VsLnRleHQgfHwgInt9Iik7CiAgICBpZiAodmlld2VyTW9kZSkgewogICAgICByZXR1cm4gc3Audmlld2VyOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHNwLmJyb3dzZXI7CiAgICB9CiAgfQoKICAvLyBAcGFyYW0gdGFza3MgQXJyYXkgb2Ygc3RyaW5ncyAob3IgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2Ugbm8tb3ApLgogIC8vICAgRWFjaCBlbGVtZW50IG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCB5aWVsZHMgYQogIC8vICAgZnVuY3Rpb24uIE9yLCBjYW4gYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICJjb2RlIiBhbmQgImRhdGEiCiAgLy8gICBwcm9wZXJ0aWVzOyBpbiB0aGlzIGNhc2UsIHRoZSAiY29kZSIgcHJvcGVydHkgc2hvdWxkIGJlIGEgc3RyaW5nCiAgLy8gICBvZiBKUyB0aGF0J3MgYW4gZXhwciB0aGF0IHlpZWxkcyBhIGZ1bmN0aW9uLCBhbmQgImRhdGEiIHNob3VsZCBiZQogIC8vICAgYW4gb2JqZWN0IHRoYXQgd2lsbCBiZSBhZGRlZCBhcyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHdoZW4gdGhhdAogIC8vICAgZnVuY3Rpb24gaXMgY2FsbGVkLgogIC8vIEBwYXJhbSB0YXJnZXQgVGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgInRoaXMiIGZvciBlYWNoIGZ1bmN0aW9uCiAgLy8gICBleGVjdXRpb24uCiAgLy8gQHBhcmFtIGFyZ3MgQXJyYXkgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb25zLiAoVGhlCiAgLy8gICBzYW1lIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZCB0byBhbGwgZnVuY3Rpb25zLikKICBmdW5jdGlvbiBldmFsQW5kUnVuKHRhc2tzLCB0YXJnZXQsIGFyZ3MpIHsKICAgIGlmICh0YXNrcykgewogICAgICBmb3JFYWNoKHRhc2tzLCBmdW5jdGlvbih0YXNrKSB7CiAgICAgICAgdmFyIHRoZXNlQXJncyA9IGFyZ3M7CiAgICAgICAgaWYgKHR5cGVvZih0YXNrKSA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgIHRoZXNlQXJncyA9IHRoZXNlQXJncy5jb25jYXQoW3Rhc2suZGF0YV0pOwogICAgICAgICAgdGFzayA9IHRhc2suY29kZTsKICAgICAgICB9CiAgICAgICAgdmFyIHRhc2tGdW5jID0gdHJ5RXZhbCh0YXNrKTsKICAgICAgICBpZiAodHlwZW9mKHRhc2tGdW5jKSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXNrIG11c3QgYmUgYSBmdW5jdGlvbiEgU291cmNlOlxuIiArIHRhc2spOwogICAgICAgIH0KICAgICAgICB0YXNrRnVuYy5hcHBseSh0YXJnZXQsIHRoZXNlQXJncyk7CiAgICAgIH0pOwogICAgfQogIH0KCiAgLy8gQXR0ZW1wdCBldmFsKCkgYm90aCB3aXRoIGFuZCB3aXRob3V0IGVuY2xvc2luZyBpbiBwYXJlbnRoZXNlcy4KICAvLyBOb3RlIHRoYXQgZW5jbG9zaW5nIGNvZXJjZXMgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBpbnRvCiAgLy8gYW4gZXhwcmVzc2lvbiB0aGF0IGV2YWwoKSBjYW4gcGFyc2UKICAvLyAob3RoZXJ3aXNlLCBhIFN5bnRheEVycm9yIGlzIHRocm93bikKICBmdW5jdGlvbiB0cnlFdmFsKGNvZGUpIHsKICAgIHZhciByZXN1bHQgPSBudWxsOwogICAgdHJ5IHsKICAgICAgcmVzdWx0ID0gZXZhbCgiKCIgKyBjb2RlICsgIikiKTsKICAgIH0gY2F0Y2goZXJyb3IpIHsKICAgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikpIHsKICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIHJlc3VsdCA9IGV2YWwoY29kZSk7CiAgICAgIH0gY2F0Y2goZSkgewogICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHsKICAgICAgICAgIHRocm93IGVycm9yOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aHJvdyBlOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIGZ1bmN0aW9uIGluaXRTaXppbmcoZWwpIHsKICAgIHZhciBzaXppbmcgPSBzaXppbmdQb2xpY3koZWwpOwogICAgaWYgKCFzaXppbmcpCiAgICAgIHJldHVybjsKCiAgICB2YXIgY2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImh0bWx3aWRnZXRfY29udGFpbmVyIik7CiAgICBpZiAoIWNlbCkKICAgICAgcmV0dXJuOwoKICAgIGlmICh0eXBlb2Yoc2l6aW5nLnBhZGRpbmcpICE9PSAidW5kZWZpbmVkIikgewogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbiA9ICIwIjsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nID0gcGFkZGluZ1RvQ3NzKHVucGFja1BhZGRpbmcoc2l6aW5nLnBhZGRpbmcpKTsKICAgIH0KCiAgICBpZiAoc2l6aW5nLmZpbGwpIHsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLndpZHRoID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLndpZHRoID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICBpZiAoY2VsKSB7CiAgICAgICAgY2VsLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsKICAgICAgICB2YXIgcGFkID0gdW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZyk7CiAgICAgICAgY2VsLnN0eWxlLnRvcCA9IHBhZC50b3AgKyAicHgiOwogICAgICAgIGNlbC5zdHlsZS5yaWdodCA9IHBhZC5yaWdodCArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLmJvdHRvbSA9IHBhZC5ib3R0b20gKyAicHgiOwogICAgICAgIGNlbC5zdHlsZS5sZWZ0ID0gcGFkLmxlZnQgKyAicHgiOwogICAgICAgIGVsLnN0eWxlLndpZHRoID0gIjEwMCUiOwogICAgICAgIGVsLnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAgfQoKICAgICAgcmV0dXJuIHsKICAgICAgICBnZXRXaWR0aDogZnVuY3Rpb24oKSB7IHJldHVybiBjZWwub2Zmc2V0V2lkdGg7IH0sCiAgICAgICAgZ2V0SGVpZ2h0OiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRIZWlnaHQ7IH0KICAgICAgfTsKCiAgICB9IGVsc2UgewogICAgICBlbC5zdHlsZS53aWR0aCA9IHB4KHNpemluZy53aWR0aCk7CiAgICAgIGVsLnN0eWxlLmhlaWdodCA9IHB4KHNpemluZy5oZWlnaHQpOwoKICAgICAgcmV0dXJuIHsKICAgICAgICBnZXRXaWR0aDogZnVuY3Rpb24oKSB7IHJldHVybiBlbC5vZmZzZXRXaWR0aDsgfSwKICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gZWwub2Zmc2V0SGVpZ2h0OyB9CiAgICAgIH07CiAgICB9CiAgfQoKICAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgbWV0aG9kcwogIHZhciBkZWZhdWx0cyA9IHsKICAgIGZpbmQ6IGZ1bmN0aW9uKHNjb3BlKSB7CiAgICAgIHJldHVybiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCAiLiIgKyB0aGlzLm5hbWUpOwogICAgfSwKICAgIHJlbmRlckVycm9yOiBmdW5jdGlvbihlbCwgZXJyKSB7CiAgICAgIHZhciAkZWwgPSAkKGVsKTsKCiAgICAgIHRoaXMuY2xlYXJFcnJvcihlbCk7CgogICAgICAvLyBBZGQgYWxsIHRoZXNlIGVycm9yIGNsYXNzZXMsIGFzIFNoaW55IGRvZXMKICAgICAgdmFyIGVyckNsYXNzID0gInNoaW55LW91dHB1dC1lcnJvciI7CiAgICAgIGlmIChlcnIudHlwZSAhPT0gbnVsbCkgewogICAgICAgIC8vIHVzZSB0aGUgY2xhc3NlcyBvZiB0aGUgZXJyb3IgY29uZGl0aW9uIGFzIENTUyBjbGFzcyBuYW1lcwogICAgICAgIGVyckNsYXNzID0gZXJyQ2xhc3MgKyAiICIgKyAkLm1hcChhc0FycmF5KGVyci50eXBlKSwgZnVuY3Rpb24odHlwZSkgewogICAgICAgICAgcmV0dXJuIGVyckNsYXNzICsgIi0iICsgdHlwZTsKICAgICAgICB9KS5qb2luKCIgIik7CiAgICAgIH0KICAgICAgZXJyQ2xhc3MgPSBlcnJDbGFzcyArICIgaHRtbHdpZGdldHMtZXJyb3IiOwoKICAgICAgLy8gSXMgZWwgaW5saW5lIG9yIGJsb2NrPyBJZiBpbmxpbmUgb3IgaW5saW5lLWJsb2NrLCBqdXN0IGRpc3BsYXk6bm9uZSBpdAogICAgICAvLyBhbmQgYWRkIGFuIGlubGluZSBlcnJvci4KICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuY3NzKCJkaXNwbGF5Iik7CiAgICAgICRlbC5kYXRhKCJyZXN0b3JlLWRpc3BsYXktbW9kZSIsIGRpc3BsYXkpOwoKICAgICAgaWYgKGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siKSB7CiAgICAgICAgJGVsLmhpZGUoKTsKICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgIT09ICIiKSB7CiAgICAgICAgICB2YXIgZXJyb3JTcGFuID0gJCgiPHNwYW4+IikuYWRkQ2xhc3MoZXJyQ2xhc3MpOwogICAgICAgICAgZXJyb3JTcGFuLnRleHQoZXJyLm1lc3NhZ2UpOwogICAgICAgICAgJGVsLmFmdGVyKGVycm9yU3Bhbik7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGRpc3BsYXkgPT09ICJibG9jayIpIHsKICAgICAgICAvLyBJZiBibG9jaywgYWRkIGFuIGVycm9yIGp1c3QgYWZ0ZXIgdGhlIGVsLCBzZXQgdmlzaWJpbGl0eTpub25lIG9uIHRoZQogICAgICAgIC8vIGVsLCBhbmQgcG9zaXRpb24gdGhlIGVycm9yIHRvIGJlIG9uIHRvcCBvZiB0aGUgZWwuCiAgICAgICAgLy8gTWFyayBpdCB3aXRoIGEgdW5pcXVlIElEIGFuZCBDU1MgY2xhc3Mgc28gd2UgY2FuIHJlbW92ZSBpdCBsYXRlci4KICAgICAgICAkZWwuY3NzKCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpOwogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsKICAgICAgICAgIHZhciBlcnJvckRpdiA9ICQoIjxkaXY+IikuYWRkQ2xhc3MoZXJyQ2xhc3MpLmNzcygicG9zaXRpb24iLCAiYWJzb2x1dGUiKQogICAgICAgICAgICAuY3NzKCJ0b3AiLCBlbC5vZmZzZXRUb3ApCiAgICAgICAgICAgIC5jc3MoImxlZnQiLCBlbC5vZmZzZXRMZWZ0KQogICAgICAgICAgICAvLyBzZXR0aW5nIHdpZHRoIGNhbiBwdXNoIG91dCB0aGUgcGFnZSBzaXplLCBmb3JjaW5nIG90aGVyd2lzZQogICAgICAgICAgICAvLyB1bm5lY2Vzc2FyeSBzY3JvbGxiYXJzIHRvIGFwcGVhciBhbmQgbWFraW5nIGl0IGltcG9zc2libGUgZm9yCiAgICAgICAgICAgIC8vIHRoZSBlbGVtZW50IHRvIHNocmluazsgc28gdXNlIG1heC13aWR0aCBpbnN0ZWFkCiAgICAgICAgICAgIC5jc3MoIm1heFdpZHRoIiwgZWwub2Zmc2V0V2lkdGgpCiAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICBlcnJvckRpdi50ZXh0KGVyci5tZXNzYWdlKTsKICAgICAgICAgICRlbC5hZnRlcihlcnJvckRpdik7CgogICAgICAgICAgLy8gUmVhbGx5IGR1bWIgd2F5IHRvIGtlZXAgdGhlIHNpemUvcG9zaXRpb24gb2YgdGhlIGVycm9yIGluIHN5bmMgd2l0aAogICAgICAgICAgLy8gdGhlIHBhcmVudCBlbGVtZW50IGFzIHRoZSB3aW5kb3cgaXMgcmVzaXplZCBvciB3aGF0ZXZlci4KICAgICAgICAgIHZhciBpbnRJZCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoIWVycm9yRGl2WzBdLnBhcmVudEVsZW1lbnQpIHsKICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludElkKTsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZXJyb3JEaXYKICAgICAgICAgICAgICAuY3NzKCJ0b3AiLCBlbC5vZmZzZXRUb3ApCiAgICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpCiAgICAgICAgICAgICAgLmNzcygibWF4V2lkdGgiLCBlbC5vZmZzZXRXaWR0aCkKICAgICAgICAgICAgICAuY3NzKCJoZWlnaHQiLCBlbC5vZmZzZXRIZWlnaHQpOwogICAgICAgICAgfSwgNTAwKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBjbGVhckVycm9yOiBmdW5jdGlvbihlbCkgewogICAgICB2YXIgJGVsID0gJChlbCk7CiAgICAgIHZhciBkaXNwbGF5ID0gJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIik7CiAgICAgICRlbC5kYXRhKCJyZXN0b3JlLWRpc3BsYXktbW9kZSIsIG51bGwpOwoKICAgICAgaWYgKGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siKSB7CiAgICAgICAgaWYgKGRpc3BsYXkpCiAgICAgICAgICAkZWwuY3NzKCJkaXNwbGF5IiwgZGlzcGxheSk7CiAgICAgICAgJChlbC5uZXh0U2libGluZykuZmlsdGVyKCIuaHRtbHdpZGdldHMtZXJyb3IiKS5yZW1vdmUoKTsKICAgICAgfSBlbHNlIGlmIChkaXNwbGF5ID09PSAiYmxvY2siKXsKICAgICAgICAkZWwuY3NzKCJ2aXNpYmlsaXR5IiwgImluaGVyaXQiKTsKICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOwogICAgICB9CiAgICB9LAogICAgc2l6aW5nOiB7fQogIH07CgogIC8vIENhbGxlZCBieSB3aWRnZXQgYmluZGluZ3MgdG8gcmVnaXN0ZXIgYSBuZXcgdHlwZSBvZiB3aWRnZXQuIFRoZSBkZWZpbml0aW9uCiAgLy8gb2JqZWN0IGNhbiBjb250YWluIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKICAvLyAtIG5hbWUgKHJlcXVpcmVkKSAtIEEgc3RyaW5nIGluZGljYXRpbmcgdGhlIGJpbmRpbmcgbmFtZSwgd2hpY2ggd2lsbCBiZQogIC8vICAgdXNlZCBieSBkZWZhdWx0IGFzIHRoZSBDU1MgY2xhc3NuYW1lIHRvIGxvb2sgZm9yLgogIC8vIC0gaW5pdGlhbGl6ZSAob3B0aW9uYWwpIC0gQSBmdW5jdGlvbihlbCkgdGhhdCB3aWxsIGJlIGNhbGxlZCBvbmNlIHBlcgogIC8vICAgd2lkZ2V0IGVsZW1lbnQ7IGlmIGEgdmFsdWUgaXMgcmV0dXJuZWQsIGl0IHdpbGwgYmUgcGFzc2VkIGFzIHRoZSB0aGlyZAogIC8vICAgdmFsdWUgdG8gcmVuZGVyVmFsdWUuCiAgLy8gLSByZW5kZXJWYWx1ZSAocmVxdWlyZWQpIC0gQSBmdW5jdGlvbihlbCwgZGF0YSwgaW5pdFZhbHVlKSB0aGF0IHdpbGwgYmUKICAvLyAgIGNhbGxlZCB3aXRoIGRhdGEuIFN0YXRpYyBjb250ZXh0cyB3aWxsIGNhdXNlIHRoaXMgdG8gYmUgY2FsbGVkIG9uY2UgcGVyCiAgLy8gICBlbGVtZW50OyBTaGlueSBhcHBzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgcGVyCiAgLy8gICBlbGVtZW50LCBhcyB0aGUgZGF0YSBjaGFuZ2VzLgogIHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXQgPSBmdW5jdGlvbihkZWZpbml0aW9uKSB7CiAgICBpZiAoIWRlZmluaXRpb24ubmFtZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldpZGdldCBtdXN0IGhhdmUgYSBuYW1lIik7CiAgICB9CiAgICBpZiAoIWRlZmluaXRpb24udHlwZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldpZGdldCBtdXN0IGhhdmUgYSB0eXBlIik7CiAgICB9CiAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IG91dHB1dCB3aWRnZXRzCiAgICBpZiAoZGVmaW5pdGlvbi50eXBlICE9PSAib3V0cHV0IikgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB3aWRnZXQgdHlwZSAnIiArIGRlZmluaXRpb24udHlwZSArICInIik7CiAgICB9CiAgICAvLyBUT0RPOiBWZXJpZnkgdGhhdCAubmFtZSBpcyBhIHZhbGlkIENTUyBjbGFzc25hbWUKCiAgICAvLyBTdXBwb3J0IG5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9ucy4gT2xkLXN0eWxlIGNsYXNzLWJvdW5kCiAgICAvLyBkZWZpbml0aW9ucyBoYXZlIG9uZSB3aWRnZXQgIm9iamVjdCIgcGVyIHdpZGdldCBwZXIgdHlwZS9jbGFzcyBvZgogICAgLy8gd2lkZ2V0OyB0aGUgcmVuZGVyVmFsdWUgYW5kIHJlc2l6ZSBtZXRob2RzIG9uIHN1Y2ggd2lkZ2V0IG9iamVjdHMKICAgIC8vIHRha2UgZWwgYW5kIGluc3RhbmNlIGFyZ3VtZW50cywgYmVjYXVzZSB0aGUgd2lkZ2V0IG9iamVjdCBjYW4ndAogICAgLy8gc3RvcmUgdGhlbS4gTmV3LXN0eWxlIGluc3RhbmNlLWJvdW5kIGRlZmluaXRpb25zIGhhdmUgb25lIHdpZGdldAogICAgLy8gb2JqZWN0IHBlciB3aWRnZXQgaW5zdGFuY2U7IHRoZSBkZWZpbml0aW9uIHRoYXQncyBwYXNzZWQgaW4gZG9lc24ndAogICAgLy8gcHJvdmlkZSByZW5kZXJWYWx1ZSBvciByZXNpemUgbWV0aG9kcyBhdCBhbGwsIGp1c3QgdGhlIHNpbmdsZSBtZXRob2QKICAgIC8vICAgZmFjdG9yeShlbCwgd2lkdGgsIGhlaWdodCkKICAgIC8vIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IHRoYXQgaGFzIHJlbmRlclZhbHVlKHgpIGFuZCByZXNpemUodywgaCkuCiAgICAvLyBUaGlzIGVuYWJsZXMgYSBmYXIgbW9yZSBuYXR1cmFsIHByb2dyYW1taW5nIHN0eWxlIGZvciB0aGUgd2lkZ2V0CiAgICAvLyBhdXRob3IsIHdobyBjYW4gc3RvcmUgcGVyLWluc3RhbmNlIHN0YXRlIHVzaW5nIGVpdGhlciBPTy1zdHlsZQogICAgLy8gaW5zdGFuY2UgZmllbGRzIG9yIGZ1bmN0aW9uYWwtc3R5bGUgY2xvc3VyZSB2YXJpYWJsZXMgKEkgZ3Vlc3MgdGhpcwogICAgLy8gaXMgaW4gY29udHJhc3QgdG8gd2hhdCBjYW4gb25seSBiZSBjYWxsZWQgQy1zdHlsZSBwc2V1ZG8tT08gd2hpY2ggaXMKICAgIC8vIHdoYXQgd2UgcmVxdWlyZWQgYmVmb3JlKS4KICAgIGlmIChkZWZpbml0aW9uLmZhY3RvcnkpIHsKICAgICAgZGVmaW5pdGlvbiA9IGNyZWF0ZUxlZ2FjeURlZmluaXRpb25BZGFwdGVyKGRlZmluaXRpb24pOwogICAgfQoKICAgIGlmICghZGVmaW5pdGlvbi5yZW5kZXJWYWx1ZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldpZGdldCBtdXN0IGhhdmUgYSByZW5kZXJWYWx1ZSBmdW5jdGlvbiIpOwogICAgfQoKICAgIC8vIEZvciBzdGF0aWMgcmVuZGVyaW5nIChub24tU2hpbnkpLCB1c2UgYSBzaW1wbGUgd2lkZ2V0IHJlZ2lzdHJhdGlvbgogICAgLy8gc2NoZW1lLiBXZSBhbHNvIHVzZSB0aGlzIHNjaGVtZSBmb3IgU2hpbnkgYXBwcy9kb2N1bWVudHMgdGhhdCBhbHNvCiAgICAvLyBjb250YWluIHN0YXRpYyB3aWRnZXRzLgogICAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgPSB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyB8fCBbXTsKICAgIC8vIE1lcmdlIGRlZmF1bHRzIGludG8gdGhlIGRlZmluaXRpb247IGRvbid0IG11dGF0ZSB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbi4KICAgIHZhciBzdGF0aWNCaW5kaW5nID0gZXh0ZW5kKHt9LCBkZWZhdWx0cywgZGVmaW5pdGlvbik7CiAgICBvdmVycmlkZU1ldGhvZChzdGF0aWNCaW5kaW5nLCAiZmluZCIsIGZ1bmN0aW9uKHN1cGVyZnVuYykgewogICAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgICB2YXIgcmVzdWx0cyA9IHN1cGVyZnVuYyhzY29wZSk7CiAgICAgICAgLy8gRmlsdGVyIG91dCBTaGlueSBvdXRwdXRzLCB3ZSBvbmx5IHdhbnQgdGhlIHN0YXRpYyBraW5kCiAgICAgICAgcmV0dXJuIGZpbHRlckJ5Q2xhc3MocmVzdWx0cywgImh0bWwtd2lkZ2V0LW91dHB1dCIsIGZhbHNlKTsKICAgICAgfTsKICAgIH0pOwogICAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMucHVzaChzdGF0aWNCaW5kaW5nKTsKCiAgICBpZiAoc2hpbnlNb2RlKSB7CiAgICAgIC8vIFNoaW55IGlzIHJ1bm5pbmcuIFJlZ2lzdGVyIHRoZSBkZWZpbml0aW9uIHdpdGggYW4gb3V0cHV0IGJpbmRpbmcuCiAgICAgIC8vIFRoZSBkZWZpbml0aW9uIGl0c2VsZiB3aWxsIG5vdCBiZSB0aGUgb3V0cHV0IGJpbmRpbmcsIGluc3RlYWQKICAgICAgLy8gd2Ugd2lsbCBtYWtlIGFuIG91dHB1dCBiaW5kaW5nIG9iamVjdCB0aGF0IGRlbGVnYXRlcyB0byB0aGUKICAgICAgLy8gZGVmaW5pdGlvbi4gVGhpcyBpcyBiZWNhdXNlIHdlIGZvb2xpc2hseSB1c2VkIHRoZSBzYW1lIG1ldGhvZAogICAgICAvLyBuYW1lIChyZW5kZXJWYWx1ZSkgZm9yIGh0bWx3aWRnZXRzIGRlZmluaXRpb24gYW5kIFNoaW55IGJpbmRpbmdzCiAgICAgIC8vIGJ1dCB0aGV5IGFjdHVhbGx5IGhhdmUgcXVpdGUgZGlmZmVyZW50IHNlbWFudGljcyAodGhlIFNoaW55CiAgICAgIC8vIGJpbmRpbmdzIHJlY2VpdmUgZGF0YSB0aGF0IGluY2x1ZGVzIGxvdHMgb2YgbWV0YWRhdGEgdGhhdCBpdAogICAgICAvLyBzdHJpcHMgb2ZmIGJlZm9yZSBjYWxsaW5nIGh0bWx3aWRnZXRzIHJlbmRlclZhbHVlKS4gV2UgY2FuJ3QKICAgICAgLy8ganVzdCBpZ25vcmUgdGhlIGRpZmZlcmVuY2UgYmVjYXVzZSBpbiBzb21lIHdpZGdldHMgaXQncyBoZWxwZnVsCiAgICAgIC8vIHRvIGNhbGwgdGhpcy5yZW5kZXJWYWx1ZSgpIGZyb20gaW5zaWRlIG9mIHJlc2l6ZSgpLCBhbmQgaWYKICAgICAgLy8gd2UncmUgbm90IGRlbGVnYXRpbmcsIHRoZW4gdGhhdCBjYWxsIHdpbGwgZ28gdG8gdGhlIFNoaW55CiAgICAgIC8vIHZlcnNpb24gaW5zdGVhZCBvZiB0aGUgaHRtbHdpZGdldHMgdmVyc2lvbi4KCiAgICAgIC8vIE1lcmdlIGRlZmF1bHRzIHdpdGggZGVmaW5pdGlvbiwgd2l0aG91dCBtdXRhdGluZyBlaXRoZXIuCiAgICAgIHZhciBiaW5kaW5nRGVmID0gZXh0ZW5kKHt9LCBkZWZhdWx0cywgZGVmaW5pdGlvbik7CgogICAgICAvLyBUaGlzIG9iamVjdCB3aWxsIGJlIG91ciBhY3R1YWwgU2hpbnkgYmluZGluZy4KICAgICAgdmFyIHNoaW55QmluZGluZyA9IG5ldyBTaGlueS5PdXRwdXRCaW5kaW5nKCk7CgogICAgICAvLyBXaXRoIGEgZmV3IGV4Y2VwdGlvbnMsIHdlJ2xsIHdhbnQgdG8gc2ltcGx5IHVzZSB0aGUgYmluZGluZ0RlZidzCiAgICAgIC8vIHZlcnNpb24gb2YgbWV0aG9kcyBpZiB0aGV5IGFyZSBhdmFpbGFibGUsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8KICAgICAgLy8gU2hpbnkncyBkZWZhdWx0cy4gTk9URTogSWYgU2hpbnkncyBvdXRwdXQgYmluZGluZ3MgZ2FpbiBhZGRpdGlvbmFsCiAgICAgIC8vIG1ldGhvZHMgaW4gdGhlIGZ1dHVyZSwgYW5kIHdlIHdhbnQgdGhlbSB0byBiZSBvdmVycmlkZWFibGUgYnkKICAgICAgLy8gSFRNTFdpZGdldCBiaW5kaW5nIGRlZmluaXRpb25zLCB0aGVuIHdlJ2xsIG5lZWQgdG8gYWRkIHRoZW0gdG8gdGhpcwogICAgICAvLyBsaXN0LgogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJnZXRJZCIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJvblZhbHVlQ2hhbmdlIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgIm9uVmFsdWVFcnJvciIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJyZW5kZXJFcnJvciIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJjbGVhckVycm9yIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgInNob3dQcm9ncmVzcyIpOwoKICAgICAgLy8gVGhlIGZpbmQsIHJlbmRlclZhbHVlLCBhbmQgcmVzaXplIGFyZSBoYW5kbGVkIGRpZmZlcmVudGx5LCBiZWNhdXNlIHdlCiAgICAgIC8vIHdhbnQgdG8gYWN0dWFsbHkgZGVjb3JhdGUgdGhlIGJlaGF2aW9yIG9mIHRoZSBiaW5kaW5nRGVmIG1ldGhvZHMuCgogICAgICBzaGlueUJpbmRpbmcuZmluZCA9IGZ1bmN0aW9uKHNjb3BlKSB7CiAgICAgICAgdmFyIHJlc3VsdHMgPSBiaW5kaW5nRGVmLmZpbmQoc2NvcGUpOwoKICAgICAgICAvLyBPbmx5IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBTaGlueSBvdXRwdXRzLCBub3Qgc3RhdGljIG9uZXMKICAgICAgICB2YXIgZHluYW1pY1Jlc3VsdHMgPSByZXN1bHRzLmZpbHRlcigiLmh0bWwtd2lkZ2V0LW91dHB1dCIpOwoKICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2hhdGV2ZXIgY2F1c2VkIFNoaW55IHRvIHRoaW5rIHRoZXJlIG1pZ2h0IGJlCiAgICAgICAgLy8gbmV3IGR5bmFtaWMgb3V0cHV0cywgYWxzbyBjYXVzZWQgdGhlcmUgdG8gYmUgbmV3IHN0YXRpYyBvdXRwdXRzLgogICAgICAgIC8vIFNpbmNlIHRoZXJlIG1pZ2h0IGJlIGxvdHMgb2YgZGlmZmVyZW50IGh0bWx3aWRnZXRzIGJpbmRpbmdzLCB3ZQogICAgICAgIC8vIHNjaGVkdWxlIGV4ZWN1dGlvbiBmb3IgbGF0ZXItLW5vIG5lZWQgdG8gc3RhdGljUmVuZGVyIG11bHRpcGxlCiAgICAgICAgLy8gdGltZXMuCiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSBkeW5hbWljUmVzdWx0cy5sZW5ndGgpCiAgICAgICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlcigpOwoKICAgICAgICByZXR1cm4gZHluYW1pY1Jlc3VsdHM7CiAgICAgIH07CgogICAgICAvLyBXcmFwIHJlbmRlclZhbHVlIHRvIGhhbmRsZSBpbml0aWFsaXphdGlvbiwgd2hpY2ggdW5mb3J0dW5hdGVseSBpc24ndAogICAgICAvLyBzdXBwb3J0ZWQgbmF0aXZlbHkgYnkgU2hpbnkgYXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLgoKICAgICAgc2hpbnlCaW5kaW5nLnJlbmRlclZhbHVlID0gZnVuY3Rpb24oZWwsIGRhdGEpIHsKICAgICAgICBTaGlueS5yZW5kZXJEZXBlbmRlbmNpZXMoZGF0YS5kZXBzKTsKICAgICAgICAvLyBSZXNvbHZlIHN0cmluZ3MgbWFya2VkIGFzIGphdmFzY3JpcHQgbGl0ZXJhbHMgdG8gb2JqZWN0cwogICAgICAgIGlmICghKGRhdGEuZXZhbHMgaW5zdGFuY2VvZiBBcnJheSkpIGRhdGEuZXZhbHMgPSBbZGF0YS5ldmFsc107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGRhdGEuZXZhbHMgJiYgaSA8IGRhdGEuZXZhbHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlcihkYXRhLngsIGRhdGEuZXZhbHNbaV0pOwogICAgICAgIH0KICAgICAgICBpZiAoIWJpbmRpbmdEZWYucmVuZGVyT25OdWxsVmFsdWUpIHsKICAgICAgICAgIGlmIChkYXRhLnggPT09IG51bGwpIHsKICAgICAgICAgICAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlbC5zdHlsZS52aXNpYmlsaXR5ID0gImluaGVyaXQiOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIWVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiKSkgewogICAgICAgICAgaW5pdFNpemluZyhlbCk7CgogICAgICAgICAgZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIsIHRydWUpOwogICAgICAgICAgaWYgKGJpbmRpbmdEZWYuaW5pdGlhbGl6ZSkgewogICAgICAgICAgICB2YXIgcmVzdWx0ID0gYmluZGluZ0RlZi5pbml0aWFsaXplKGVsLCBlbC5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgICBlbC5vZmZzZXRIZWlnaHQpOwogICAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgcmVzdWx0KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYmluZGluZ0RlZi5yZW5kZXJWYWx1ZShlbCwgZGF0YS54LCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IikpOwogICAgICAgIGV2YWxBbmRSdW4oZGF0YS5qc0hvb2tzLnJlbmRlciwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpLCBbZWwsIGRhdGEueF0pOwogICAgICB9OwoKICAgICAgLy8gT25seSBvdmVycmlkZSByZXNpemUgaWYgYmluZGluZ0RlZiBpbXBsZW1lbnRzIGl0CiAgICAgIGlmIChiaW5kaW5nRGVmLnJlc2l6ZSkgewogICAgICAgIHNoaW55QmluZGluZy5yZXNpemUgPSBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCkgewogICAgICAgICAgLy8gU2hpbnkgY2FuIGNhbGwgcmVzaXplIGJlZm9yZSBpbml0aWFsaXplL3JlbmRlclZhbHVlIGhhdmUgYmVlbgogICAgICAgICAgLy8gY2FsbGVkLCB3aGljaCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHdpZGdldHMuCiAgICAgICAgICBpZiAoZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7CiAgICAgICAgICAgIGJpbmRpbmdEZWYucmVzaXplKGVsLCB3aWR0aCwgaGVpZ2h0LCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IikpOwogICAgICAgICAgfQogICAgICAgIH07CiAgICAgIH0KCiAgICAgIFNoaW55Lm91dHB1dEJpbmRpbmdzLnJlZ2lzdGVyKHNoaW55QmluZGluZywgYmluZGluZ0RlZi5uYW1lKTsKICAgIH0KICB9OwoKICB2YXIgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gbnVsbDsKICBmdW5jdGlvbiBzY2hlZHVsZVN0YXRpY1JlbmRlcigpIHsKICAgIGlmICghc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkKSB7CiAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gbnVsbDsKICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICAgIH0sIDEpOwogICAgfQogIH0KCiAgLy8gUmVuZGVyIHN0YXRpYyB3aWRnZXRzIGFmdGVyIHRoZSBkb2N1bWVudCBmaW5pc2hlcyBsb2FkaW5nCiAgLy8gU3RhdGljYWxseSByZW5kZXIgYWxsIGVsZW1lbnRzIHRoYXQgYXJlIG9mIHRoaXMgd2lkZ2V0J3MgY2xhc3MKICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgYmluZGluZ3MgPSB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyB8fCBbXTsKICAgIGZvckVhY2goYmluZGluZ3MsIGZ1bmN0aW9uKGJpbmRpbmcpIHsKICAgICAgdmFyIG1hdGNoZXMgPSBiaW5kaW5nLmZpbmQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKICAgICAgZm9yRWFjaChtYXRjaGVzLCBmdW5jdGlvbihlbCkgewogICAgICAgIHZhciBzaXplT2JqID0gaW5pdFNpemluZyhlbCwgYmluZGluZyk7CgogICAgICAgIGlmIChoYXNDbGFzcyhlbCwgImh0bWwtd2lkZ2V0LXN0YXRpYy1ib3VuZCIpKQogICAgICAgICAgcmV0dXJuOwogICAgICAgIGVsLmNsYXNzTmFtZSA9IGVsLmNsYXNzTmFtZSArICIgaHRtbC13aWRnZXQtc3RhdGljLWJvdW5kIjsKCiAgICAgICAgdmFyIGluaXRSZXN1bHQ7CiAgICAgICAgaWYgKGJpbmRpbmcuaW5pdGlhbGl6ZSkgewogICAgICAgICAgaW5pdFJlc3VsdCA9IGJpbmRpbmcuaW5pdGlhbGl6ZShlbCwKICAgICAgICAgICAgc2l6ZU9iaiA/IHNpemVPYmouZ2V0V2lkdGgoKSA6IGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICBzaXplT2JqID8gc2l6ZU9iai5nZXRIZWlnaHQoKSA6IGVsLm9mZnNldEhlaWdodAogICAgICAgICAgKTsKICAgICAgICAgIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiLCBpbml0UmVzdWx0KTsKICAgICAgICB9CgogICAgICAgIGlmIChiaW5kaW5nLnJlc2l6ZSkgewogICAgICAgICAgdmFyIGxhc3RTaXplID0gewogICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgIGg6IHNpemVPYmogPyBzaXplT2JqLmdldEhlaWdodCgpIDogZWwub2Zmc2V0SGVpZ2h0CiAgICAgICAgICB9OwogICAgICAgICAgdmFyIHJlc2l6ZUhhbmRsZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBzaXplID0gewogICAgICAgICAgICAgIHc6IHNpemVPYmogPyBzaXplT2JqLmdldFdpZHRoKCkgOiBlbC5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgICBoOiBzaXplT2JqID8gc2l6ZU9iai5nZXRIZWlnaHQoKSA6IGVsLm9mZnNldEhlaWdodAogICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSAwICYmIHNpemUuaCA9PT0gMCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGlmIChzaXplLncgPT09IGxhc3RTaXplLncgJiYgc2l6ZS5oID09PSBsYXN0U2l6ZS5oKQogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgbGFzdFNpemUgPSBzaXplOwogICAgICAgICAgICBiaW5kaW5nLnJlc2l6ZShlbCwgc2l6ZS53LCBzaXplLmgsIGluaXRSZXN1bHQpOwogICAgICAgICAgfTsKCiAgICAgICAgICBvbih3aW5kb3csICJyZXNpemUiLCByZXNpemVIYW5kbGVyKTsKCiAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgY2FzZXMgd2hlcmUgd2UncmUgcnVubmluZyBpbiBhIFNoaW55CiAgICAgICAgICAvLyBhcHAsIGJ1dCB0aGUgd2lkZ2V0IGl0c2VsZiBpcyBub3QgYSBTaGlueSBvdXRwdXQsIGJ1dAogICAgICAgICAgLy8gcmF0aGVyIGEgc2ltcGxlIHN0YXRpYyB3aWRnZXQuIE9uZSBleGFtcGxlIG9mIHRoaXMgaXMKICAgICAgICAgIC8vIGFuIHJtYXJrZG93biBkb2N1bWVudCB0aGF0IGhhcyBydW50aW1lOnNoaW55IGFuZCB3aWRnZXQKICAgICAgICAgIC8vIHRoYXQgaXNuJ3QgaW4gYSByZW5kZXIgZnVuY3Rpb24uIFNoaW55IG9ubHkga25vd3MgdG8KICAgICAgICAgIC8vIGNhbGwgcmVzaXplIGhhbmRsZXJzIGZvciBTaGlueSBvdXRwdXRzLCBub3QgZm9yIHN0YXRpYwogICAgICAgICAgLy8gd2lkZ2V0cywgc28gd2UgZG8gaXQgb3Vyc2VsdmVzLgogICAgICAgICAgaWYgKHdpbmRvdy5qUXVlcnkpIHsKICAgICAgICAgICAgd2luZG93LmpRdWVyeShkb2N1bWVudCkub24oCiAgICAgICAgICAgICAgInNob3duLmh0bWx3aWRnZXRzIHNob3duLmJzLnRhYi5odG1sd2lkZ2V0cyBzaG93bi5icy5jb2xsYXBzZS5odG1sd2lkZ2V0cyIsCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcgogICAgICAgICAgICApOwogICAgICAgICAgICB3aW5kb3cualF1ZXJ5KGRvY3VtZW50KS5vbigKICAgICAgICAgICAgICAiaGlkZGVuLmh0bWx3aWRnZXRzIGhpZGRlbi5icy50YWIuaHRtbHdpZGdldHMgaGlkZGVuLmJzLmNvbGxhcHNlLmh0bWx3aWRnZXRzIiwKICAgICAgICAgICAgICByZXNpemVIYW5kbGVyCiAgICAgICAgICAgICk7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBzcGVjaWZpYyBjYXNlIG9mIGlvc2xpZGVzLCB3aGljaAogICAgICAgICAgLy8gZmxpcHMgc2xpZGVzIGJldHdlZW4gZGlzcGxheTpub25lIGFuZCBkaXNwbGF5OmJsb2NrLgogICAgICAgICAgLy8gSWRlYWxseSB3ZSB3b3VsZCBub3QgaGF2ZSB0byBoYXZlIGlvc2xpZGUtc3BlY2lmaWMgY29kZQogICAgICAgICAgLy8gaGVyZSwgYnV0IHJhdGhlciBoYXZlIGlvc2xpZGVzIHJhaXNlIGEgZ2VuZXJpYyBldmVudCwKICAgICAgICAgIC8vIGJ1dCB0aGUgcm1hcmtkb3duIHBhY2thZ2UganVzdCB3ZW50IHRvIENSQU4gc28gdGhlCiAgICAgICAgICAvLyB3aW5kb3cgdG8gZ2V0dGluZyB0aGF0IGZpeGVkIG1heSBiZSBsb25nLgogICAgICAgICAgaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgICAgICAgIC8vIEl0J3MgT0sgdG8gbGltaXQgdGhpcyB0byB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcgogICAgICAgICAgICAvLyBicm93c2VycyBiZWNhdXNlIGlvc2xpZGVzIGl0c2VsZiBvbmx5IHN1cHBvcnRzCiAgICAgICAgICAgIC8vIHN1Y2ggYnJvd3NlcnMuCiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAic2xpZGVlbnRlciIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlbGVhdmUiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBzY3JpcHREYXRhID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vanNvbiddIik7CiAgICAgICAgaWYgKHNjcmlwdERhdGEpIHsKICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShzY3JpcHREYXRhLnRleHRDb250ZW50IHx8IHNjcmlwdERhdGEudGV4dCk7CiAgICAgICAgICAvLyBSZXNvbHZlIHN0cmluZ3MgbWFya2VkIGFzIGphdmFzY3JpcHQgbGl0ZXJhbHMgdG8gb2JqZWN0cwogICAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsKICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBkYXRhLmV2YWxzICYmIGsgPCBkYXRhLmV2YWxzLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlcihkYXRhLngsIGRhdGEuZXZhbHNba10pOwogICAgICAgICAgfQogICAgICAgICAgYmluZGluZy5yZW5kZXJWYWx1ZShlbCwgZGF0YS54LCBpbml0UmVzdWx0KTsKICAgICAgICAgIGV2YWxBbmRSdW4oZGF0YS5qc0hvb2tzLnJlbmRlciwgaW5pdFJlc3VsdCwgW2VsLCBkYXRhLnhdKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSk7CgogICAgaW52b2tlUG9zdFJlbmRlckhhbmRsZXJzKCk7CiAgfQoKCiAgZnVuY3Rpb24gaGFzX2pRdWVyeTMoKSB7CiAgICBpZiAoIXdpbmRvdy5qUXVlcnkpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgdmFyICR2ZXJzaW9uID0gd2luZG93LmpRdWVyeS5mbi5qcXVlcnk7CiAgICB2YXIgJG1ham9yX3ZlcnNpb24gPSBwYXJzZUludCgkdmVyc2lvbi5zcGxpdCgiLiIpWzBdKTsKICAgIHJldHVybiAkbWFqb3JfdmVyc2lvbiA+PSAzOwogIH0KCiAgLyoKICAvIFNoaW55IDEuNCBidW1wZWQgalF1ZXJ5IGZyb20gMS54IHRvIDMueCB3aGljaCBtZWFucyBqUXVlcnkncwogIC8gb24tcmVhZHkgaGFuZGxlciAoaS5lLiwgJChmbikpIGlzIG5vdyBhc3luY3Jvbm91cyAoaS5lLiwgaXQgbm93CiAgLyByZWFsbHkgbWVhbnMgJChzZXRUaW1lb3V0KGZuKSkuCiAgLyBodHRwczovL2pxdWVyeS5jb20vdXBncmFkZS1ndWlkZS8zLjAvI2JyZWFraW5nLWNoYW5nZS1kb2N1bWVudC1yZWFkeS1oYW5kbGVycy1hcmUtbm93LWFzeW5jaHJvbm91cwogIC8KICAvIFNpbmNlIFNoaW55IHVzZXMgJCgpIHRvIHNjaGVkdWxlIGluaXRTaGlueSwgc2hpbnk+PTEuNCBjYWxscyBpbml0U2hpbnkKICAvIG9uZSB0aWNrIGxhdGVyIHRoYW4gaXQgZGlkIGJlZm9yZSwgd2hpY2ggbWVhbnMgc3RhdGljUmVuZGVyKCkgaXMKICAvIGNhbGxlZCByZW5kZXJWYWx1ZSgpIGVhcmxpZXIgdGhhbiAoYWR2YW5jZWQpIHdpZGdldCBhdXRob3JzIG1pZ2h0IGJlIGV4cGVjdGluZy4KICAvIGh0dHBzOi8vZ2l0aHViLmNvbS9yc3R1ZGlvL3NoaW55L2lzc3Vlcy8yNjMwCiAgLwogIC8gRm9yIGEgY29uY3JldGUgZXhhbXBsZSwgbGVhZmxldCBoYXMgc29tZSBtZXRob2RzIChlLmcuLCB1cGRhdGVCb3VuZHMpCiAgLyB3aGljaCByZWZlcmVuY2UgU2hpbnkgbWV0aG9kcyByZWdpc3RlcmVkIGluIGluaXRTaGlueSAoZS5nLiwgc2V0SW5wdXRWYWx1ZSkuCiAgLyBTaW5jZSBsZWFmbGV0IGlzIHByaXZ5IHRvIHRoaXMgbGlmZS1jeWNsZSwgaXQga25vd3MgdG8gdXNlIHNldFRpbWVvdXQoKSB0bwogIC8gZGVsYXkgZXhlY3V0aW9uIG9mIHRob3NlIG1ldGhvZHMgKHVudGlsIFNoaW55IG1ldGhvZHMgYXJlIHJlYWR5KQogIC8gaHR0cHM6Ly9naXRodWIuY29tL3JzdHVkaW8vbGVhZmxldC9ibG9iLzE4ZWM5ODEvamF2YXNjcmlwdC9zcmMvaW5kZXguanMjTDI2Ni1MMjY4CiAgLwogIC8gSWRlYWxseSB3aWRnZXQgYXV0aG9ycyB3b3VsZG4ndCBuZWVkIHRvIHVzZSB0aGlzIHNldFRpbWVvdXQoKSBoYWNrIHRoYXQKICAvIGxlYWZsZXQgdXNlcyB0byBjYWxsIFNoaW55IG1ldGhvZHMgb24gYSBzdGF0aWNSZW5kZXIoKS4gSW4gdGhlIGxvbmcgcnVuLAogIC8gdGhlIGxvZ2ljIGluaXRTaGlueSBzaG91bGQgYmUgYnJva2VuIHVwIHNvIHRoYXQgbWV0aG9kIHJlZ2lzdHJhdGlvbiBoYXBwZW5zCiAgLyByaWdodCBhd2F5LCBidXQgYmluZGluZyBoYXBwZW5zIGxhdGVyLgogICovCiAgZnVuY3Rpb24gbWF5YmVTdGF0aWNSZW5kZXJMYXRlcigpIHsKICAgIGlmIChzaGlueU1vZGUgJiYgaGFzX2pRdWVyeTMoKSkgewogICAgICB3aW5kb3cualF1ZXJ5KHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIpOwogICAgfSBlbHNlIHsKICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOwogICAgfQogIH0KCiAgaWYgKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbigpIHsKICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGFyZ3VtZW50cy5jYWxsZWUsIGZhbHNlKTsKICAgICAgbWF5YmVTdGF0aWNSZW5kZXJMYXRlcigpOwogICAgfSwgZmFsc2UpOwogIH0gZWxzZSBpZiAoZG9jdW1lbnQuYXR0YWNoRXZlbnQpIHsKICAgIGRvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBmdW5jdGlvbigpIHsKICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJjb21wbGV0ZSIpIHsKICAgICAgICBkb2N1bWVudC5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgYXJndW1lbnRzLmNhbGxlZSk7CiAgICAgICAgbWF5YmVTdGF0aWNSZW5kZXJMYXRlcigpOwogICAgICB9CiAgICB9KTsKICB9CgoKICB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0QXR0YWNobWVudFVybCA9IGZ1bmN0aW9uKGRlcG5hbWUsIGtleSkgewogICAgLy8gSWYgbm8ga2V5LCBkZWZhdWx0IHRvIHRoZSBmaXJzdCBpdGVtCiAgICBpZiAodHlwZW9mKGtleSkgPT09ICJ1bmRlZmluZWQiKQogICAgICBrZXkgPSAxOwoKICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGVwbmFtZSArICItIiArIGtleSArICItYXR0YWNobWVudCIpOwogICAgaWYgKCFsaW5rKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiQXR0YWNobWVudCAiICsgZGVwbmFtZSArICIvIiArIGtleSArICIgbm90IGZvdW5kIGluIGRvY3VtZW50Iik7CiAgICB9CiAgICByZXR1cm4gbGluay5nZXRBdHRyaWJ1dGUoImhyZWYiKTsKICB9OwoKICB3aW5kb3cuSFRNTFdpZGdldHMuZGF0YWZyYW1lVG9EMyA9IGZ1bmN0aW9uKGRmKSB7CiAgICB2YXIgbmFtZXMgPSBbXTsKICAgIHZhciBsZW5ndGg7CiAgICBmb3IgKHZhciBuYW1lIGluIGRmKSB7CiAgICAgICAgaWYgKGRmLmhhc093blByb3BlcnR5KG5hbWUpKQogICAgICAgICAgICBuYW1lcy5wdXNoKG5hbWUpOwogICAgICAgIGlmICh0eXBlb2YoZGZbbmFtZV0pICE9PSAib2JqZWN0IiB8fCB0eXBlb2YoZGZbbmFtZV0ubGVuZ3RoKSA9PT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIik7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YobGVuZ3RoKSAhPT0gInVuZGVmaW5lZCIgJiYgbGVuZ3RoICE9PSBkZltuYW1lXS5sZW5ndGgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIG9mIHRoZSBzYW1lIGxlbmd0aCIpOwogICAgICAgIH0KICAgICAgICBsZW5ndGggPSBkZltuYW1lXS5sZW5ndGg7CiAgICB9CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdmFyIGl0ZW07CiAgICBmb3IgKHZhciByb3cgPSAwOyByb3cgPCBsZW5ndGg7IHJvdysrKSB7CiAgICAgICAgaXRlbSA9IHt9OwogICAgICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG5hbWVzLmxlbmd0aDsgY29sKyspIHsKICAgICAgICAgICAgaXRlbVtuYW1lc1tjb2xdXSA9IGRmW25hbWVzW2NvbF1dW3Jvd107CiAgICAgICAgfQogICAgICAgIHJlc3VsdHMucHVzaChpdGVtKTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH07CgogIHdpbmRvdy5IVE1MV2lkZ2V0cy50cmFuc3Bvc2VBcnJheTJEID0gZnVuY3Rpb24oYXJyYXkpIHsKICAgICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIGFycmF5OwogICAgICB2YXIgbmV3QXJyYXkgPSBhcnJheVswXS5tYXAoZnVuY3Rpb24oY29sLCBpKSB7CiAgICAgICAgICByZXR1cm4gYXJyYXkubWFwKGZ1bmN0aW9uKHJvdykgewogICAgICAgICAgICAgIHJldHVybiByb3dbaV0KICAgICAgICAgIH0pCiAgICAgIH0pOwogICAgICByZXR1cm4gbmV3QXJyYXk7CiAgfTsKICAvLyBTcGxpdCB2YWx1ZSBhdCBzcGxpdENoYXIsIGJ1dCBhbGxvdyBzcGxpdENoYXIgdG8gYmUgZXNjYXBlZAogIC8vIHVzaW5nIGVzY2FwZUNoYXIuIEFueSBvdGhlciBjaGFyYWN0ZXJzIGVzY2FwZWQgYnkgZXNjYXBlQ2hhcgogIC8vIHdpbGwgYmUgaW5jbHVkZWQgYXMgdXN1YWwgKGluY2x1ZGluZyBlc2NhcGVDaGFyIGl0c2VsZikuCiAgZnVuY3Rpb24gc3BsaXRXaXRoRXNjYXBlKHZhbHVlLCBzcGxpdENoYXIsIGVzY2FwZUNoYXIpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgZXNjYXBlTW9kZSA9IGZhbHNlOwogICAgdmFyIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IHZhbHVlLmxlbmd0aDsgcG9zKyspIHsKICAgICAgaWYgKCFlc2NhcGVNb2RlKSB7CiAgICAgICAgaWYgKHZhbHVlW3Bvc10gPT09IHNwbGl0Q2hhcikgewogICAgICAgICAgcmVzdWx0cy5wdXNoKGN1cnJlbnRSZXN1bHQpOwogICAgICAgICAgY3VycmVudFJlc3VsdCA9ICIiOwogICAgICAgIH0gZWxzZSBpZiAodmFsdWVbcG9zXSA9PT0gZXNjYXBlQ2hhcikgewogICAgICAgICAgZXNjYXBlTW9kZSA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3VycmVudFJlc3VsdCArPSB2YWx1ZVtwb3NdOwogICAgICAgIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKGN1cnJlbnRSZXN1bHQgIT09ICIiKSB7CiAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KICAvLyBGdW5jdGlvbiBhdXRob3JlZCBieSBZaWh1aS9KSiBBbGxhaXJlCiAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyID0gZnVuY3Rpb24obywgbWVtYmVyKSB7CiAgICB2YXIgcGFydHMgPSBzcGxpdFdpdGhFc2NhcGUobWVtYmVyLCAnLicsICdcXCcpOwogICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTsKICAgICAgLy8gcGFydCBtYXkgYmUgYSBjaGFyYWN0ZXIgb3IgJ251bWVyaWMnIG1lbWJlciBuYW1lCiAgICAgIGlmIChvICE9PSBudWxsICYmIHR5cGVvZiBvID09PSAib2JqZWN0IiAmJiBwYXJ0IGluIG8pIHsKICAgICAgICBpZiAoaSA9PSAobCAtIDEpKSB7IC8vIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHRoZW4gZXZhbHVsYXRlCiAgICAgICAgICBpZiAodHlwZW9mIG9bcGFydF0gPT09ICJzdHJpbmciKQogICAgICAgICAgICBvW3BhcnRdID0gdHJ5RXZhbChvW3BhcnRdKTsKICAgICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2UgY29udGludWUgdG8gbmV4dCBlbWJlZGRlZCBvYmplY3QKICAgICAgICAgIG8gPSBvW3BhcnRdOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CgogIC8vIFJldHJpZXZlIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlIChpLmUuIHRoZSByZXR1cm4gdmFsdWUgb2YgYW4KICAvLyBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQogIC8vIGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50LCBvciBudWxsIGlmIG5vbmUuCiAgd2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlID0gZnVuY3Rpb24oZWwpIHsKICAgIHJldHVybiBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0Iik7CiAgfTsKCiAgLy8gRmluZHMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHNjb3BlIHRoYXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IsCiAgLy8gYW5kIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2UgKGkuZS4gdGhlIHJldHVybiB2YWx1ZSBvZgogIC8vIGFuIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pCiAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoYXQgZWxlbWVudCwgaWYgYW55LiBJZiBubyBlbGVtZW50IG1hdGNoZXMgdGhlCiAgLy8gc2VsZWN0b3IsIG9yIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50IGhhcyBubyBIVE1MV2lkZ2V0CiAgLy8gaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIGl0LCB0aGVuIG51bGwgaXMgcmV0dXJuZWQuCiAgLy8KICAvLyBUaGUgc2NvcGUgYXJndW1lbnQgaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byB3aW5kb3cuZG9jdW1lbnQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmZpbmQgPSBmdW5jdGlvbihzY29wZSwgc2VsZWN0b3IpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgc2VsZWN0b3IgPSBzY29wZTsKICAgICAgc2NvcGUgPSBkb2N1bWVudDsKICAgIH0KCiAgICB2YXIgZWwgPSBzY29wZS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKICAgIGlmIChlbCA9PT0gbnVsbCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0SW5zdGFuY2UoZWwpOwogICAgfQogIH07CgogIC8vIEZpbmRzIGFsbCBlbGVtZW50cyBpbiB0aGUgc2NvcGUgdGhhdCBtYXRjaCB0aGUgc2VsZWN0b3IsIGFuZAogIC8vIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2VzIChpLmUuIHRoZSByZXR1cm4gdmFsdWVzIG9mCiAgLy8gYW4gSFRNTFdpZGdldCBiaW5kaW5nJ3MgaW5pdGlhbGl6ZSgpIG9yIGZhY3RvcnkoKSBmdW5jdGlvbikKICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnRzLCBpbiBhbiBhcnJheS4gSWYgZWxlbWVudHMgdGhhdAogIC8vIG1hdGNoIHRoZSBzZWxlY3RvciBkb24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgSFRNTFdpZGdldAogIC8vIGluc3RhbmNlLCB0aGUgcmV0dXJuZWQgYXJyYXkgd2lsbCBjb250YWluIG51bGxzLgogIC8vCiAgLy8gVGhlIHNjb3BlIGFyZ3VtZW50IGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gd2luZG93LmRvY3VtZW50LgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5maW5kQWxsID0gZnVuY3Rpb24oc2NvcGUsIHNlbGVjdG9yKSB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7CiAgICAgIHNlbGVjdG9yID0gc2NvcGU7CiAgICAgIHNjb3BlID0gZG9jdW1lbnQ7CiAgICB9CgogICAgdmFyIG5vZGVzID0gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgewogICAgICByZXN1bHRzLnB1c2god2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlKG5vZGVzW2ldKSk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9OwoKICB2YXIgcG9zdFJlbmRlckhhbmRsZXJzID0gW107CiAgZnVuY3Rpb24gaW52b2tlUG9zdFJlbmRlckhhbmRsZXJzKCkgewogICAgd2hpbGUgKHBvc3RSZW5kZXJIYW5kbGVycy5sZW5ndGgpIHsKICAgICAgdmFyIGhhbmRsZXIgPSBwb3N0UmVuZGVySGFuZGxlcnMuc2hpZnQoKTsKICAgICAgaWYgKGhhbmRsZXIpIHsKICAgICAgICBoYW5kbGVyKCk7CiAgICAgIH0KICAgIH0KICB9CgogIC8vIFJlZ2lzdGVyIHRoZSBnaXZlbiBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIGFmdGVyIHRoZQogIC8vIG5leHQgdGltZSBzdGF0aWMgd2lkZ2V0cyBhcmUgcmVuZGVyZWQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmFkZFBvc3RSZW5kZXJIYW5kbGVyID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgIHBvc3RSZW5kZXJIYW5kbGVycy5wdXNoKGNhbGxiYWNrKTsKICB9OwoKICAvLyBUYWtlcyBhIG5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9uLCBhbmQgcmV0dXJucyBhbgogIC8vIG9sZC1zdHlsZSBjbGFzcy1ib3VuZCBkZWZpbml0aW9uLiBUaGlzIHNhdmVzIHVzIGZyb20gaGF2aW5nCiAgLy8gdG8gcmV3cml0ZSBhbGwgdGhlIGxvZ2ljIGluIHRoaXMgZmlsZSB0byBhY2NvbW9kYXRlIGJvdGgKICAvLyB0eXBlcyBvZiBkZWZpbml0aW9ucy4KICBmdW5jdGlvbiBjcmVhdGVMZWdhY3lEZWZpbml0aW9uQWRhcHRlcihkZWZuKSB7CiAgICB2YXIgcmVzdWx0ID0gewogICAgICBuYW1lOiBkZWZuLm5hbWUsCiAgICAgIHR5cGU6IGRlZm4udHlwZSwKICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsKICAgICAgICByZXR1cm4gZGVmbi5mYWN0b3J5KGVsLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgfSwKICAgICAgcmVuZGVyVmFsdWU6IGZ1bmN0aW9uKGVsLCB4LCBpbnN0YW5jZSkgewogICAgICAgIHJldHVybiBpbnN0YW5jZS5yZW5kZXJWYWx1ZSh4KTsKICAgICAgfSwKICAgICAgcmVzaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCwgaW5zdGFuY2UpIHsKICAgICAgICByZXR1cm4gaW5zdGFuY2UucmVzaXplKHdpZHRoLCBoZWlnaHQpOwogICAgICB9CiAgICB9OwoKICAgIGlmIChkZWZuLmZpbmQpCiAgICAgIHJlc3VsdC5maW5kID0gZGVmbi5maW5kOwogICAgaWYgKGRlZm4ucmVuZGVyRXJyb3IpCiAgICAgIHJlc3VsdC5yZW5kZXJFcnJvciA9IGRlZm4ucmVuZGVyRXJyb3I7CiAgICBpZiAoZGVmbi5jbGVhckVycm9yKQogICAgICByZXN1bHQuY2xlYXJFcnJvciA9IGRlZm4uY2xlYXJFcnJvcjsKCiAgICByZXR1cm4gcmVzdWx0OwogIH0KfSkoKTsKCg=="></script>
<link href="data:text/css,%2EclassActivePointer%3Ahover%20%7Bcursor%3A%20pointer%3B%7D%2ErPartvisNetwork%7Bmargin%3A%200%2E5em%20auto%3B%20%7D%2Evis%20%2Eoverlay%20%7Bposition%3A%20absolute%3Btop%3A%200%3Bleft%3A%200%3Bwidth%3A%20100%25%3Bheight%3A%20100%25%3Bz%2Dindex%3A%2010%3B%7D%2Evis%2Dactive%20%7Bbox%2Dshadow%3A%200%200%2010px%20%2386d5f8%3B%7D%2Evis%20%5Bclass%2A%3D%22span%22%5D%20%7Bmin%2Dheight%3A%200%3Bwidth%3A%20auto%3B%7Ddiv%2Evis%2Dconfiguration%20%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bfloat%3Aleft%3Bfont%2Dsize%3A12px%3B%7Ddiv%2Evis%2Dconfiguration%2Dwrapper%20%7Bdisplay%3Ablock%3Bwidth%3A700px%3B%7Ddiv%2Evis%2Dconfiguration%2Dwrapper%3A%3Aafter%20%7Bclear%3A%20both%3Bcontent%3A%20%22%22%3Bdisplay%3A%20block%3B%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Doption%2Dcontainer%7Bdisplay%3Ablock%3Bwidth%3A495px%3Bbackground%2Dcolor%3A%20%23ffffff%3Bborder%3A2px%20solid%20%23f7f8fa%3Bborder%2Dradius%3A4px%3Bmargin%2Dtop%3A20px%3Bleft%3A10px%3Bpadding%2Dleft%3A5px%3B%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Dbutton%7Bdisplay%3Ablock%3Bwidth%3A495px%3Bheight%3A25px%3Bvertical%2Dalign%3A%20middle%3Bline%2Dheight%3A25px%3Bbackground%2Dcolor%3A%20%23f7f8fa%3Bborder%3A2px%20solid%20%23ceced0%3Bborder%2Dradius%3A4px%3Bmargin%2Dtop%3A20px%3Bleft%3A10px%3Bpadding%2Dleft%3A5px%3Bcursor%3A%20pointer%3Bmargin%2Dbottom%3A30px%3B%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Dbutton%2Ehover%7Bbackground%2Dcolor%3A%20%234588e6%3Bborder%3A2px%20solid%20%23214373%3Bcolor%3A%23ffffff%3B%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Ditem%7Bdisplay%3Ablock%3Bfloat%3Aleft%3Bwidth%3A495px%3Bheight%3A25px%3Bvertical%2Dalign%3A%20middle%3Bline%2Dheight%3A25px%3B%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Ditem%2Evis%2Dconfig%2Ds2%7Bleft%3A10px%3Bbackground%2Dcolor%3A%20%23f7f8fa%3Bpadding%2Dleft%3A5px%3Bborder%2Dradius%3A3px%3B%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Ditem%2Evis%2Dconfig%2Ds3%7Bleft%3A20px%3Bbackground%2Dcolor%3A%20%23e4e9f0%3Bpadding%2Dleft%3A5px%3Bborder%2Dradius%3A3px%3B%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Ditem%2Evis%2Dconfig%2Ds4%7Bleft%3A30px%3Bbackground%2Dcolor%3A%20%23cfd8e6%3Bpadding%2Dleft%3A5px%3Bborder%2Dradius%3A3px%3B%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Dheader%7Bfont%2Dsize%3A18px%3Bfont%2Dweight%3A%20bold%3B%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Dlabel%7Bwidth%3A120px%3Bheight%3A25px%3Bline%2Dheight%3A%2025px%3B%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Dlabel%2Evis%2Dconfig%2Ds3%7Bwidth%3A110px%3B%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Dlabel%2Evis%2Dconfig%2Ds4%7Bwidth%3A100px%3B%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2DcolorBlock%7Btop%3A1px%3Bwidth%3A30px%3Bheight%3A19px%3Bborder%3A1px%20solid%20%23444444%3Bborder%2Dradius%3A2px%3Bpadding%3A0px%3Bmargin%3A0px%3Bcursor%3Apointer%3B%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Dcheckbox%20%7Bleft%3A%2D5px%3B%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drangeinput%7Bposition%3Arelative%3Btop%3A%2D5px%3Bwidth%3A60px%3Bpadding%3A1px%3Bmargin%3A0%3Bpointer%2Devents%3Anone%3B%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%7B%2Dwebkit%2Dappearance%3A%20none%3Bborder%3A%200px%20solid%20white%3Bbackground%2Dcolor%3Argba%280%2C0%2C0%2C0%29%3Bwidth%3A%20300px%3Bheight%3A20px%3B%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dwebkit%2Dslider%2Drunnable%2Dtrack%20%7Bwidth%3A%20300px%3Bheight%3A%205px%3Bbackground%3A%20%23dedede%3B%20background%3A%20%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23dedede%200%25%2C%20%23c8c8c8%2099%25%29%3B%20background%3A%20%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%23dedede%29%2C%20color%2Dstop%2899%25%2C%23c8c8c8%29%29%3B%20background%3A%20%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23dedede%200%25%2C%23c8c8c8%2099%25%29%3B%20background%3A%20%2Do%2Dlinear%2Dgradient%28top%2C%20%23dedede%200%25%2C%20%23c8c8c8%2099%25%29%3B%20background%3A%20%2Dms%2Dlinear%2Dgradient%28top%2C%20%23dedede%200%25%2C%23c8c8c8%2099%25%29%3B%20background%3A%20linear%2Dgradient%28to%20bottom%2C%20%23dedede%200%25%2C%23c8c8c8%2099%25%29%3B%20filter%3A%20progid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%23dedede%27%2C%20endColorstr%3D%27%23c8c8c8%27%2CGradientType%3D0%20%29%3B%20border%3A%201px%20solid%20%23999999%3Bbox%2Dshadow%3A%20%23aaaaaa%200px%200px%203px%200px%3Bborder%2Dradius%3A%203px%3B%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dwebkit%2Dslider%2Dthumb%20%7B%2Dwebkit%2Dappearance%3A%20none%3Bborder%3A%201px%20solid%20%2314334b%3Bheight%3A%2017px%3Bwidth%3A%2017px%3Bborder%2Dradius%3A%2050%25%3Bbackground%3A%20%233876c2%3B%20background%3A%20%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%233876c2%200%25%2C%20%23385380%20100%25%29%3B%20background%3A%20%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%233876c2%29%2C%20color%2Dstop%28100%25%2C%23385380%29%29%3B%20background%3A%20%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%233876c2%200%25%2C%23385380%20100%25%29%3B%20background%3A%20%2Do%2Dlinear%2Dgradient%28top%2C%20%233876c2%200%25%2C%23385380%20100%25%29%3B%20background%3A%20%2Dms%2Dlinear%2Dgradient%28top%2C%20%233876c2%200%25%2C%23385380%20100%25%29%3B%20background%3A%20linear%2Dgradient%28to%20bottom%2C%20%233876c2%200%25%2C%23385380%20100%25%29%3B%20filter%3A%20progid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%233876c2%27%2C%20endColorstr%3D%27%23385380%27%2CGradientType%3D0%20%29%3B%20box%2Dshadow%3A%20%23111927%200px%200px%201px%200px%3Bmargin%2Dtop%3A%20%2D7px%3B%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3Afocus%20%7Boutline%3A%20none%3B%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3Afocus%3A%3A%2Dwebkit%2Dslider%2Drunnable%2Dtrack%20%7Bbackground%3A%20%239d9d9d%3B%20background%3A%20%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%239d9d9d%200%25%2C%20%23c8c8c8%2099%25%29%3B%20background%3A%20%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%239d9d9d%29%2C%20color%2Dstop%2899%25%2C%23c8c8c8%29%29%3B%20background%3A%20%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%239d9d9d%200%25%2C%23c8c8c8%2099%25%29%3B%20background%3A%20%2Do%2Dlinear%2Dgradient%28top%2C%20%239d9d9d%200%25%2C%23c8c8c8%2099%25%29%3B%20background%3A%20%2Dms%2Dlinear%2Dgradient%28top%2C%20%239d9d9d%200%25%2C%23c8c8c8%2099%25%29%3B%20background%3A%20linear%2Dgradient%28to%20bottom%2C%20%239d9d9d%200%25%2C%23c8c8c8%2099%25%29%3B%20filter%3A%20progid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%239d9d9d%27%2C%20endColorstr%3D%27%23c8c8c8%27%2CGradientType%3D0%20%29%3B%20%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dmoz%2Drange%2Dtrack%20%7Bwidth%3A%20300px%3Bheight%3A%2010px%3Bbackground%3A%20%23dedede%3B%20background%3A%20%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23dedede%200%25%2C%20%23c8c8c8%2099%25%29%3B%20background%3A%20%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%23dedede%29%2C%20color%2Dstop%2899%25%2C%23c8c8c8%29%29%3B%20background%3A%20%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23dedede%200%25%2C%23c8c8c8%2099%25%29%3B%20background%3A%20%2Do%2Dlinear%2Dgradient%28top%2C%20%23dedede%200%25%2C%20%23c8c8c8%2099%25%29%3B%20background%3A%20%2Dms%2Dlinear%2Dgradient%28top%2C%20%23dedede%200%25%2C%23c8c8c8%2099%25%29%3B%20background%3A%20linear%2Dgradient%28to%20bottom%2C%20%23dedede%200%25%2C%23c8c8c8%2099%25%29%3B%20filter%3A%20progid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%23dedede%27%2C%20endColorstr%3D%27%23c8c8c8%27%2CGradientType%3D0%20%29%3B%20border%3A%201px%20solid%20%23999999%3Bbox%2Dshadow%3A%20%23aaaaaa%200px%200px%203px%200px%3Bborder%2Dradius%3A%203px%3B%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dmoz%2Drange%2Dthumb%20%7Bborder%3A%20none%3Bheight%3A%2016px%3Bwidth%3A%2016px%3Bborder%2Dradius%3A%2050%25%3Bbackground%3A%20%23385380%3B%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%2Dmoz%2Dfocusring%7Boutline%3A%201px%20solid%20white%3Boutline%2Doffset%3A%20%2D1px%3B%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dms%2Dtrack%20%7Bwidth%3A%20300px%3Bheight%3A%205px%3Bbackground%3A%20transparent%3Bborder%2Dcolor%3A%20transparent%3Bborder%2Dwidth%3A%206px%200%3Bcolor%3A%20transparent%3B%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dms%2Dfill%2Dlower%20%7Bbackground%3A%20%23777%3Bborder%2Dradius%3A%2010px%3B%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dms%2Dfill%2Dupper%20%7Bbackground%3A%20%23ddd%3Bborder%2Dradius%3A%2010px%3B%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dms%2Dthumb%20%7Bborder%3A%20none%3Bheight%3A%2016px%3Bwidth%3A%2016px%3Bborder%2Dradius%3A%2050%25%3Bbackground%3A%20%23385380%3B%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3Afocus%3A%3A%2Dms%2Dfill%2Dlower%20%7Bbackground%3A%20%23888%3B%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3Afocus%3A%3A%2Dms%2Dfill%2Dupper%20%7Bbackground%3A%20%23ccc%3B%7D%2Evis%2Dconfiguration%2Dpopup%20%7Bposition%3A%20absolute%3Bbackground%3A%20rgba%2857%2C%2076%2C%2089%2C%200%2E85%29%3Bborder%3A%202px%20solid%20%23f2faff%3Bline%2Dheight%3A30px%3Bheight%3A30px%3Bwidth%3A150px%3Btext%2Dalign%3Acenter%3Bcolor%3A%20%23ffffff%3Bfont%2Dsize%3A14px%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dtransition%3A%20opacity%200%2E3s%20ease%2Din%2Dout%3B%2Dmoz%2Dtransition%3A%20opacity%200%2E3s%20ease%2Din%2Dout%3Btransition%3A%20opacity%200%2E3s%20ease%2Din%2Dout%3B%7D%2Evis%2Dconfiguration%2Dpopup%3Aafter%2C%20%2Evis%2Dconfiguration%2Dpopup%3Abefore%20%7Bleft%3A%20100%25%3Btop%3A%2050%25%3Bborder%3A%20solid%20transparent%3Bcontent%3A%20%22%20%22%3Bheight%3A%200%3Bwidth%3A%200%3Bposition%3A%20absolute%3Bpointer%2Devents%3A%20none%3B%7D%2Evis%2Dconfiguration%2Dpopup%3Aafter%20%7Bborder%2Dcolor%3A%20rgba%28136%2C%20183%2C%20213%2C%200%29%3Bborder%2Dleft%2Dcolor%3A%20rgba%2857%2C%2076%2C%2089%2C%200%2E85%29%3Bborder%2Dwidth%3A%208px%3Bmargin%2Dtop%3A%20%2D8px%3B%7D%2Evis%2Dconfiguration%2Dpopup%3Abefore%20%7Bborder%2Dcolor%3A%20rgba%28194%2C%20225%2C%20245%2C%200%29%3Bborder%2Dleft%2Dcolor%3A%20%23f2faff%3Bborder%2Dwidth%3A%2012px%3Bmargin%2Dtop%3A%20%2D12px%3B%7Ddiv%2Evis%2Dtooltip%20%7Bposition%3A%20absolute%3Bvisibility%3A%20hidden%3Bpadding%3A%205px%3Bwhite%2Dspace%3A%20nowrap%3Bfont%2Dfamily%3A%20verdana%3Bfont%2Dsize%3A14px%3Bcolor%3A%23000000%3Bbackground%2Dcolor%3A%20%23f5f4ed%3B%2Dmoz%2Dborder%2Dradius%3A%203px%3B%2Dwebkit%2Dborder%2Dradius%3A%203px%3Bborder%2Dradius%3A%203px%3Bborder%3A%201px%20solid%20%23808074%3Bbox%2Dshadow%3A%203px%203px%2010px%20rgba%280%2C%200%2C%200%2C%200%2E2%29%3Bpointer%2Devents%3A%20none%3Bz%2Dindex%3A%205%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20%7Bposition%3Aabsolute%3Btop%3A%200px%3Bleft%3A%2030px%3Bmargin%2Dtop%3A%2D140px%3Bmargin%2Dleft%3A30px%3Bwidth%3A310px%3Bheight%3A444px%3Bz%2Dindex%3A%201%3Bpadding%3A%2010px%3Bborder%2Dradius%3A15px%3Bbackground%2Dcolor%3A%23ffffff%3Bdisplay%3A%20none%3Bbox%2Dshadow%3A%20rgba%280%2C0%2C0%2C0%2E5%29%200px%200px%2010px%200px%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Darrow%20%7Bposition%3A%20absolute%3Btop%3A147px%3Bleft%3A5px%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Darrow%3A%3Aafter%2Cdiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Darrow%3A%3Abefore%20%7Bright%3A%20100%25%3Btop%3A%2050%25%3Bborder%3A%20solid%20transparent%3Bcontent%3A%20%22%20%22%3Bheight%3A%200%3Bwidth%3A%200%3Bposition%3A%20absolute%3Bpointer%2Devents%3A%20none%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Darrow%3Aafter%20%7Bborder%2Dcolor%3A%20rgba%28255%2C%20255%2C%20255%2C%200%29%3Bborder%2Dright%2Dcolor%3A%20%23ffffff%3Bborder%2Dwidth%3A%2030px%3Bmargin%2Dtop%3A%20%2D30px%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dcolor%20%7Bposition%3Aabsolute%3Bwidth%3A%20289px%3Bheight%3A%20289px%3Bcursor%3A%20pointer%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbrightness%20%7Bposition%3A%20absolute%3Btop%3A313px%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dopacity%20%7Bposition%3Aabsolute%3Btop%3A350px%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dselector%20%7Bposition%3Aabsolute%3Btop%3A137px%3Bleft%3A137px%3Bwidth%3A15px%3Bheight%3A15px%3Bborder%2Dradius%3A15px%3Bborder%3A1px%20solid%20%23ffffff%3Bbackground%3A%20%234c4c4c%3B%20background%3A%20%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%234c4c4c%200%25%2C%20%23595959%2012%25%2C%20%23666666%2025%25%2C%20%23474747%2039%25%2C%20%232c2c2c%2050%25%2C%20%23000000%2051%25%2C%20%23111111%2060%25%2C%20%232b2b2b%2076%25%2C%20%231c1c1c%2091%25%2C%20%23131313%20100%25%29%3B%20background%3A%20%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%234c4c4c%29%2C%20color%2Dstop%2812%25%2C%23595959%29%2C%20color%2Dstop%2825%25%2C%23666666%29%2C%20color%2Dstop%2839%25%2C%23474747%29%2C%20color%2Dstop%2850%25%2C%232c2c2c%29%2C%20color%2Dstop%2851%25%2C%23000000%29%2C%20color%2Dstop%2860%25%2C%23111111%29%2C%20color%2Dstop%2876%25%2C%232b2b2b%29%2C%20color%2Dstop%2891%25%2C%231c1c1c%29%2C%20color%2Dstop%28100%25%2C%23131313%29%29%3B%20background%3A%20%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%234c4c4c%200%25%2C%23595959%2012%25%2C%23666666%2025%25%2C%23474747%2039%25%2C%232c2c2c%2050%25%2C%23000000%2051%25%2C%23111111%2060%25%2C%232b2b2b%2076%25%2C%231c1c1c%2091%25%2C%23131313%20100%25%29%3B%20background%3A%20%2Do%2Dlinear%2Dgradient%28top%2C%20%234c4c4c%200%25%2C%23595959%2012%25%2C%23666666%2025%25%2C%23474747%2039%25%2C%232c2c2c%2050%25%2C%23000000%2051%25%2C%23111111%2060%25%2C%232b2b2b%2076%25%2C%231c1c1c%2091%25%2C%23131313%20100%25%29%3B%20background%3A%20%2Dms%2Dlinear%2Dgradient%28top%2C%20%234c4c4c%200%25%2C%23595959%2012%25%2C%23666666%2025%25%2C%23474747%2039%25%2C%232c2c2c%2050%25%2C%23000000%2051%25%2C%23111111%2060%25%2C%232b2b2b%2076%25%2C%231c1c1c%2091%25%2C%23131313%20100%25%29%3B%20background%3A%20linear%2Dgradient%28to%20bottom%2C%20%234c4c4c%200%25%2C%23595959%2012%25%2C%23666666%2025%25%2C%23474747%2039%25%2C%232c2c2c%2050%25%2C%23000000%2051%25%2C%23111111%2060%25%2C%232b2b2b%2076%25%2C%231c1c1c%2091%25%2C%23131313%20100%25%29%3B%20filter%3A%20progid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%234c4c4c%27%2C%20endColorstr%3D%27%23131313%27%2CGradientType%3D0%20%29%3B%20%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dnew%2Dcolor%20%7Bposition%3Aabsolute%3Bwidth%3A140px%3Bheight%3A20px%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C0%2E1%29%3Bborder%2Dradius%3A5px%3Btop%3A380px%3Bleft%3A159px%3Btext%2Dalign%3Aright%3Bpadding%2Dright%3A2px%3Bfont%2Dsize%3A10px%3Bcolor%3Argba%280%2C0%2C0%2C0%2E4%29%3Bvertical%2Dalign%3Amiddle%3Bline%2Dheight%3A20px%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dinitial%2Dcolor%20%7Bposition%3Aabsolute%3Bwidth%3A140px%3Bheight%3A20px%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C0%2E1%29%3Bborder%2Dradius%3A5px%3Btop%3A380px%3Bleft%3A10px%3Btext%2Dalign%3Aleft%3Bpadding%2Dleft%3A2px%3Bfont%2Dsize%3A10px%3Bcolor%3Argba%280%2C0%2C0%2C0%2E4%29%3Bvertical%2Dalign%3Amiddle%3Bline%2Dheight%3A20px%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dlabel%20%7Bposition%3Aabsolute%3Bwidth%3A300px%3Bleft%3A10px%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dlabel%2Evis%2Dbrightness%20%7Btop%3A300px%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dlabel%2Evis%2Dopacity%20%7Btop%3A338px%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbutton%20%7Bposition%3Aabsolute%3Bwidth%3A68px%3Bheight%3A25px%3Bborder%2Dradius%3A10px%3Bvertical%2Dalign%3A%20middle%3Btext%2Dalign%3Acenter%3Bline%2Dheight%3A%2025px%3Btop%3A410px%3Bborder%3A2px%20solid%20%23d9d9d9%3Bbackground%2Dcolor%3A%20%23f7f7f7%3Bcursor%3Apointer%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbutton%2Evis%2Dcancel%20%7Bleft%3A5px%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbutton%2Evis%2Dload%20%7Bleft%3A82px%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbutton%2Evis%2Dapply%20%7Bleft%3A159px%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbutton%2Evis%2Dsave%20%7Bleft%3A236px%3B%7Ddiv%2Evis%2Dcolor%2Dpicker%20input%2Evis%2Drange%20%7Bwidth%3A%20290px%3Bheight%3A20px%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20%7Bbox%2Dsizing%3A%20content%2Dbox%3Bborder%2Dwidth%3A%200%3Bborder%2Dbottom%3A%201px%3Bborder%2Dstyle%3Asolid%3Bborder%2Dcolor%3A%20%23d6d9d8%3Bbackground%3A%20%23ffffff%3B%20background%3A%20%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23ffffff%200%25%2C%20%23fcfcfc%2048%25%2C%20%23fafafa%2050%25%2C%20%23fcfcfc%20100%25%29%3B%20background%3A%20%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%23ffffff%29%2C%20color%2Dstop%2848%25%2C%23fcfcfc%29%2C%20color%2Dstop%2850%25%2C%23fafafa%29%2C%20color%2Dstop%28100%25%2C%23fcfcfc%29%29%3B%20background%3A%20%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23ffffff%200%25%2C%23fcfcfc%2048%25%2C%23fafafa%2050%25%2C%23fcfcfc%20100%25%29%3B%20background%3A%20%2Do%2Dlinear%2Dgradient%28top%2C%20%23ffffff%200%25%2C%23fcfcfc%2048%25%2C%23fafafa%2050%25%2C%23fcfcfc%20100%25%29%3B%20background%3A%20%2Dms%2Dlinear%2Dgradient%28top%2C%20%23ffffff%200%25%2C%23fcfcfc%2048%25%2C%23fafafa%2050%25%2C%23fcfcfc%20100%25%29%3B%20background%3A%20linear%2Dgradient%28to%20bottom%2C%20%23ffffff%200%25%2C%23fcfcfc%2048%25%2C%23fafafa%2050%25%2C%23fcfcfc%20100%25%29%3B%20filter%3A%20progid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%23ffffff%27%2C%20endColorstr%3D%27%23fcfcfc%27%2CGradientType%3D0%20%29%3B%20padding%2Dtop%3A4px%3Bposition%3A%20absolute%3Bleft%3A%200%3Btop%3A%200%3Bwidth%3A%20100%25%3Bheight%3A%2028px%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%20%7Bposition%3Aabsolute%3Bleft%3A%200%3Btop%3A%205px%3Bheight%3A%2030px%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dclose%20%7Bposition%3Aabsolute%3Bright%3A%200%3Btop%3A%200%3Bwidth%3A%2030px%3Bheight%3A%2030px%3Bbackground%2Dposition%3A%2020px%203px%3Bbackground%2Drepeat%3A%20no%2Drepeat%3Bbackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAADvGaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTQtMDItMTRUMTE6NTU6MzUrMDE6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE0LTAyLTE0VDEyOjA1OjE3KzAxOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU%2BMjAxNC0wMi0xNFQxMjowNToxNyswMTowMDwveG1wOk1vZGlmeURhdGU%2BCiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6NjU0YmM5YmQtMWI2Yi1jYjRhLTllOWQtNWY2MzgxNDVjZjk0PC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjk4MmM2MGIwLWUzZjMtMDk0MC04MjU0LTFiZTliNWE0ZTE4MzwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjk4MmM2MGIwLWUzZjMtMDk0MC04MjU0LTFiZTliNWE0ZTE4MzwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDo5ODJjNjBiMC1lM2YzLTA5NDAtODI1NC0xYmU5YjVhNGUxODM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMTRUMTE6NTU6MzUrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjIxODYxNmM2LTM1MWMtNDI0OS04YWFkLWJkZDQ2ZTczNWE0NDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0xNFQxMTo1NTozNSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NjU0YmM5YmQtMWI2Yi1jYjRhLTllOWQtNWY2MzgxNDVjZjk0PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAyLTE0VDEyOjA1OjE3KzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk%2BCiAgICAgICAgIDxkYzpmb3JtYXQ%2BaW1hZ2UvcG5nPC9kYzpmb3JtYXQ%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjc8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24%2BNzwvZXhpZjpQaXhlbFlEaW1lbnNpb24%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY%2BCjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8%2BcZUZMwAAACBjSFJNAAB6JQAAgIMAAPn%2FAACA6QAAdTAAAOpgAAA6mAAAF2%2BSX8VGAAAA2ElEQVR42gDLADT%2FAS0tLUQFBQUVFxcXtPHx8fPl5eUNCAgITCkpKesEHx8fGgYGBjH%2B%2Fv4a%2BPj4qgQEBFU6OjodMTExzwQUFBSvEBAQEfX19SD19fVqNDQ0CElJSd%2F9%2Ff2vAwEBAfrn5%2BfkBwcHLRYWFgsXFxfz29vbo9LS0uwDDQ0NDfPz81orKysXIyMj%2BODg4Avh4eEa%2Ff391gMkJCRYPz8%2FKUhISOMCAgKh8fHxHRsbGx4UFBQQBDk5OeY7Ozv7CAgItPb29vMEBASaJSUlTQ0NDesDAEwpT0Ko8Ri2AAAAAElFTkSuQmCC%29%3Bcursor%3A%20pointer%3B%2Dwebkit%2Dtouch%2Dcallout%3A%20none%3B%2Dwebkit%2Duser%2Dselect%3A%20none%3B%2Dkhtml%2Duser%2Dselect%3A%20none%3B%2Dmoz%2Duser%2Dselect%3A%20none%3B%2Dms%2Duser%2Dselect%3A%20none%3Buser%2Dselect%3A%20none%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dclose%3Ahover%20%7Bopacity%3A%200%2E6%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Cdiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%20div%2Evis%2Dbutton%20%7Bfloat%3Aleft%3Bfont%2Dfamily%3A%20verdana%3Bfont%2Dsize%3A%2012px%3B%2Dmoz%2Dborder%2Dradius%3A%2015px%3Bborder%2Dradius%3A%2015px%3Bdisplay%3Ainline%2Dblock%3Bbackground%2Dposition%3A%200px%200px%3Bbackground%2Drepeat%3Ano%2Drepeat%3Bheight%3A24px%3Bmargin%2Dleft%3A%2010px%3Bcursor%3A%20pointer%3Bpadding%3A%200px%208px%200px%208px%3B%2Dwebkit%2Dtouch%2Dcallout%3A%20none%3B%2Dwebkit%2Duser%2Dselect%3A%20none%3B%2Dkhtml%2Duser%2Dselect%3A%20none%3B%2Dmoz%2Duser%2Dselect%3A%20none%3B%2Dms%2Duser%2Dselect%3A%20none%3Buser%2Dselect%3A%20none%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%3Ahover%20%7Bbox%2Dshadow%3A%201px%201px%208px%20rgba%280%2C%200%2C%200%2C%200%2E20%29%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%3Aactive%20%7Bbox%2Dshadow%3A%201px%201px%208px%20rgba%280%2C%200%2C%200%2C%200%2E50%29%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dback%20%7Bbackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w%2BCiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU%2BMjAxNC0wMi0wNFQxNTowMTowOSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTU6MDE6MDkrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmI2YjQwMjVkLTAxNjQtMzU0OC1hOTdlLTQ4ZmYxMWM3NTYzMzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2BY3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2Bc2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDpmOWQ3OGY4ZC1lNzY0LTc1NDgtODZiNy1iNmQ1OGMzZDg2OTc8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTU6MDE6MDkrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmI2YjQwMjVkLTAxNjQtMzU0OC1hOTdlLTQ4ZmYxMWM3NTYzMzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0wNFQxNTowMTowOSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOmY5ZDc4ZjhkLWU3NjQtNzU0OC04NmI3LWI2ZDU4YzNkODY5Nzwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz4jq1U%2FAAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAVTSURBVHjanFVfTFNnFP%2Bd77ve8qeVFbBrpcVgRrCRFikFByLxwSAaE32oRCHD6JMxxhhn8G2RxxH3MsOTbyYsmCAxPMmMMYtkIUYmK60OO0qAK23BFlNob0uh3x7WS5jLZPpLbm6%2Bk%2FP9zrm5v9855PF4UFhYCABgjIExBgAgIqRSqRIi6gDQRkQ1RGTB3wgR0e8AHgH4Sa%2FXR%2FEBiAiJRAJ04cIF5Ofng4g2n0gkUkxENwF0c843LzHGQEQQQkCLExEA9ALotVgsUQAQQmgNQhJCbF5kjCEUCl0moj4t5na7fTU1NUpVVVXUYrEkASAcDhe8efOmxOfzWScmJqoBdBNR99LS0hWz2dynNSSEAF28eBGFhYVgjCEcDn9HRD1EhIMHD3o9Hs9kWVlZAh9BKBQqGB4edr58%2BdKZ%2B6JbJpOpBwBWV1fB6%2BrqIMsyIpHIFcZYL2MMra2tY5cuXRrfuXNnBtvAYDBk3G63oqpqZm5uzgrgSDKZjBoMhueZTAbc5XIhFouVEtFTxhiOHTs2dv78eS8%2BEfv374%2BoqpqZnZ21cs5PJJPJPlmWkyynnBuMMTQ0NHi7uro%2BmVyDx%2BPxulwu71ZOlkqlSonoJhGhvb39s8k1nDx50ss5hyRJN9PpdKlERB2aWjSVaEilUvzBgwcORVEs5eXloXPnzk1sV8BkMiUdDofP7%2FdXZ7PZDilnIhw4cGBeS1pbW2P37t1zBwKBikQiUUREWFhYsHHO0d7evm0Ru90%2B%2F%2BrVq2rO%2BXGJiJxEhMrKyhgAjI6OWoeHh5tWVla%2B4JzDZrO9bW5unhwcHGzz%2B%2F32np4e%2BxaDbfoHAMxmc6ijo2O0oqIiJkkSNjY2HBIRmRljMJvNyWfPnln7%2B%2FtPMMZQXl6%2B0NbW9qK2tjYcj8floaEhqKpq%2BHCkbD3PzMwYBgYG0NXV9UuusFna2kEgELAQEQ4dOvSis7PzN41Ar9dnrl27NqCNkv%2FC3bt3zy4tLVmICJxzEBFJRBQmorLFxcWCqqqq0Pj4eO3Y2JhbUZTdra2tL2pra8OJRGLHnTt3zkqS9K%2BhuHU4EhHMZnMoGo0W5OIh7nK5jjLGKq1W69vDhw8rRqMxMjc3t2t5eXnX5ORklc%2FnM%2Bfl5SWnpqa%2B0uv1K%2Fn5%2BWs6nW5NluXNd15e3ppOp1uz2WyzZ86cGQ0Gg6ZAIFCZzWZ%2FlYjokRDiuN%2Fvt7W0tMw3NTUpbrd78P79%2B%2B5gMFgRiUTKHj58WMYYQ3V19etTp05tq6Lp6Wkb5xxCiEfc7XZPM8a6FxcXTfX19a%2F1en2Gcy5qamreNjY2%2FqGq6joRZe12%2B9Tp06e3JY%2FFYgWPHz8%2Bmhvr3%2FCWlpbk%2Bvp6PmOseWVlBS6XS9GSJUkSdrs93NDQ8Oe%2BffvC%2F8fJIyMjddFo9Esi6pVleVjT2m0A8Hq9zqGhIefnjoknT544A4GAM%2FeDbxMReFNTE0pKSpKqqsaI6Pj8%2FLxVVdWM3W6PfCr5xMTE1zllXS0uLn6aSqXAGxsbodPpoNfrn6uqCs75EUVRrJFIZMfevXsXdTrdxseIE4mEPDIyUu%2F3%2B%2Btynd8yGo29RIR0Og26fv06ioqKwBgD5xzv3r27zBjrIyJIkgSHwzFZWVmp7NmzJ1ZaWpoAgGg0WqgoSvHMzIw1GAw6tvjhitFo7NPW5fv370Hd3d0oKCgA53zTQMvLy%2BVCiKuSJH0rSdLmztZytIWv5RPRD0T0Y3Fx8dzWfby6ugopHo%2F%2Fw4mcc8iyPMc5v5FOp7%2FPZrOdQohWInIC2C2EgBBigYi8Qoifs9lsv06nWyIiaFxagXg8jr8GAGxuIe7LBeWhAAAAAElFTkSuQmCC%29%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dnone%3Ahover%20%7Bbox%2Dshadow%3A%201px%201px%208px%20rgba%280%2C%200%2C%200%2C%200%2E0%29%3Bcursor%3A%20default%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dnone%3Aactive%20%7Bbox%2Dshadow%3A%201px%201px%208px%20rgba%280%2C%200%2C%200%2C%200%2E0%29%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dnone%20%7Bpadding%3A%200%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Enotification%20%7Bmargin%3A%202px%3Bfont%2Dweight%3A%20bold%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dadd%20%7Bbackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w%2BCiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU%2BMjAxNC0wMi0wNFQxNDo0MDoyOSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6NDA6MjkrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjVkNWIwNmQwLTVmMjAtOGE0NC1hMzIwLWZmMTEzMzQwNDc0YjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2BY3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2Bc2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDo2OWVmYWE1NS01ZTI5LTIzNGUtYTUzMy0xNDkxYjM1NDNmYmE8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6NDA6MjkrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjVkNWIwNmQwLTVmMjAtOGE0NC1hMzIwLWZmMTEzMzQwNDc0Yjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0wNFQxNDo0MDoyOSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjY5ZWZhYTU1LTVlMjktMjM0ZS1hNTMzLTE0OTFiMzU0M2ZiYTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz5WKqp9AAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYXSURBVHjafFZtUFTXGX7e9z27sveuMCwYV8ElrA7YSFYHtJUPkaaI0aRqG8wP00zUzljDINNSA%2F2ROtpO24SxnahlxjYd7SSjmUkymcxYlDhQPzHGisEVp8HwYWCVVVgEsrsuLnL74%2B5uqTF9Z%2B7cO%2Fd8PO95zvO851BlZSV0XQcAMDOYGQBARDhX3JRmMDYZwLPMWAzGHACYIgwS46oBNBNwtOL8CwE8EkSEUCgE2rJlC2w2G4go8Zwo%2FbMDgnoG6gxLfAAAYvPDMCCszKTAMIAGAhrWnf15AAAMwwARIRKJgDZv3gy73Q4iAjPjxIr9VVOMRhbAYKB8zvrO0llrfEsdKwLZek6YAPSFvtSu3GtLawu0ZJ6625SHGBQB1T88t6MxvopgMAjaunUrdF0HM%2BP4yv27DMYeJmB1RqW3Jnf3tQX2p0L4P9EXuqEd7PmDp%2BXuMU9sRbvXnnt1TxxACgoKYLVacbzsQDUJGkSATe6qi28uPtzusM6Kxie6NHLGUX3lxVUNX9StPHnn4wy3njuUYcu6n2pNi66avcEXnByP%2Fnv8aiaIyrqz2gO5A9%2B9FI1GIfn5%2BWhZdTAdjFMkwMvZOy7uWnTAOz3L4Yk71m3t69fdfTDoUGTBeHTUfiHQ6lo7Z2OXJvpDAChKe%2BaOCdKRKWxZ2%2B1qb3yyd3GYmRkQ7GQBVs99wfv6on3eR2k4PdTkDEbH7IuS8%2Fsvld%2F561PJS%2FpDk1%2Fbzwx94pze7xc5v%2FH%2BYPY6r5BAkdrJzODTK46lE6PeYEJt7u%2B8j%2BOZwCBiEAgAoNgKJoEQf6PvNvdrXgtZoNhSf7q0KZ3B2AQmVMze0Jmt54S%2FDcDCVig2NcvEUGxJAE4Pl%2BYOr0iv6BRSIPAmBeBZAmHlE2sH4p1uhrq1s0MnnEQMBsf8wRASAICQQCCITN1X7%2FsOuc0kgOVp3%2FfPs2WHv%2BcoG7gQOJUnLGsUCTxEjPzUohEA%2BNfIWUdtx0%2BefzA1kSSkIGyBAQNCKgHAEBAJ3u79U7kiAcWoem%2Fgb5Fd33nrH3kp%2BSMWtuAB%2BGllMJxMjCx9QRgA3uiqL5kwHiTlpxb3smlfMDGYGPP1hcMAkJvs8ScpfdJspdj%2BMK6Pf%2B5%2Bu29vyb4lR4%2BBGEziVESAkEpw6Av1OhUpHCz4qOXbzFWz4Ncdj%2Fv%2Fo08Lt92ODDgZDCEFJYoUGH4mzugP92puPTf0pD3H7wvfdFZdqSxnMtWjoGAAmG9fOLxjwesdjT2%2FXzIQ7ks3sycYMSEwGHNtWf5bkX5NkYCJBxUBXiGV0XHvosOt54Zey33j%2FK%2B8P33%2B%2BvjnbiGJbbLE%2BJ9SANAb6nJ2B79wcUwETAwQQ7fMjPzMvfP8ja87HUIKMOiaAqMZhrGmLdAy78eZrwwsTS0eObTs%2BIdtgVanxBUExqGbb5VzrIISGIoUXsmqbgEhJldCQWqRf27SvPAn%2Fo8XmgLhZsUkR4ll37mhk3n94Z4OlzY%2F7NLcYZfm7o1z2zT4vsvUNSXqprBCkmiTFbPX90%2Ffh8GIT2sf%2BzTPdDMf4dVnNg4z%2BE0ixsGeBs9jd5ViSgLHjCb%2FpeaR%2BMD3d4%2FZJg2llyuG2Vwy7QWAs8PNnn1f7vkGSGxAzE6mk%2Bkxkx%2Fp%2F4unffSCR0hAoL1EBCYiPNdWNcwkNQTCR7feWX6g%2B7f%2FA7I8rcw%2FU6UEe0Ndrhc%2FW7mtL9ztmqlSgstSS%2FzTJ28dalpOpkRryrwbhwBACgsLMWPGDOT4ll3qyeqAkJTdCF7P%2FCrUY%2FGkLL1rE%2B2hTbSH8%2B0Lb%2FWEuhzhyaA905blf9Vd%2F895WnZwLHrPevir%2FcvOB1oLYpTtLrm6oYGIMDExAaqtrUVKSgqYGSKCk0WHq5ikkWEWtNL0imv5qUW%2BRclLRjJsrhBAuH1%2FQL8R7HR4xy5nescuP23E6hOA6mLv%2Bsb4uTw6Ogqqq6uDpmkQkcStorX4XRcM1FjZ%2BkvFFjCJKU1WpkNJJUqIMtX1RyLeX3JtQ0JRhmGYZ%2FL27duRnJycuFGISOJ9pqh5lrB6iYgqGOxRrOaa54DcZmKvkJxk8JHC9rKh%2BKVhOsD4%2BDj%2BMwADIf8n5m4xGwAAAABJRU5ErkJggg%3D%3D%29%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dedit%2Cdiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%20div%2Evis%2Dbutton%2Evis%2Dedit%20%7Bbackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w%2BCiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU%2BMjAxNC0wMi0wNVQxNDoxMjoyNSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDVUMTQ6MTI6MjUrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjY5OTM3ZGZjLTJjNzQtYTU0YS05OTIzLTQyMmZhNDNkMjljNDwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2BY3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2Bc2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDozOWNhNzE5ZC03YzNlLTUyNGEtYmY1NS03NGVmMmM1MzE0YTc8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDVUMTQ6MTI6MjUrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjY5OTM3ZGZjLTJjNzQtYTU0YS05OTIzLTQyMmZhNDNkMjljNDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0wNVQxNDoxMjoyNSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjM5Y2E3MTlkLTdjM2UtNTI0YS1iZjU1LTc0ZWYyYzUzMTRhNzwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz4ykninAAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYpSURBVHjafFZtTFvnFX7Oea%2BNudiY2Hwam4CBlgQwXdKREDKUoYg0jbRJ29RJ2VZ1mjRFUxSpA3VTfkzJfkQbS7spU6rtx5Z2UtppScjaHxvLuiatWi2jLEoMIUDCh23g2gbj7%2BtPuPvhOurawPl1dc99n%2Bc55z33fV46ceIEZFkGADAziAgAQERoe%2F9ZK4GPM%2FAcgbsIXAcABCgMvkfAqAa89eDoJyF8LogIqqqChoaGYDAYHr8kItS8uc8iIH6iAa9IkAo5EAQX8pqmgUVBCBggYFgDhv0%2FGAsBgKZpICJkMhnQ4OAgZFkGEYGZUXmp%2B0cS%2BCKBwWA0DVRPOg5Zl2q6zaHyJlnVAMQXVTkwHrUqH0Xsvn%2BtdQAAMQDgpPLS2MViFY8rkGUZzIzaS%2Ft%2FxqCzGggtz9e697zsnKhoLUtim4jOq%2FLE6x7X0nsh16dEZ5a%2FO3a2SCAOHjwInU6Hujd6ThJ4mCDQ%2Bb2G232v7v6vwarPbQn8MGlMr%2BX0kpE3Wr5Zt5hL5HPhqYSdQIfKJ%2ByhxDPKWC6Xg%2Bjt7UXD5b5KBt1kCHS85Ljd8%2FOn3NupfnhFaZj4rWff1B98B1R%2FhnUmKd36bdtCNl4g0en4edNE%2FcXwLq8qMTMIPAQwmo%2FWuHvObA8%2B9c58k%2FdKtD0TyZWXN5YGA7ej7epKxspM%2F%2F7SoNOdWc%2FJyq2wiwhDzPxT8cP0jys3VMM7OmL0%2F77zn4Ydui3b8uiK0jD7RrA77c9Wd57cefPpF%2B2T6bWsFPWkaiPTCWvTsZpHFU%2BXrS%2B8G3AR08F6X%2B1FJvBxQQzHQOWk2SmrW4FPX%2FU2LVwPuDZj%2BfJKl2khPpeyAqA9rzR%2FYqwuiWXX8taN%2FCabGkrVuq9YJlkQQDjOAJ5jAhz9Vt9W4N5%2FrNp8I%2BvtMV%2FaZm4zLnUNNt0urdYnF68HWoJj4Wo1mLGUNRr8LEgDgNqeCh8xQIKOsgC7iAjVe83rT9zQa8uNM28u70kspessu8q8zq%2FV3NcZpVzb9%2B0zmVhOvvvrhaMVzrJg0zeq7xMVCCwdpnWSGBqjUyJwLTFgbvxie3w31uoWR1Y74r60rdxZqrR8q85t2W2MGCp12bm%2FKC3hyaSTiMhxuGrKcahqpbjOaDOoEhOEoFqJQCCJvqA85I6bfTdDjQlf2lbxVNlS6wt19yy7jRHZZlDnrinNj%2F6sHMhnNw2Ogco7O79e5fm%2FxQywRBBCEAuwn4gQ96bkYj4Vyuq9N1Z3Bj4Od5bs0MXt%2FdZZ21ctiqFan174q985P%2BLfp%2BU1g7XDON%2F1ctP458WlVjLyJhOISZE0wM0S1QfuRC3lTjkJAKKEtNC9eIOhSh9xHLZOJRZTFuXDsEoStLkR%2F768ummsaJG9Pb9oe%2B9J%2BxaeSVokiQDSJphAo5uaBuWjiKP4QTqS1cUWU7ayesN66wu22frD1vmVW6GW6T8u9eVjGyZzs%2Bw78Nqu0a2mbvVu1KEJQAgeZRL0liQYyx%2BGOmKeQpu0rMYsAJPNEFGD2dLodLIy6c9Ys7G8yeSUl3tf2%2FX3rcBVJSOv34l3sCBogi7z1LH%2FrBHjl4IJ93%2FncQFAnjeImJD0Z8zuCwu9q3djDXqTlAKID5xv%2B9t2R8n8VcUFBljQ8Gyfe40BYBM4DwDLt8Kue79ZcFkbzfEdbUbv%2BoN4c9KTtsfm1MbYQqqh%2B2zrVZYKs%2F7Ef%2Bbyimt1POYiJhDhPBFBIiIEXhxfs7%2FdfYoIF%2BauBfYTE%2Fpebx%2FV8hqBP2ODvD34yvuh%2FWCAmU75Bx6sIgaI%2Fv5%2B6PV6JLqUsYr7dpDAoehs0h73pHTWrvKgThYbRSt9UmSjef3MpaUvBz4O72UmADgTOPJguGiZor%2B%2FHyUlJWBmJFz%2BD8xTtlUiOpbwpmrmrweeSXrT%2Bg11k4SBN3RGKUcAVCVdFhyP1nreDbY%2F%2FNPyEXUlU%2FPp4XYycGT6V0Ux2WwWdO7cOZSWlkII8diX7SPPNgDaKdbxoNAxwATBAEkEEgSWCEQAqPAMwqvMdCEwMO0tVqZpWsGTT58%2BDaPR%2BPhGIYQAAAgh0P7B3ioW%2FB0iGiCGiwXbCuOHFSJys6AbYFye2T%2BxWhT3WYJEIoH%2FDQBMw3kes8OJPgAAAABJRU5ErkJggg%3D%3D%29%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%20div%2Evis%2Dbutton%2Evis%2Dedit%2Evis%2Dedit%2Dmode%20%7Bbackground%2Dcolor%3A%20%23fcfcfc%3Bborder%3A%201px%20solid%20%23cccccc%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dconnect%20%7Bbackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w%2BCiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU%2BMjAxNC0wMi0wNFQxNDozODo1NyswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6Mzg6NTcrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjlmYjUwMDU0LWE3ODEtMWQ0OC05ZTllLTU2ZWQ5YzhlYjdjNjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2BY3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2Bc2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDo3ZWRhMjI0MC0yYTQxLTNlNDQtYWM2My1iNzNiYTE5OWI3Y2E8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6Mzg6NTcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjlmYjUwMDU0LWE3ODEtMWQ0OC05ZTllLTU2ZWQ5YzhlYjdjNjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0wNFQxNDozODo1NyswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjdlZGEyMjQwLTJhNDEtM2U0NC1hYzYzLWI3M2JhMTk5YjdjYTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz4ubxs%2BAAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAUtSURBVHjajJZ%2FbNT1Gcdfz%2FP53PV6B4W7VltLqdAaplIOiMOoyxxJCSs%2FGv%2FyB4gzJroAosmmDklwkYWR0bQsdmkykoojTpcsWYLxD%2FlRZdMQkTHRtkLZRqG0tIVe7662vTu43n32x%2FVKZ%2Fjh89cn38%2FzvN7P5%2Fl88zwf2blzJz6fDwARQUSm1n8s31CM0%2FVAnbNmsUPuAsDpgEO%2BBg4C7%2F%2Fiyv5hvmMiQiqVQpqamvB6vVNwEeG1JZtCBrYi%2FMrkAwDNgjhwAlbzICBLA0rDb0%2B%2F839C6XQaaWxspLCw8Dp86cbNmqVFJQddE6KzdjZ9D89g%2BB6fSyCOcyn1nxil%2BO9xKg5HqWFSHGXLjrP7W%2FICqVQK2bNnDz6fDxFh65KNvxbHDhF4rJj2bXPo%2BIGfcW5h5xL4f99P%2BFCEMIAob75x9t0dAMlkElNXV4e1lteXbNqiQoMaeOFOjrdU868SD2luYyEP6dUh%2BsYmSHeOU6GO5Z8VLx5%2BNNZxIpPJ5AS2L3upROCoCvz8Lo7vnkf77cAHhpiz%2FzIL9vWz8L8p%2FNvupmM0Q7pjnAoLqz8tDrc8MnQqYVUVhVdF4LEg7b%2BrvDn8wDDlH0WoPpukLJImSBaMwjcJqmwWts2jPZLG%2F8kwYVFeVdXXZcFf4yVDc2cNKfBFmD9X%2B0ncCP58F48eG%2BFeo2CAUkvs4dl0V%2FuJvdXLiiV%2But%2B%2Bn7YLSfxPfMMG54ChzB3WIesVWB2i82bw1AR6fJR7C4VsfYiv6u%2Fk3A9nEgP4zXke8DiYHyAOMK%2BQxPIgnZ9GqSHr1itQJ8DK2fTerDQ%2BS%2FbHRXQJaHSCwNIZ2Xh%2B7%2BS3VAmwNMBA%2FtuPZtErgKquUmdMWIFlRURvdamRNEXGwIWrlP47pTMzLiunxghGMwTLvcTWlHAp77s4QNSrYMQtss6ZMgWqCm5cHoDHO1nbk6K8zEN8%2B3zatv2Hn1b59EqJZdxmYUERg9P9KwpIiAOTdWUWBXuLzB%2FvZG3P1Un4PNp2d1MbmyD45TWCxuCsQm0x56bHGHFYEZwxok7toAA9Sfw3hCcoL%2FNOwi9QO5wmWO1j4JEgZxTkodmcWRGkf3pcX0r8xoAaBixKu4U5%2FxwndM%2B0tpAvS6mP%2BPZK2nb1UBvPEKwKMLDvPj4ESGc55lGy303sdJKQdZB2rkMdctAB%2F4gzN%2B%2FQ2ENNd4LyUi%2FxN%2BbTtquX2thk5nk4wI3gAF%2BOMNcA1nFQDfK%2BBY5GqbkwWabTY5QZhXWlnNx1ntrY1Rz87fuvw29m%2FSn8J%2BPUGAFj5T19baA1IspuBZp7cx1x4SwG1cEf%2BlgRSROs8jGwb%2BHt4QB%2FGSSsAhYano39LWIBxNEIbP14hPDuiyS2VtJuHXQlKKvxM%2FjiXDq%2FD%2FxPlwifGMkJZB2NIoKpr69nxeiZxLHicFSFVWfGqBidIP3LSjrWltD94CyufF%2F4kQgPuVz2Lz93%2BdDRa9eu5QQ8Hg8%2FiXee%2BDy4CKMs7xqn4nwKz9IirhQqmVuB42m8ey%2Bx7LMoD6iAON782eChhqmRuXfvXgKBAKqKqtI0%2F8nNKrQI4BVYXkzHgzPpC88gWuHL%2FcaXrhLoGiN0apSKr0ZZRBZM7q2w5ZnLR1oAnHOMjY0hra2tFBQUYIyZmstvVT1Z6eDlAuEVq7merxmwueNPDXy9PvybjKP5mctHLk4%2FXTKZRJqbm%2FH7%2FVNw1VyEMYbW4FN3WNWnnchKoy5sHeVGBRX6VWi3ymFx7r11Ix8MTX%2Fy5C2RSPC%2FAQB61erowbpqSwAAAABJRU5ErkJggg%3D%3D%29%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Ddelete%20%7Bbackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w%2BCiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU%2BMjAxNC0wMi0wNFQxNDo0MTowNCswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6NDE6MDQrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjc3NDkzYmUxLTEyZGItOTg0NC1iNDYyLTg2NGVmNGIzMzM3MTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2BY3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2Bc2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDowNmE3NWYwMy04MDdhLWUzNGYtYjk1Zi1jZGU2MjM0Mzg4OGY8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6NDE6MDQrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjc3NDkzYmUxLTEyZGItOTg0NC1iNDYyLTg2NGVmNGIzMzM3MTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0wNFQxNDo0MTowNCswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjA2YTc1ZjAzLTgwN2EtZTM0Zi1iOTVmLWNkZTYyMzQzODg4Zjwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz4aYJzYAAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYGSURBVHjalJZ7UJTnFcZ%2F73m%2F72PdJY1RbhoQp6lkXRAvmIYxdCUadLVOozPNtGObap1JsKipjiShbdoRbeKEiQHpQK3xj0xa03aamTbaTGyAYV1QGeqFi%2BJyiZFLAlmESBkWRmS3fyzslGkmnZ5%2Fv%2FM873Oe75zzvqqoqAibzQaAiKCUAkApRdHIK%2FNFsx2NR91nOSILADDoJyzNaM4xxbtvPHh0iC%2BJiYkJ1OHDh4mJiUEpFSXPv%2FziPC28TIiXDCOSrAClQDSEpsCwJPIhrEBRQpiSytXlQwDhcBilFPfu3UMVFxdjt9ujFTzfcLBADCoEEAFr1ZbrrNjch2vtEImPBgHob7fTcWE%2BbVXJNJ%2FNiFQlEGLvieXHKmYqGB8fRx05cgSbzYaIsPvywV8pKFaA7fGtLTzz61YWpo%2FxVTHQbufsq5lcez9zWuWhk5mvFwMEg0H0%2BvXrMU2Tn1wp3CtCiQ5DjGd3A%2Fm%2Fv8IDCZP8r4iNmyRrWx%2Fj%2F5qktykZpXKzAjVDVxPzGqemptDr1q1jX3NRnIJarcDKK2hgR2ULXRfncv7UYv7xpovhnhiW5Mz%2BkefeSKO6LJ1A1xzEuk%2FOjm4mRibpuZaMZW3OCtRUND60NmiICCIUShisx7a2sLMiQn4s77uEQgIabnqdfHIlgT1%2FqQeg8vs5dHhdCNB1wYn3RIiC995j26stjAbsNH%2BYiZJCESnS1Y%2FXxIXu8r4YIPv%2FVkVs3CTnTy2ms34xro1%2Bsp9po6sxlTu34ultmsPVvy6is86FCHgO%2BDDs49zpjufBpCG%2BseYOC9OHaTidieicb9ouVAhKtouAseI710ma7pLuqwmgYfHqAFt%2B6WdLoQ%2FLBl11Lm7VudAa8vb72PCin9TlAWIsGGhLACD%2BkSAZnusYBii1XQAPYWDllt6ov2lrBkDBR2%2B6Ofuak2%2F%2F3M%2BG%2FT4wAAPW7fPhKfRTVeqk9qQbFKRmDUTxS3N7QYGYmwzCkqklBGlPDEcTNv%2Bsg9tNCbTXuvBWujE0bHrZj9JE1B%2FwU1Pm5PwJN6YBS9a2kVvQEcWnrh5GTFD3lxkYkqRMgYQlwVldUvDnen73LHTUuqitdKM0eAr9AFQfd1J%2Fyo2aJn%2B2sn4Wdn5qEFODJskgBIjx5T0uCrQA08pnIjS9PERDjPnfOKXAMEBECUoGEIHBj%2B2zkt76UQ6dXheGAev3%2Bcg74Kf6uJPqcicbfuond7cPy4SOiy7%2BtD9nFvZurx00KOk3CNEC%2BmE%2BvjSPBc7IWqgqTaPT60IMcO%2FxsXGa3HfKjRgRdbl7%2FKDg0jtubje6aHj7c7J3dgLQ2zoPwwQ91SooOQdAW1VKVMHty0kA5Bb48BycJn%2FLjWFGbLv4thvvb53kFvjJ%2BXEdWkPfjQVR%2FCcNKYgGMc8JWt5Fa2j%2BMIPPuyI2pa4IoHSkt6vLIuRaQ9q32khzt4GCxtNu6k46GeiIR2lIfDQQsafPzq1LGRGL9Gk9d%2BvrwewvfHPQOoexQVjxdB%2Fauk%2FzmaUMdsfz6bVUtIalT7bxveP1ZHh6GPDPYeSzeD69kcpIfxymFWLNrka%2BljhBTWkWwz2JiJT84YHnz2iPx0P20PkmRF5i6HYiwZFJsn%2FYzdezbzE3cQibY5xV266z6RfXohakb%2BxB9CjanCD9qTbW7Grk4WV38VZm0l6dhQiEw9taHSuDqrS0FIfDwXM3X9mHMsvRAk%2FsauDpQy38P%2BGtzOTGB9mEpkD0C2dS8n8zOjqK9ng8WJZFU%2BJTjasGvaCNXPpvJBPoMlm0OoDNMfWVxONfWNSUPUZ7TUQ56tCZlPwSgMnJSVRpaSmxsbFE1raw82ZxAZZRQUiBYUKGp5UlOX2krBzmoUVjiIKhHge9rfPo%2BWcy3ZeXIYASgL1%2FX5RfMXMvj46OosrLy7HZbGitUUohIuzoem0RofALaOsghgWGjky0MiJTL8b0lOvI8hN1DKXKP0jd3TNTWDgcJhgMoo4ePYrD4Yi%2BKmaeLlprnrtXFo9h%2FAAlG1AqE8yFmBrC%2BjO0bgH9EVpO%2F1F2Dc5g%2F%2FOAsbEx%2Fj0Af%2BUSsQynL1UAAAAASUVORK5CYII%3D%29%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dlabel%2Cdiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%20div%2Evis%2Dlabel%20%7Bmargin%3A%200%200%200%2023px%3Bline%2Dheight%3A%2025px%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dseparator%2Dline%20%7Bfloat%3Aleft%3Bdisplay%3Ainline%2Dblock%3Bwidth%3A1px%3Bheight%3A21px%3Bbackground%2Dcolor%3A%20%23bdbdbd%3Bmargin%3A%200px%207px%200%2015px%3B%20%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%20%7Bwidth%3A34px%3Bheight%3A34px%3B%2Dmoz%2Dborder%2Dradius%3A%2017px%3Bborder%2Dradius%3A%2017px%3Bposition%3Aabsolute%3Bdisplay%3Ainline%2Dblock%3Bbackground%2Dposition%3A%202px%202px%3Bbackground%2Drepeat%3Ano%2Drepeat%3Bcursor%3A%20pointer%3B%2Dwebkit%2Dtouch%2Dcallout%3A%20none%3B%2Dwebkit%2Duser%2Dselect%3A%20none%3B%2Dkhtml%2Duser%2Dselect%3A%20none%3B%2Dmoz%2Duser%2Dselect%3A%20none%3B%2Dms%2Duser%2Dselect%3A%20none%3Buser%2Dselect%3A%20none%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%3Ahover%20%7Bbox%2Dshadow%3A%200%200%203px%203px%20rgba%2856%2C%20207%2C%2021%2C%200%2E30%29%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%3Aactive%20%7Bbox%2Dshadow%3A%200%200%201px%203px%20rgba%2856%2C%20207%2C%2021%2C%200%2E95%29%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2Dup%20%7Bbackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABphJREFUeNqcV2twU9cR%2FnbPlVTHxpKRbNnBLyEbPyJisLEcPwgwUMKQtjNJAzNJZkgNNJOmJaZAaDKlxaXDTIBAcJtOOzSYKSkdiimhAdIMjyT4bYgBYxA2BgcUQPLrCiGDR4qt2x%2ByXTASFt1%2F957d7zt3z3d39xDCMQWUfgAz%2FRI%2FT4pSTAJpAGL8rECAXX7QFQGq9wOHOxYO1oCgjAdJj1wtB095Giv9TFuZAIWHAziATMPhTAwiHgUkYPXFJu92lMP%2F2MTpB1AKUCVEgNAcleUo1M%2B2F8TO6crSTncb1QleAOj2OTSX3Ge1p%2BVa42m5JrnzbnsCE8Ov%2BEHgpa0LPLvCJjZ%2FwhuIlN8wAcXG%2Be1LUn9hm238QU84p1Ld83nsXvuO7Lq%2BLzKYGAT6%2Fdn58m%2FHJTYf4O3EShkT8Irpzab1Uz9sGevT5%2BtWn%2Bj6NB4A5hp%2F5NSr43xjfd5rW5tT9e3OAhCBiCua5%2FWsDEls%2FhdvYklZSwDefmrT8eXmtzuDkb5YZ33p9ndylICAVjWxf39xw%2F5g5Luv%2F9H84ZWNcwNEypZT87rXjqyJB85UYDMJYN3U7UdLJ6%2F6JlgqV517teRqf9uTlug8e1zEk27HgD22o98WsTBh8fWxvjm6ApdONbGvse8LM5NUPOm1Cfabuz3nACAgxX0QEFTJAnjNvLJ%2BSepb14KRHnN%2BEv%2B1XJOhZs3Qu1mbG97J2NQgsXroa1dtxrGuf8cHi1mUtPTay0lv1DMJSCRVLtoX%2BFgGgDQNysBAcez89l9nbbsQSji7rlXkEhjPxb%2FQatHOcFu0M9zz419oFSRhj%2F3PuaHiyqasv1Con9NGxHAYUsoCxAqImbYSgCWmFbZQwdsur7N0eC4m6tT6%2FjUZ750Zeb82c%2BOZGLWh%2F2p%2FW%2BKfrmy0hIp%2FaVKpTSIJEqu2QgFx2iE8CwDp0RbH7Ljng%2F4yXr%2BXT3QdyhYsodS0slGr0g2OrEUK7eCrKW82SqzCVz3%2Fyfb6vRwM4xn9rN7JkRkOQRLmfJn2LBPxQjDBqp9lD7XbX7X8pKTP160zR2bdeiX5jYeU%2FnLSTztNkem3XL5eXbltRUkonBxdgZ2IIUmahUxERQSCVT%2BrK5hzQ89xQ6P8VaaK1f5VmRvqQ4G%2Blba%2Bnlnlb5brMhvlk7FBiaPzuwQEmEQhg5BOxMjWTncHc2501cQLkjDTsMCWpyuRQxFP0xXIJfp5FyVW4Zy7KajC06ItbiIGg6ZITBxDxIgbrr1jTSM0fibGIHz8O9sKK0GAibEua9spANh4aY2VmcEg%2BDEkiBgR%2FL2hYFgGtcErkQQAMVJgBxyy9hboZzv32v%2BKpr7qbEECTAIMAoaJa3qPTmNiiAAgJAjk6J5xhu6HDAIgQYGLmI29PocmMcI8MNYvT1ckfzD9H%2Fub5br4e4Me9WfOKqtyX6Ud2cwC449PRamifDm6Auc0rTXokci%2BXo1EAgBckiDuYGLjpTvntcGIA%2BSFcp6uUAaAI879VhWrRteYAqn%2Fedq758brXJ1327QMhgJcZjA3EBjNrgZjOG1PkAjyTGENMjZPq5ECQ0MDE9ERBqFZrk0OJ3i4x%2F7vyIjBxGERt3takgVJEAp9xq3f769WiPDNvSsJdT3HDOEASPelmoBRYT3Kzt5uMtwauJEgSOCpwrk1DIJCoNUMwj9v7MweP9XSQ8%2FhJPp496fZTAICvLqcyv2B7nRbrgCA03JN5h8ub7A8VqpB437xHvsOy3l3cyaB4L2uqxhti1WLMcSgZQCw7%2BbOooO3Pk4JBZIYYXISMV5sKH59UePM10GESRGpIf%2FbE92HU452HywSJIGIllctrhp6YAK5%2BfHds0lLtJFMXNwkV6fFqA29mROefqiMJj1h6um4a5vY%2F92dKGaBxIhU5zJTWW2cJmEgGOmeb3c8FxAfb9mdf2RzyGGv5MvU7QwuEySwKHFp%2Fc%2FM71zA%2F2F7b1RajnYdLAqMukMVu2YcfmDYE2MD7H%2B7%2FXlq6cRIJqm4zXM%2Bqd3TGjVBir43KSLlXjiELe5TsX%2B3%2FyW%2FST45PaAHbKmccWh12AP93JNZywj0kSABIobpiXRHjtZ6faout2tyZMadGLXBCxBcvl6NfaAz%2BtKdFmObpzWl2%2BtIIBACYy0t%2Fyj34M7HvsKUK%2BCGassvicX7alYDwwq%2BvykIEqPVa%2BQ9gdYk5%2BV%2BUE7lj3%2BFGbuBM%2FX5JUT8QwIVSSSZiTgmoFR2MfiqYFFPfjpkyrfWPopwxP47AP1pK1g9%2FdqeAAAAAElFTkSuQmCC%29%3Bbottom%3A50px%3Bleft%3A55px%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2Ddown%20%7Bbackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABpdJREFUeNqcV21QlNcVfp5zX9ikoAvLEsAIIgsoHwpqWAQUNKLNaNv8iZ1JMkNG6%2FQj%2FdDUyCSTtCHpmEkwVk3TToZRMjXj5MOG2KidjIkxQYSAQUAtX6IgIN8su8KCoOzbH4sk4q5g77%2F33uee555z7rnneYmZDB2MKcJKlyYbqOsZVIgGEOgSHQoy4AKbFFjqAo5dWn%2FrNAh9OpO852oeJHYxtrmEu4WALhMbxG2ZE9uFAlImDRLY%2Ft%2Fy0b3Ig%2Bu%2BiWOKsAlgIZSb0OIf15kWtKo1NXh1d5xxiSPEN2wUAHrGOg11jirjWVtJyFnb6YgrzoYwocClu0DI5guPDb43Y2LLp%2FIaqf9JCGSErGvIifxd7aqQn%2FTOJCvFvZ8Hf9haEH%2Bm%2F6sFQgHBv1Sts%2F15WmJLkeyl6FuFwFPzny1%2FZdE7Nfg%2Fxhv1uUmH2w6kggQp%2Byqze7d5JbZ8Im%2BKpucSwI6EN7%2FcYtlxZarBCts3ptfrtq9odjaGKihE%2BsV0vRC3u8RqWmmbij149W%2BWd5p2rnET6bsqsntyb6%2BpO3KqkE8FvLxo74lNUX9s9uTJb8%2F9fG2L81KoogJFYfCm3b9usNq0MXxzw1RsUkDqQICPqf%2Fb%2Fq8sQi3j4WdmtV47OFgNAO6r%2BDEUFAtFAc9YtpXmRP6hxVsI24cvhyoqnFtrK6jM7isgBa3Dl0O94TeGb255MvzXpUIFjVrhxo%2FdzgoARBuwFQJkBK9reCnurxfvXX8CRW3yW1G749vT2Br7ysW0oNX1pKDTPG%2Brm1gHRbibAHLm%2F7522sKnQCZqFgCUaBCqaS%2FbEw9vqtWoQROf3dBBiT6KTACImZ3YueqhDdOWjDbFQ4IzIl4elNUX5begU1HD6lPRmULKeghhDcpqnUmZuD3%2BnkgTH6gZEE9ctlZSoGmG9UIynSCsQVndMyX%2BIZGiBoHMjHh2SreCglClaSBiSEG8cYnD24bv7CWms%2F3FocO3hnw13plTggAFb196NdlPM44tC0zrSg5ItXmyEz070UEKCMRqQgkkBQ9NvL2eSJ%2BrevoJTORSpoT6do4%2F7%2F7UShBFHQexM%2BHdfyUHWO8iN%2FuaRzX3%2FQjUSLlnqM72F4cCRIY5u9Zf%2BY%2BBAv4AvzpkQ7WAIBRujA%2F7Vg6cia9xlId6InafVEAAGnQMUCSkb6zTMPdBy8hU3JjrphIq%2BCrD%2BMvxeyumrr%2B4IH9y7o2GF5eDghuuGx4L2zbWZ9Dc0RoQRbkkFNRdP2%2F0BH7EtLJLKCjr%2Bzqh2l5u8haZ847vTBW24kRFQXKAtcsT5oqz3igQENIoECkjBJUDZSGewBlBj%2FammjLrdX1c%2Ft70ero34gMte9IByLLAjPrUwKweT5jawQshdIuGMiF5XEBU2koivBl9NeEfJeYHwuxtI81zPrn2z6ip60c6DkV1jLTOCTaE2HNjd5Z4s9MwWBOhqEHp%2FI9cWDtUrJNoHm4KO9P7hdnTBoMYXI8Gb6gVCg63FS53jg9O5tA57tSOdHywnCAygrJrfcTgUe5U2cvNHSPtYYoKCWlrTgsIneB2AfFR%2B4F4b6f9ZdTzF6P8Ytud407%2Fdy%2FnL7k9X9i8J9l5y%2BEf6RfbnjPvWa8N5suez%2BKFCgqyPY95Lnd3stv2AcBZ2%2BmFbze%2Blui1xc3dXCUUlPafXNx4%2FaKxcajWWNp%2FMklRw8%2FmPFntbd%2Bh1oLE847KhQQxejVg36QQqD0MPTzHv42Ux%2BuGasJNBnPfwllJd71kkX7RQ3WDNf7dox3BLcNNs6vt34bbbvYHJhlTGp6O%2BJVHb0%2F2HJtX1PH%2BaqECqG%2F5YN1nlXcokGvvO6vCc4x%2BQskotxVHB%2Fqa%2BxbOWuzw8NB3nuo%2BHt0z2hHsuGU3GrWAoZfi3jrxgHpw3BPpobaCH7vbqOw6mHI836vYW3Eqcq9AtioqbJy7ufQ3lhfu8sR%2Bs9%2B3vL8klACsQSu7AnxMY1MxH7YXJp7oPpLulrrj%2B9575Ni2aeVt1teWfEWfHQLCaspseHzOU7VWU%2BaM5G2NoyL4i%2B6j8XWDNQsmGsKu%2Fcv%2BnTtjQb%2Fmm7hfENyvqEAK5v8opjPJaL26KGBpd5TfguuBvuZRgBgY6zO0jlyZXXe9JqR%2B8MK8ntHOMHfHIkhu2b%2F0yIH7%2FoXJ0yFlxYnPUdRbvuILgO7%2By%2B91l6Ka6M%2BcnCf4fMSypXvymHf%2FvzBTD3CuNGUFKT8lmK5Rs5ASqKiBlAGBXFaiSuni0fkp1pJ7Ed4e%2FxsAqLk46EWsG1EAAAAASUVORK5CYII%3D%29%3Bbottom%3A10px%3Bleft%3A55px%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2Dleft%20%7Bbackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABt5JREFUeNqsl2lUlOcVx%2F%2F3Pi9DZRsGBgYiS2RYBQKIjAhEJW4pNrXNMbZpWtTGNkttYmJMG5soSZckRk%2B0p%2BdYPYY0Gk0ihlhRj63GhVUgBhDD5oIOy8AAMwzD4lCYtx%2BGqCQKuNyP7%2FPc%2B3u2%2B7%2F3JUzEZFBYLh62S7yIZDmVBEIBqOwsQ4DNdtBFASq2A4cuZAwVgCCPF5LGHM0Chz%2BE1XamzUyAzCMO7IhMI%2B5MDCK%2BHpCANd%2BU2rYgC%2FY7BoflYgVA2RAOoNYtyjDTe45%2Bhk96e5QywaJR%2BNsAwDhocK61VCjLTYWaclNB0OW%2Ben8mhl22g8C%2Frn7U%2BuGEwdov%2BC0i%2BQ0mIFWzoD7zwVU1czQ%2F6pjIreR3HPX5VL9jalHXiQgmBoH%2BXLHAtH5csDaXtxDLLzIBv5jyfOmG2H9U4S7snbpX43KaPpgBIhDx1rPzOlbfPC5GQT%2Fnd1mS1zABa6PfPf5y5F%2FrcJeWpp7fPkly6f7KXBRCoOSATFfXll19x74HDsvFCghsJAG8HrvlvytCXm7EPVqc5wyzp5NX15muE1omKXXyMnd9yy5r5Q3wPghvJzrLAlimXV38%2B7D1DbhPFq1M6O4b6rPVWKsCBfHi5EWWv9TkQBYAEPpLvERMC9N8FtRvjt9dPl6wwo5jPvuas7WV5jNqEjz8wA%2BCBsaan%2Bw9x1hrrXJtuaZX97ooLfqPLCUEGRR%2BiOwAsF2X98Uc30W3fb02u41frVqeVmo6FUkkwCAwCWxJ2Ls%2F0TPFNBb8TNdp9WvnVz4OAKdmX2QOzcMsAAjziDGMBd3asCF6SXHyknJTfqQTK%2BzpvhnVKT5zawCgzFTgN94pJXvP7gxxjTAIkpB%2BMnSWRMQZYEDnPVt%2FK4ejbZ%2F77726Lb6h95tAAiPELaJ1bcTbRfGeM8xv1azWSeyEa0P9igk%2BNr1%2BoNFfkpwzJCJKIQA679ntN08yDXYo3qh%2BLuUrc0E4EcNL4dP7VNDzpU8FP3vpekoQQ5CEw4bPdEfa9%2BsAgEZUmkmAAAS5hLQ9p11XGO%2BpM8V5JLUfMeQARDMlEMKIGFOVCZYb0C7Fz0oeXmIZ6nZzYoV9od%2FjVS%2BGbahUOnn9b7T6sEOviUGyA8bMDlUa0W79wBW%2FbZf%2BlrY98cDBUI8YCxGDgHCJiVVEDN8R7QWAE8Z%2F%2B1mGut2i3eP1r0S%2BXRztkdBzq6NbF7WpbF3UprKxjvfHxbrfttla%2FQBArVDbJJIAQCURMRg8ugrKIAKBSNxzHtN3VdmxY0iQYSZmTeegwTlgknYAAB7RZBh2Nm7urbeeC1r19ROT52kWn3shfH2Fu1AO3RxjY%2F0fdac7%2FhPPJMDE11GC%2BHpBJmIEuAS3Oa6w01lybMbMgvgCE6O255zy24DeCr%2FBvckn9%2Bu8ZjXYIYvjxoMJy8oeXZrT9GHIqMWTwA2oI6cFMeDIcAiSEOyibXsmZG0hAFzuq1OyY6xBAnMJgdPOmks08zU%2FbbsB9x18P37PqS%2Fb8%2Bo%2Fa96ZcLm3PmBH46Z5x40HW1eFvl4Uq0w0MwiCBOb7%2FqTsd6GvVY537DXWas1Iw1AiNJnOgwJi%2BbXhAbE08OnvaXSIW0TvYw88eaF%2FuM%2FWNdju3m5r9TlhPBzVNNDoPGC%2F5tRma%2FGJ80xqjPPUjVuvP2narrMOWd1Jlv%2FE1fN782UiNPZf9C%2FqOKa%2BndOz2j%2Bcz046sn%2B6KrVOsODirpOxld0lUxmEBK%2FktvGgFd2l6taBZn9BAtEz5xYIvAn4%2F8rFKkgstAyZ6Yf%2BS67ezlkiSU73XXRV6xqh93TyssR4JF75efBvymLdE03jgT%2FWb5tutLWpGbTm7wHZxQQAT%2ByDuKLyHRIk4cnAZ4pfCF9%2FHvfR9uh3xBxtz00BANsVDylnac6wAICaHMiBmW5NRLy4trcq0MtZ3RnpHme5H9AvjYeCc1t3pzMJgOSVnyw4eHZUB9Kyu68iMFPpysSppab8UJVC3Rnp%2FpDlXqF7mnYsdKQbv7cr6fDGW%2FZczbt6jgUtV6kIlFxuyg%2FtH%2B6zJXmlGe8G%2BmlzdsyB1j3pTAwZ9q3%2FSspbc9tmDwD0H3UffXCFlyuTlFpnPRdYb612c5c8%2BidPCu6fCLDKUubzsf6fSaWm0wmO9hbvZU8fDR2zoZ97OuppAu0UJEDEmOISZohT6q7Gek5rD3GN6FEp1DaAYB7sdNYPXPao7anS1Fmrg402g7%2BjYhGIaOXOaQc%2BuONfmCwZXJIf8xKx2KRgxYgOS%2BCROuyoyQKCxIhkOr4T6JWgxGnvZ1HWnf%2FCfHcBXxcnpRHxYwRKkUjSErFKkAQiNjP4kmBRTHbKm5KkKxwL%2BK39fwDX1XGF8ct%2B%2BQAAAABJRU5ErkJggg%3D%3D%29%3Bbottom%3A10px%3Bleft%3A15px%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2Dright%20%7Bbackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABs1JREFUeNqsl3tQlOcVxp9z3m%2BXygK7C4sLxkW5o4CAkYssFSkRjabjJEOSJm1IbZx2krapiZdeprW0NVVJ0pqMM0kYJQlqkoZImGioE1ItiCAgIsFwE4Es99vCslwChf36xy5EW1A0Pn9%2B73fO772e93kJC5EMCszFd20SbyFZNpJAAACtjWUI8KAN1CRAJTbg9LXNU%2BdBkG%2BXkm7Zmg4OWoUdNqZXmQCZHQFsz0yOcCYGEc8mJGDnl2UTh5AO2x2DA3OxDaAsCDvQ32VF11qP9aZYz6SeFeooi17pPQEAvZNdTnWWKnWFuVhfYT7v0zza4M3EsMk2EPgnNZusby8Y7P8x%2F5lI%2FgMTYNSnNKQt%2F0Xtev1DfQtZlaK%2BM54fmDJXXhg4G8zEINBfqlLMe28L9s%2FlQ8Tyr5iAJ32fK%2Ftj%2BOFq3IUO1O%2BJyGk7GgsiEPFrlQ%2F07bixXdwEPckHWZJ3MgG7Qw9%2B%2FmLIS%2FW4SyXoNvQskpyHLg1e8CNQ3NI0laoje7Tg%2F8CBudgGgQwSwO%2FDD322ze%2FFFnxLRWhiBzUK94GLA2f9mSTjfU%2B7mjqyrVe%2BAX8I4aGgShbA0%2F47Sn4ZuLcR90ih6qih0anRiVprtUEQb43bYtlXmwNZAEDAj%2FACMW1M8ExpeDXyWMVCEl4yF7vntR%2FzLeov8JJlWfZR%2BY3N92%2Bcx%2FreOmu1quNrk27EWW0xvWspJcigoNNkA4C3Yk59vH7xltvu3ktDxe7PX34ilQCQfeci1j2xfn94ZrGCneY8uxcHCnW%2Fvbr9EQD4d2ITc8AprAOAQLewroVAAaB8oMiLiRHvmVy7znNTjWCFrXKoJOSHFQ%2BkvnF9f%2Bjco07s91MFdwmSkHQuYB0T8WYwIcYj0bTQdRufGlFKJMFVaCb%2FGvZW6aGI4yeXOwd2mr%2Fu05zsyDY%2BW5X64Nm%2BfO85NpuJiCFJTpslIoonADEeiT2zIzIXuh%2Bo25PQNtbsNVMOBUn2g08MiSTHN3uZjNTEDr4dnX%2F6H%2B1H%2FXPasmKvW%2BsMGfW%2FMXzende4K3h%2FibvSYxIAItyie%2FK7cgCitQxCIBFjpTrKMgM%2BWPfrhLbxFi9iMQtlYjAJSCSBSYBAIPBNI3p86TPXj8bk56R4PVylFE626uFLQc9efiTVPDmgBIAAtzALEYNBQRITa4kYix21FwBax655CVagPLk7806Pj1qo%2F7MraF%2FFQ14%2FaMhszYhvGqn3KTef89rklWrSKXUTkn3mtJK9Bzf3XJA0e%2FPcrdgxIwSCDPmbZMQgABJkDBKzvn%2Byy2npIv9xAPB1Ceo2jTZ7Gc8afipIgEhAkACDwcSQQZBIIGnx5it7gg%2BU3wgcnbZKR1r%2BFnW%2Bv2DVtDwtXCXNSKz797oAwDzZ7ySRAIBBFsTXmBh1w1%2BoZ4J3h%2Bwv9lUFdbMDOrO%2B5IAqWIGZthuV13nC77nKRx8r7PssyibLIkoT1%2Fh65HsfzWyu5tF6NYNB4EYJzKUETqgcLNVv0D%2FcDQBrNAnm9%2BLOfTLfNB5u2hf5z%2B6TMexYji%2BtVdrM5leMbWOtSwQx%2FF1C2rcuebIqwSO568a4WmuN3mEYSiUi%2BpRl2l1pLvYBsKArUKVwnZRYgdHpMWVG4%2B%2FWXhwoDBXE7OmkHzJ6JNemLfv51bniGqzVPoIkyLbpfK7ZMFIkE6FlrMn7Ql%2BBbiHg%2BzXGbgLjylDpyosD58KZmKM0cfWHI9%2F%2FaD5o1VCZrnO83VuQQOja5PMCfwK8n3K2ChIbLVOD9KB36le3A%2Bu%2Fs2Q81C2yRavQmQNdVnamLnmq4nHD9jpB0rwm77jpjTW9E906Bu18fWlWCQHAox9CtGoXTwmS8IThZyXPB%2B29inuoE6bMsDM9ufEAMNHqJuU8ljMtAKA2B7IhzaWNiLfWjVQb3J10%2FSGuEZZ7Af1X7%2BlluZ3HkpgEQPL291M%2BqbzJgXQcG60ypKlVTGwsMxcFaJW6%2FhDXVZZvCz3RlrmRiQHwy9nRn2bM6bnas4cLfH6s1RIorsJcFDA2PToR7Z7QezfQD9qzwvI6TyTZC47ttXeiT%2B2c1%2BwBgOndoTPLt7mrmCRjvfULQ4O1xsVVchu7b9GysYUAqy3lnsdNb0aXmQuj7PYWL2etuRl6S0OfXLjiGQIdEY6K5esc2BWhjvkqXLO6x08VPKxV6iYAwuBkv5NpvNmtbrhaX2%2BtWdY70eVNINhtLW0%2Fsjrv6B0%2FYdJlcGlR2AvE4hUlKwHQ7BU5cz8LRx0HaPY7gXb53L%2F67%2BmUfudPmP%2FtwOWS6AQi%2Fj6B4iWS%2FIlYK%2ByGYJDB1wWLErLRKd%2FomOJbAWf03wEAyO9m%2B%2FTtS3AAAAAASUVORK5CYII%3D%29%3Bbottom%3A10px%3Bleft%3A95px%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2DzoomIn%20%7Bbackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABiBJREFUeNqkV2tQlOcVfp7zvgvDRe66y8htXUBR1GoFI%2BBtFJvRtjPJBGeaH2a8DGmbttgSTWbSJEw6TWOsrbbpTIeJZGqaTipTa6LJZDTVUTYQdNAohoso6qLucnERN0Axcb%2F8%2BHaJUHDX9Pz6vnnPe57vXJ5zzkeEIwaYcwBL%2FVrW0TCKqZANINEvBhSk3w9eUmC9HzjcsfarOhBGKJN84GkVJHcetvqFu4SAIYELYlpm4LpQQMqoQQKVnzeO7EYV%2FA8NnHMAGwHWQJmAjtg895LkFa7FU1d258UvGLBGpI4AQM9dd2TrwNn4016n9bS3LqNzsD1VKPAbfhCyqflR31thAzv%2BLa%2BQxotCoNi6pn1D1s9aVli%2F3xtOVk72fjT1XVf17E9uHZspFBD8zdk13pdCAjsOyG6KUSEEnrT%2FtPHluW%2Bcw7eQ19q2z6%2Ft2rsYJEjZ07S6d%2BukwI5%2FyQ7RxnYC2DZnx8dbHNs6xxs85T2R9GprZcmVwYs2BYWsmBzP83m7nIVJS73jdfdd%2B7PjjUu%2FXWUCGTtPre7ZHjxTY3Kq8DoV8Ou5u49snPGrKxN58syZ9aVXBztsigoUBd%2BXt2NbfZ8llaVvah%2BvOz9hcX%2BCJenWp7eOOYS6ePpTU1w39vk%2BAwCzFPdDQbFGFPCUY2v9hqxfXJ0shNeHLtsUFc6UequbVvdVkwLX0GXbZPpl6Zuu%2Fij9x%2FVCBU1dU7bfdFYAIDsSFRCgeOqa9hfy%2FnDhwfwTKOrRd0U95n0iqch9%2BcKS5JVtpMCdkllhAhugCHcRwAb7z1tCEp8CCXAWAJRoCFXIYnti%2BsYWTQ0tll0wQMk%2BhGUAkBOX714xbV1IyuhxHhIMC%2FiR5OV9M2JmuhU1Vh7PXiakrIUQhcnLXeHQxPT4GyAtFqgwgAPF5iIFWkeu1SSLCKAweXn3%2FZR5rXV7SddQpy3YDoNems9qTI5hGCitm1MOAAx0aaFCerTd84zjBed3Egq9ADA%2FrqD7Q3ctQC4REDmkYHb8goGgsR2tz5V0DV%2BxUdQoqAQ81RybU4IgFWgACgpaLLCIBUo0bv63y%2FaXy6%2BWBHWz4%2FIHSIGAuVooiaRgWqD3AsDVoQ6bEgtOrfJUhwrf0WUtk%2Br8sL6wvHvk5ijVUiJSRrQZuURtfoGMuaCoRyfP%2FyMy0XykgAA0DPRTxNp31x2ZFuUYBgB7bK7HNdhpKz6WXq6oQCooKghMKhkgji77vBoA1jkXlAvVfRQjFMUcmxSkRWd6gpjeu32R2kxTvyhKh1DQeud8fFBh26zfOe0xuR4JgAbzywCoRSzfeDUKatJKUQK%2BCjKiHZ6nZ2xzBnU7B9vixTy7qCHSQEhJU3%2BDtdT6mAcAFiWUeP%2FxyPH3Jwrfo3XzysemRcEA8F5RY8h6aPE1WwMLQ4OQ%2FEBANHmdGWHlzZyxk3ayB0m771yGooYy%2BKE0l35x0iBxZehS6ie9R1PCMaDvCzWDXA4hZ283ptwcvp6qqDBnyao6AWEQrBQQ%2F7y%2Bd3YoA%2BNBTAaElo973p8tVFCQyipW%2Bc3pdNu7BwBOe%2Btm%2FeniK%2FkPFWowpMfvuKrzzw80zSKIkWsJe0bHYu163BNwMwDsv7G36ODNtzMnM5IWZfeQgscbisvLPl1aDhLTo7I8k%2Bn%2Fp%2Bdw5pGeg0WKGiS31K6vvTdmA7nx9uDZ9A3xMUIpbvSezE6MSOmbNWXewHhD6dH23o7BlqQvvrwTK6KQFpXl2WyvcE6LTB2eCPSdrurvmcUnO%2FcVfPD6pMteyfGs3QKpUFQoS9tU%2FxPH8xe%2BTdd693pN%2FpHug0Xmqntvz1uLDo9Z9v5nnrn%2BdvujrI1JMUJd3OY7n97ua46douOGpkdlDoUDeG7g1NS%2Fu%2F5a0Og9scCsB%2BysWXSoMuyFftWJvM0E31SBjmWPznHPjy%2B8NjdhYfeMmJl3EiNSRgCi%2F25fpGu4M671zjlrm685s2fEnUoQ5lrLLW8uPLj3oX9hqgxIw8n8X1LU7yMkItCHzREZrGQV6ONmy5TggHk247sL%2F1jFqof%2FhRn%2FAWfqC0pI%2BQHBIk3tICXRrFTpF8hlJaqefh6yFxQ6HwQYlK8HAKyt3WsWxl7fAAAAAElFTkSuQmCC%29%3Bbottom%3A10px%3Bright%3A15px%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2DzoomOut%20%7Bbackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABV5JREFUeNq0l2tQVVUYht%2F3W%2FvACMr16IFRQDiAgChpgiikMqY1WjnN9KsfGOXYTOVgkvbDUsZuXrK0qZmGUSvNspjI8TZOmo6AGBoZYly8YB6Qw80DBwQ6jJ3dj30OZZmiwvtv77XW96y91l7v9y1iMNLBuCI84tZkIXU9gwqxAILdokNBOtzgJQWWuYEDFxfcLAGh3y0k79iaD4mfjOVu4WYhoItngBiR6RkuFJAyEJBA3m%2Flri3Ih%2FuewXFFyAG4A8oAWkcm2meEzrFNH53Vkhg4xWnxCXcBQGu%2F3bfGeTbwjKPUcsZRElnfUxcuFLh1Nwh5vurx7s8GDbZ%2BL%2BtI%2FU0hkGGZX5c9%2FpXqOZYn2gazK8Vth0fvsRUknbx%2BbIJQQPCts%2FMda%2B4KthbJFoqeKwSejX6pfO2kjytxH1pfuyqlsGH7dJAgZWvFo23L%2F9muboF%2BJxtE0%2FOEwMqJG46uSHinFvepTPO8lhGaX%2BfPHSdjCKaPy%2Fb3v7az58h%2FwHFFyIHCRirgjUlbfsiJWXEFD6iUoOkdQaaQ6z9dP2YVahljF4%2ByXdvZ%2Fevf4G%2BhQk2sEAUsti4vWxa35gKGSBMDp3T23OxxVXdXRijKovSFzrerC6ELAMT6IhcCZIyeX7c68YPzGGLlxq89PyM0q5YU2M1RuQAg0EERbiaA7Ohl1RgmPTM2p1qjBk1Mm6GDErsfswAgLiDZPmfMwrbhAqeHzm6P8Z9gV9SQdTx2lpCyAEKkhc62YZiVEjTdRgo0zXeBRnImAaSFzm7xdjjtOBGyvmZVZkNvfZjXDhU14%2BBToFEDKRAQpAJ0HRTjP6XHpYUKEX7RzS9bV5c%2BFJTmAICUgNSWQ%2FZCgJwhIOJIQVLgFKcXvKHm9cyGvithFDUAFQqECho1CBUIggYapAJ1QEFBExNMYoISDU1%2FNIR9cvndTG%2Fc2IBkp2fC8ZpQgknBGI%2F3AsDvvRfDlJhwem5zwYMs7VNlaUtbXE1h3mezj9mlGSsXrBkzkFsGKGoDmedBJLfLjxQQgAYdHRSxtPfbfceNsPYBQPTI%2BGZbT31YxrGIpYoKpIKigkAgFOggNBrbQBBCBaEM2L%2BiGGmTgnF%2BUc1epqO%2F3VejAoAOUZSLQkFN17lAb4eVCe%2BVRvvHN4sH6t1feqAmMUGoPHvvhdLzTjzfKoj0sza%2FGLOy1Bu3vqc20Pgl5YIGkVOEZFZ0nLLMszzdDADTgjIdX6Uf3zfUx6m6u8riKRhOCcmDAqLCURo53Oe4rrsyUlGD0nlIqubdKNZJXOm9FH6y7Yh5uKBnO8vNTX2N4YoKE2fMLREQOsE8AfFN4%2Fak4QIfbd2XJFRQkLx85ruN7NTp2AoAZxwlCR9dWJc81NDdtoLkc86KBIJwXQ3aOpCPqwuhR2SPbCBlUc2NyogQX3N7wqgU51BAf2w9EFXUtCtLqADqS76ev6%2Filgrk2q6esxHZgf5CySh3FMcG%2B5jbE0ZNdj4odHdDwWPGcZNNO1MPbrxtzdW4s%2BtI5HPBwQTTzziKY3v%2F7HGlhmS23g90T%2BOO5L1Nu7MMw3Fv%2FTx1f97%2FFnsAYPui8%2FD4nBB%2FoZZR230uoq67auQoLaB37Iio3sEAK52nR39p%2BzS13HFiilHeYtOOabdC71jQzz2R%2BALBbcrjWNF%2BcfaUwLSrk4KmtsT4T%2BgK9jG7AKKjv93X1lcfUNNVaantropqddnDCcIoa7lk29S92%2B%2F5CpOvQ04VJ79KUe%2F7iI%2FHh40U6c3PyuPjhmWKN8G8Fvnw1A%2FzmX%2FvV5h%2FT%2BCXstRMUp4kOFOjZiUlWBkFQYdALitRZXRzf3RqWumdgF79NQDBOa2V%2FiYSHAAAAABJRU5ErkJggg%3D%3D%29%3Bbottom%3A10px%3Bright%3A55px%3B%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2DzoomExtends%20%7Bbackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABptJREFUeNqsl21QlNcVx%2F%2F%2Fcx9hIipuAJHasgHlRdw0xay7yK7smg6sb2DSdtqZduLUNENmOk1tQuM4U7UzTvshSRlFZzoNCWSSSTJp%2B6VNkLCAeQHBoCCgqNBE0wUqL%2BKuwIiiZZ9%2BeHa3aAS3Sf8zO8%2FL3nt%2B95x7z7n3YWlpKUQEJAEgch9%2BJola9xEC2ADBVgAOKqwCYAqKDgUJBIHPBWwFWQNdbyZFBwAC0GGIAHQSj3%2F8HHRdhzYbdDfwg4IjAsGvICgXAroYBiCEDkBBACBZoyST4gDwQqh7mQ4cEkhQD0EBIIggRMQAh2EiEvEYAGrdR3YSqIYCIEDaotVDeYnu%2FryEjSOr43PHl8WmTBPA6PRQ7IWJrvhT%2FubkU%2F7m1EvX%2B1KEUh7Ug%2BWkPEXgdUSkR%2Bxrd0NJ4qjr8AEI9pGAI7mo78mHfnF%2BY%2FK2K7iHUheuvJG6cOUNz%2FLvDwPobrpSl%2FRuf2VOy9UPs4RSTSANwH4Y449EVdnt9ojHIeghCHYLgR%2Bn%2F7zt4Np32tIWZU4hSpnjVk1t%2FcaPfOO3%2Ff%2B%2BMNH5TVJcisoEoo4ksgbsXwYfdR1%2BkQplQuCFNS82Pp%2F9%2B158RTkTC0ce0OKutQeOp5PME0qcUBqyBmwGOC8vz4AWVOyE4CUqYO%2FDh%2Bp3pj%2F%2FBb6mHllqCyxd8ODVT69%2BuFKoOYTSnzFg7SJpzHFNQYWiQrUIsCN9V%2BuOh375zz179pSGI1FSUuK12%2B2%2BaGDt7e3muro6T%2Fh57969lZdvDrT%2BZbA6n0B1nfPVN7e0PjMjIgIIdkEAR1JR329yDvaE0%2Bl%2FhQKA1Wr1bd682SsikUW7K%2BO3PesTNvaSAiXaLhGBvO86RFEoJ4Adac%2BeDxsgiZKSEm9NTY3n5MmT5mjBHR0d5vr6es%2BmTZu8SqnI%2Bx%2Bs%2BOl5jRo0auX1jtepQaEAADKWWIbcy7ZGUmb79u1eu93uI%2Bmtra31HLj5TGDs9rBJICCNn1GRCKGCUJAUuzzw6CfbTB6Px7t27VofAG%2FYXl6Ceyw9LmvIN3UxZUafKRACWyCELcHVP3vk4fDabDZf%2B2N%2FD9g%2BfsLEEFSooFGDogZNFkBRgSCsTcWm066jgRAU4et%2FF5u9nxRosmCLRmE%2BQdgSXCNzhW%2Fs9rDJ63wVJx77V%2BV8YS6UNaW8BdOcqzx%2B3Ujt0F8Bcr1GMIMU5CzJHZ%2Brg6IGCYV2PimoyIK6lzIWrxkPTVGmRoqJFCyLTZmeq4MB5f3BVADnbpcQkzStUQMAk0YKBPfzxlhA95NQQe43QBotBECAFFyZHo6dz6CKCizAPFPivzUWqxm2AqIgnwkFvZNn4uczGK3Hah7wpet98UZ85R8aKScIcXYEWpMLkx8fvleHpNjlAWtTsakQa0pVKGcJQqMGUqCHBvfdjp%2FgTP6xwFzg85PdyaH2J4SUowKiw3889e4KBACnT582W5uKTV2uusAdUFlgzBcFQoFGDT35HwW%2B82mhqaenxwwA4WtYfRNnUkMZUqsJpEkn8cXU5yktYw2JjsTCMQDwer0ekt6GhgZPUVGRd3fu7qjqdU9Mj7mlpcVD0tvS0uKxWCyVANB5rS3x8s3BFEUFgTTLtuZndQHLBMSfB6pyZtfqMDQ3NzfqTcJisficTqc3BI%2B8bxh9L8corarM3fnDoIT%2BrACAU%2F7m7MOfHbCEwQDQ2Njo6erqinqTOHfuXNjjiI23%2BystZ8c7smmkWgVJcN%2B%2BfRARfLDhlacEUqVEQ1nm77xPrHjSh%2F%2BDjo3WmN%2Fs%2F6OHEOgIPr2h63tVuq5Dud1ukETWoK3zorkzTiiONn%2FTKlNM4lj24m%2BPf13o2wOVHqGA5MsAXjKPrDaqnMvlQnjTzhy0Nlw0d5oI5p3yN62amrk%2Bve5B5%2BhXgb47WGX52%2BV3NgoFOvQKAGUkkTqcbZy5XC7XHYf4zEFr3aXU7jih5uidPPOtvsmzixZr8VMrHjBHddLsHj%2BZ9Fb%2Fn9a1%2BT%2FJDaXey0IpEzEKkHnU8Jj79%2B%2BPeEwSSimQRGP%2BGz8j5DVFBVKQtjBj6JGlNt%2FD8Y%2BOpMdlTphiEqcB4tqtsVjfjUtLLkx0J%2FdOnjWPTg%2BlEARIEHwaQJVQIYggACC%2Fqxi6rn8ZHL4XETSsf0MU1HOk%2FCFGYgAwskUqY5eBitRxzn7%2Fa0V1EEBwdqkN6jPI7y4xPmHmC5unbWdQRMqP2d86qANOksU6gvmArNQRNClqABnQgYuK0krI%2BwCOAyH3DK%2FvqOXhaf3PAO7mIRjDNV25AAAAAElFTkSuQmCC%29%3Bbottom%3A50px%3Bright%3A15px%3B%7D%2Evis%2Dtimeline%20%7B%7D%2Evis%2Dpanel%20%7B%7D%2Evis%2Daxis%20%7B%7D%2Evis%2Dcurrent%2Dtime%20%7Bbackground%2Dcolor%3A%20%23FF7F6E%3Bwidth%3A%202px%3Bz%2Dindex%3A%201%3Bpointer%2Devents%3A%20none%3B%7D%2Evis%2Drolling%2Dmode%2Dbtn%20%7Bheight%3A%2040px%3Bwidth%3A%2040px%3Bposition%3A%20absolute%3Btop%3A%207px%3Bright%3A%2020px%3Bborder%2Dradius%3A%2050%25%3Bfont%2Dsize%3A%2028px%3Bcursor%3A%20pointer%3Bopacity%3A%200%2E8%3Bcolor%3A%20white%3Bfont%2Dweight%3A%20bold%3Btext%2Dalign%3A%20center%3Bbackground%3A%20%233876c2%3B%7D%2Evis%2Drolling%2Dmode%2Dbtn%3Abefore%20%7Bcontent%3A%20%22%5C26F6%22%3B%7D%2Evis%2Drolling%2Dmode%2Dbtn%3Ahover%20%7Bopacity%3A%201%3B%7D%2Evis%2Dcustom%2Dtime%20%7Bbackground%2Dcolor%3A%20%236E94FF%3Bwidth%3A%202px%3Bcursor%3A%20move%3Bz%2Dindex%3A%201%3B%7D%2Evis%2Dpanel%2Evis%2Dbackground%2Evis%2Dhorizontal%20%2Evis%2Dgrid%2Evis%2Dhorizontal%20%7Bposition%3A%20absolute%3Bwidth%3A%20100%25%3Bheight%3A%200%3Bborder%2Dbottom%3A%201px%20solid%3B%7D%2Evis%2Dpanel%2Evis%2Dbackground%2Evis%2Dhorizontal%20%2Evis%2Dgrid%2Evis%2Dminor%20%7Bborder%2Dcolor%3A%20%23e5e5e5%3B%7D%2Evis%2Dpanel%2Evis%2Dbackground%2Evis%2Dhorizontal%20%2Evis%2Dgrid%2Evis%2Dmajor%20%7Bborder%2Dcolor%3A%20%23bfbfbf%3B%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dmajor%20%7Bwidth%3A%20100%25%3Bposition%3A%20absolute%3Bcolor%3A%20%234d4d4d%3Bwhite%2Dspace%3A%20nowrap%3B%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dmajor%2Evis%2Dmeasure%20%7Bpadding%3A%200%3Bmargin%3A%200%3Bborder%3A%200%3Bvisibility%3A%20hidden%3Bwidth%3A%20auto%3B%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dminor%20%7Bposition%3A%20absolute%3Bwidth%3A%20100%25%3Bcolor%3A%20%23bebebe%3Bwhite%2Dspace%3A%20nowrap%3B%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dminor%2Evis%2Dmeasure%20%7Bpadding%3A%200%3Bmargin%3A%200%3Bborder%3A%200%3Bvisibility%3A%20hidden%3Bwidth%3A%20auto%3B%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dtitle%20%7Bposition%3A%20absolute%3Bcolor%3A%20%234d4d4d%3Bwhite%2Dspace%3A%20nowrap%3Bbottom%3A%2020px%3Btext%2Dalign%3A%20center%3B%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dtitle%2Evis%2Dmeasure%20%7Bpadding%3A%200%3Bmargin%3A%200%3Bvisibility%3A%20hidden%3Bwidth%3A%20auto%3B%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dtitle%2Evis%2Dleft%20%7Bbottom%3A%200%3B%2Dwebkit%2Dtransform%2Dorigin%3A%20left%20top%3B%2Dmoz%2Dtransform%2Dorigin%3A%20left%20top%3B%2Dms%2Dtransform%2Dorigin%3A%20left%20top%3B%2Do%2Dtransform%2Dorigin%3A%20left%20top%3Btransform%2Dorigin%3A%20left%20bottom%3B%2Dwebkit%2Dtransform%3A%20rotate%28%2D90deg%29%3B%2Dmoz%2Dtransform%3A%20rotate%28%2D90deg%29%3B%2Dms%2Dtransform%3A%20rotate%28%2D90deg%29%3B%2Do%2Dtransform%3A%20rotate%28%2D90deg%29%3Btransform%3A%20rotate%28%2D90deg%29%3B%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dtitle%2Evis%2Dright%20%7Bbottom%3A%200%3B%2Dwebkit%2Dtransform%2Dorigin%3A%20right%20bottom%3B%2Dmoz%2Dtransform%2Dorigin%3A%20right%20bottom%3B%2Dms%2Dtransform%2Dorigin%3A%20right%20bottom%3B%2Do%2Dtransform%2Dorigin%3A%20right%20bottom%3Btransform%2Dorigin%3A%20right%20bottom%3B%2Dwebkit%2Dtransform%3A%20rotate%2890deg%29%3B%2Dmoz%2Dtransform%3A%20rotate%2890deg%29%3B%2Dms%2Dtransform%3A%20rotate%2890deg%29%3B%2Do%2Dtransform%3A%20rotate%2890deg%29%3Btransform%3A%20rotate%2890deg%29%3B%7D%2Evis%2Dlegend%20%7Bbackground%2Dcolor%3A%20rgba%28247%2C%20252%2C%20255%2C%200%2E65%29%3Bpadding%3A%205px%3Bborder%3A%201px%20solid%20%23b3b3b3%3Bbox%2Dshadow%3A%202px%202px%2010px%20rgba%28154%2C%20154%2C%20154%2C%200%2E55%29%3B%7D%2Evis%2Dlegend%2Dtext%20%7Bwhite%2Dspace%3A%20nowrap%3Bdisplay%3A%20inline%2Dblock%7D%2Evis%2Ditem%20%7Bposition%3A%20absolute%3Bcolor%3A%20%231A1A1A%3Bborder%2Dcolor%3A%20%2397B0F8%3Bborder%2Dwidth%3A%201px%3Bbackground%2Dcolor%3A%20%23D5DDF6%3Bdisplay%3A%20inline%2Dblock%3Bz%2Dindex%3A%201%3B%7D%2Evis%2Ditem%2Evis%2Dselected%20%7Bborder%2Dcolor%3A%20%23FFC200%3Bbackground%2Dcolor%3A%20%23FFF785%3Bz%2Dindex%3A%202%3B%7D%2Evis%2Deditable%2Evis%2Dselected%20%7Bcursor%3A%20move%3B%7D%2Evis%2Ditem%2Evis%2Dpoint%2Evis%2Dselected%20%7Bbackground%2Dcolor%3A%20%23FFF785%3B%7D%2Evis%2Ditem%2Evis%2Dbox%20%7Btext%2Dalign%3A%20center%3Bborder%2Dstyle%3A%20solid%3Bborder%2Dradius%3A%202px%3B%7D%2Evis%2Ditem%2Evis%2Dpoint%20%7Bbackground%3A%20none%3B%7D%2Evis%2Ditem%2Evis%2Ddot%20%7Bposition%3A%20absolute%3Bpadding%3A%200%3Bborder%2Dwidth%3A%204px%3Bborder%2Dstyle%3A%20solid%3Bborder%2Dradius%3A%204px%3B%7D%2Evis%2Ditem%2Evis%2Drange%20%7Bborder%2Dstyle%3A%20solid%3Bborder%2Dradius%3A%202px%3Bbox%2Dsizing%3A%20border%2Dbox%3B%7D%2Evis%2Ditem%2Evis%2Dbackground%20%7Bborder%3A%20none%3Bbackground%2Dcolor%3A%20rgba%28213%2C%20221%2C%20246%2C%200%2E4%29%3Bbox%2Dsizing%3A%20border%2Dbox%3Bpadding%3A%200%3Bmargin%3A%200%3B%7D%2Evis%2Ditem%20%2Evis%2Ditem%2Doverflow%20%7Bposition%3A%20relative%3Bwidth%3A%20100%25%3Bheight%3A%20100%25%3Bpadding%3A%200%3Bmargin%3A%200%3Boverflow%3A%20hidden%3B%7D%2Evis%2Ditem%2Dvisible%2Dframe%20%7Bwhite%2Dspace%3A%20nowrap%3B%7D%2Evis%2Ditem%2Evis%2Drange%20%2Evis%2Ditem%2Dcontent%20%7Bposition%3A%20relative%3Bdisplay%3A%20inline%2Dblock%3B%7D%2Evis%2Ditem%2Evis%2Dbackground%20%2Evis%2Ditem%2Dcontent%20%7Bposition%3A%20absolute%3Bdisplay%3A%20inline%2Dblock%3B%7D%2Evis%2Ditem%2Evis%2Dline%20%7Bpadding%3A%200%3Bposition%3A%20absolute%3Bwidth%3A%200%3Bborder%2Dleft%2Dwidth%3A%201px%3Bborder%2Dleft%2Dstyle%3A%20solid%3B%7D%2Evis%2Ditem%20%2Evis%2Ditem%2Dcontent%20%7Bwhite%2Dspace%3A%20nowrap%3Bbox%2Dsizing%3A%20border%2Dbox%3Bpadding%3A%205px%3B%7D%2Evis%2Ditem%20%2Evis%2DonUpdateTime%2Dtooltip%20%7Bposition%3A%20absolute%3Bbackground%3A%20%234f81bd%3Bcolor%3A%20white%3Bwidth%3A%20200px%3Btext%2Dalign%3A%20center%3Bwhite%2Dspace%3A%20nowrap%3Bpadding%3A%205px%3Bborder%2Dradius%3A%201px%3Btransition%3A%200%2E4s%3B%2Do%2Dtransition%3A%200%2E4s%3B%2Dmoz%2Dtransition%3A%200%2E4s%3B%2Dwebkit%2Dtransition%3A%200%2E4s%3B%7D%2Evis%2Ditem%20%2Evis%2Ddelete%2C%20%2Evis%2Ditem%20%2Evis%2Ddelete%2Drtl%20%7Bposition%3A%20absolute%3Btop%3A%200px%3Bwidth%3A%2024px%3Bheight%3A%2024px%3Bbox%2Dsizing%3A%20border%2Dbox%3Bpadding%3A%200px%205px%3Bcursor%3A%20pointer%3B%2Dwebkit%2Dtransition%3A%20background%200%2E2s%20linear%3B%2Dmoz%2Dtransition%3A%20background%200%2E2s%20linear%3B%2Dms%2Dtransition%3A%20background%200%2E2s%20linear%3B%2Do%2Dtransition%3A%20background%200%2E2s%20linear%3Btransition%3A%20background%200%2E2s%20linear%3B%7D%2Evis%2Ditem%20%2Evis%2Ddelete%20%7Bright%3A%20%2D24px%3B%7D%2Evis%2Ditem%20%2Evis%2Ddelete%2Drtl%20%7Bleft%3A%20%2D24px%3B%7D%2Evis%2Ditem%20%2Evis%2Ddelete%3Aafter%2C%20%2Evis%2Ditem%20%2Evis%2Ddelete%2Drtl%3Aafter%20%7Bcontent%3A%20%22%5C00D7%22%3B%20color%3A%20red%3Bfont%2Dfamily%3A%20arial%2C%20sans%2Dserif%3Bfont%2Dsize%3A%2022px%3Bfont%2Dweight%3A%20bold%3B%2Dwebkit%2Dtransition%3A%20color%200%2E2s%20linear%3B%2Dmoz%2Dtransition%3A%20color%200%2E2s%20linear%3B%2Dms%2Dtransition%3A%20color%200%2E2s%20linear%3B%2Do%2Dtransition%3A%20color%200%2E2s%20linear%3Btransition%3A%20color%200%2E2s%20linear%3B%7D%2Evis%2Ditem%20%2Evis%2Ddelete%3Ahover%2C%20%2Evis%2Ditem%20%2Evis%2Ddelete%2Drtl%3Ahover%20%7Bbackground%3A%20red%3B%7D%2Evis%2Ditem%20%2Evis%2Ddelete%3Ahover%3Aafter%2C%20%2Evis%2Ditem%20%2Evis%2Ddelete%2Drtl%3Ahover%3Aafter%20%7Bcolor%3A%20white%3B%7D%2Evis%2Ditem%20%2Evis%2Ddrag%2Dcenter%20%7Bposition%3A%20absolute%3Bwidth%3A%20100%25%3Bheight%3A%20100%25%3Btop%3A%200%3Bleft%3A%200px%3Bcursor%3A%20move%3B%7D%2Evis%2Ditem%2Evis%2Drange%20%2Evis%2Ddrag%2Dleft%20%7Bposition%3A%20absolute%3Bwidth%3A%2024px%3Bmax%2Dwidth%3A%2020%25%3Bmin%2Dwidth%3A%202px%3Bheight%3A%20100%25%3Btop%3A%200%3Bleft%3A%20%2D4px%3Bcursor%3A%20w%2Dresize%3B%7D%2Evis%2Ditem%2Evis%2Drange%20%2Evis%2Ddrag%2Dright%20%7Bposition%3A%20absolute%3Bwidth%3A%2024px%3Bmax%2Dwidth%3A%2020%25%3Bmin%2Dwidth%3A%202px%3Bheight%3A%20100%25%3Btop%3A%200%3Bright%3A%20%2D4px%3Bcursor%3A%20e%2Dresize%3B%7D%2Evis%2Drange%2Evis%2Ditem%2Evis%2Dreadonly%20%2Evis%2Ddrag%2Dleft%2C%2Evis%2Drange%2Evis%2Ditem%2Evis%2Dreadonly%20%2Evis%2Ddrag%2Dright%20%7Bcursor%3A%20auto%3B%7D%2Evis%2Ditemset%20%7Bposition%3A%20relative%3Bpadding%3A%200%3Bmargin%3A%200%3Bbox%2Dsizing%3A%20border%2Dbox%3B%7D%2Evis%2Ditemset%20%2Evis%2Dbackground%2C%2Evis%2Ditemset%20%2Evis%2Dforeground%20%7Bposition%3A%20absolute%3Bwidth%3A%20100%25%3Bheight%3A%20100%25%3Boverflow%3A%20visible%3B%7D%2Evis%2Daxis%20%7Bposition%3A%20absolute%3Bwidth%3A%20100%25%3Bheight%3A%200%3Bleft%3A%200%3Bz%2Dindex%3A%201%3B%7D%2Evis%2Dforeground%20%2Evis%2Dgroup%20%7Bposition%3A%20relative%3Bbox%2Dsizing%3A%20border%2Dbox%3Bborder%2Dbottom%3A%201px%20solid%20%23bfbfbf%3B%7D%2Evis%2Dforeground%20%2Evis%2Dgroup%3Alast%2Dchild%20%7Bborder%2Dbottom%3A%20none%3B%7D%2Evis%2Dnesting%2Dgroup%20%7Bcursor%3A%20pointer%3B%7D%2Evis%2Dnested%2Dgroup%20%7Bbackground%3A%20%23f5f5f5%3B%7D%2Evis%2Dlabel%2Evis%2Dnesting%2Dgroup%2Eexpanded%3Abefore%20%7Bcontent%3A%20%22%5C25BC%22%3B%7D%2Evis%2Dlabel%2Evis%2Dnesting%2Dgroup%2Ecollapsed%2Drtl%3Abefore%20%7Bcontent%3A%20%22%5C25C0%22%3B%7D%2Evis%2Dlabel%2Evis%2Dnesting%2Dgroup%2Ecollapsed%3Abefore%20%7Bcontent%3A%20%22%5C25B6%22%3B%7D%2Evis%2Doverlay%20%7Bposition%3A%20absolute%3Btop%3A%200%3Bleft%3A%200%3Bwidth%3A%20100%25%3Bheight%3A%20100%25%3Bz%2Dindex%3A%2010%3B%7D%2Evis%2Dlabelset%20%7Bposition%3A%20relative%3Boverflow%3A%20hidden%3Bbox%2Dsizing%3A%20border%2Dbox%3B%7D%2Evis%2Dlabelset%20%2Evis%2Dlabel%20%7Bposition%3A%20relative%3Bleft%3A%200%3Btop%3A%200%3Bwidth%3A%20100%25%3Bcolor%3A%20%234d4d4d%3Bbox%2Dsizing%3A%20border%2Dbox%3B%7D%2Evis%2Dlabelset%20%2Evis%2Dlabel%20%7Bborder%2Dbottom%3A%201px%20solid%20%23bfbfbf%3B%7D%2Evis%2Dlabelset%20%2Evis%2Dlabel%2Edraggable%20%7Bcursor%3A%20pointer%3B%7D%2Evis%2Dlabelset%20%2Evis%2Dlabel%3Alast%2Dchild%20%7Bborder%2Dbottom%3A%20none%3B%7D%2Evis%2Dlabelset%20%2Evis%2Dlabel%20%2Evis%2Dinner%20%7Bdisplay%3A%20inline%2Dblock%3Bpadding%3A%205px%3B%7D%2Evis%2Dlabelset%20%2Evis%2Dlabel%20%2Evis%2Dinner%2Evis%2Dhidden%20%7Bpadding%3A%200%3B%7D%2Evis%2Dpanel%20%7Bposition%3A%20absolute%3Bpadding%3A%200%3Bmargin%3A%200%3Bbox%2Dsizing%3A%20border%2Dbox%3B%7D%2Evis%2Dpanel%2Evis%2Dcenter%2C%2Evis%2Dpanel%2Evis%2Dleft%2C%2Evis%2Dpanel%2Evis%2Dright%2C%2Evis%2Dpanel%2Evis%2Dtop%2C%2Evis%2Dpanel%2Evis%2Dbottom%20%7Bborder%3A%201px%20%23bfbfbf%3B%7D%2Evis%2Dpanel%2Evis%2Dcenter%2C%2Evis%2Dpanel%2Evis%2Dleft%2C%2Evis%2Dpanel%2Evis%2Dright%20%7Bborder%2Dtop%2Dstyle%3A%20solid%3Bborder%2Dbottom%2Dstyle%3A%20solid%3Boverflow%3A%20hidden%3B%7D%2Evis%2Dleft%2Evis%2Dpanel%2Evis%2Dvertical%2Dscroll%2C%20%2Evis%2Dright%2Evis%2Dpanel%2Evis%2Dvertical%2Dscroll%20%7Bheight%3A%20100%25%3Boverflow%2Dx%3A%20hidden%3Boverflow%2Dy%3A%20scroll%3B%7D%20%2Evis%2Dleft%2Evis%2Dpanel%2Evis%2Dvertical%2Dscroll%20%7Bdirection%3A%20rtl%3B%7D%2Evis%2Dleft%2Evis%2Dpanel%2Evis%2Dvertical%2Dscroll%20%2Evis%2Dcontent%20%7Bdirection%3A%20ltr%3B%7D%2Evis%2Dright%2Evis%2Dpanel%2Evis%2Dvertical%2Dscroll%20%7Bdirection%3A%20ltr%3B%7D%2Evis%2Dright%2Evis%2Dpanel%2Evis%2Dvertical%2Dscroll%20%2Evis%2Dcontent%20%7Bdirection%3A%20rtl%3B%7D%2Evis%2Dpanel%2Evis%2Dcenter%2C%2Evis%2Dpanel%2Evis%2Dtop%2C%2Evis%2Dpanel%2Evis%2Dbottom%20%7Bborder%2Dleft%2Dstyle%3A%20solid%3Bborder%2Dright%2Dstyle%3A%20solid%3B%7D%2Evis%2Dbackground%20%7Boverflow%3A%20hidden%3B%7D%2Evis%2Dpanel%20%3E%20%2Evis%2Dcontent%20%7Bposition%3A%20relative%3B%7D%2Evis%2Dpanel%20%2Evis%2Dshadow%20%7Bposition%3A%20absolute%3Bwidth%3A%20100%25%3Bheight%3A%201px%3Bbox%2Dshadow%3A%200%200%2010px%20rgba%280%2C0%2C0%2C0%2E8%29%3B%7D%2Evis%2Dpanel%20%2Evis%2Dshadow%2Evis%2Dtop%20%7Btop%3A%20%2D1px%3Bleft%3A%200%3B%7D%2Evis%2Dpanel%20%2Evis%2Dshadow%2Evis%2Dbottom%20%7Bbottom%3A%20%2D1px%3Bleft%3A%200%3B%7D%2Evis%2Dgraph%2Dgroup0%20%7Bfill%3A%234f81bd%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%20%234f81bd%3B%7D%2Evis%2Dgraph%2Dgroup1%20%7Bfill%3A%23f79646%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%20%23f79646%3B%7D%2Evis%2Dgraph%2Dgroup2%20%7Bfill%3A%20%238c51cf%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%20%238c51cf%3B%7D%2Evis%2Dgraph%2Dgroup3%20%7Bfill%3A%20%2375c841%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%20%2375c841%3B%7D%2Evis%2Dgraph%2Dgroup4%20%7Bfill%3A%20%23ff0100%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%20%23ff0100%3B%7D%2Evis%2Dgraph%2Dgroup5%20%7Bfill%3A%20%2337d8e6%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%20%2337d8e6%3B%7D%2Evis%2Dgraph%2Dgroup6%20%7Bfill%3A%20%23042662%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%20%23042662%3B%7D%2Evis%2Dgraph%2Dgroup7%20%7Bfill%3A%2300ff26%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%20%2300ff26%3B%7D%2Evis%2Dgraph%2Dgroup8%20%7Bfill%3A%23ff00ff%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%20%23ff00ff%3B%7D%2Evis%2Dgraph%2Dgroup9%20%7Bfill%3A%20%238f3938%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%20%238f3938%3B%7D%2Evis%2Dtimeline%20%2Evis%2Dfill%20%7Bfill%2Dopacity%3A0%2E1%3Bstroke%3A%20none%3B%7D%2Evis%2Dtimeline%20%2Evis%2Dbar%20%7Bfill%2Dopacity%3A0%2E5%3Bstroke%2Dwidth%3A1px%3B%7D%2Evis%2Dtimeline%20%2Evis%2Dpoint%20%7Bstroke%2Dwidth%3A2px%3Bfill%2Dopacity%3A1%2E0%3B%7D%2Evis%2Dtimeline%20%2Evis%2Dlegend%2Dbackground%20%7Bstroke%2Dwidth%3A1px%3Bfill%2Dopacity%3A0%2E9%3Bfill%3A%20%23ffffff%3Bstroke%3A%20%23c2c2c2%3B%7D%2Evis%2Dtimeline%20%2Evis%2Doutline%20%7Bstroke%2Dwidth%3A1px%3Bfill%2Dopacity%3A1%3Bfill%3A%20%23ffffff%3Bstroke%3A%20%23e5e5e5%3B%7D%2Evis%2Dtimeline%20%2Evis%2Dicon%2Dfill%20%7Bfill%2Dopacity%3A0%2E3%3Bstroke%3A%20none%3B%7D%2Evis%2Dtime%2Daxis%20%7Bposition%3A%20relative%3Boverflow%3A%20hidden%3B%7D%2Evis%2Dtime%2Daxis%2Evis%2Dforeground%20%7Btop%3A%200%3Bleft%3A%200%3Bwidth%3A%20100%25%3B%7D%2Evis%2Dtime%2Daxis%2Evis%2Dbackground%20%7Bposition%3A%20absolute%3Btop%3A%200%3Bleft%3A%200%3Bwidth%3A%20100%25%3Bheight%3A%20100%25%3B%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dtext%20%7Bposition%3A%20absolute%3Bcolor%3A%20%234d4d4d%3Bpadding%3A%203px%3Boverflow%3A%20hidden%3Bbox%2Dsizing%3A%20border%2Dbox%3Bwhite%2Dspace%3A%20nowrap%3B%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dtext%2Evis%2Dmeasure%20%7Bposition%3A%20absolute%3Bpadding%2Dleft%3A%200%3Bpadding%2Dright%3A%200%3Bmargin%2Dleft%3A%200%3Bmargin%2Dright%3A%200%3Bvisibility%3A%20hidden%3B%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dgrid%2Evis%2Dvertical%20%7Bposition%3A%20absolute%3Bborder%2Dleft%3A%201px%20solid%3B%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dgrid%2Evis%2Dvertical%2Drtl%20%7Bposition%3A%20absolute%3Bborder%2Dright%3A%201px%20solid%3B%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dgrid%2Evis%2Dminor%20%7Bborder%2Dcolor%3A%20%23e5e5e5%3B%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dgrid%2Evis%2Dmajor%20%7Bborder%2Dcolor%3A%20%23bfbfbf%3B%7D%2Evis%2Dtimeline%20%7Bposition%3A%20relative%3Bborder%3A%201px%20solid%20%23bfbfbf%3Boverflow%3A%20hidden%3Bpadding%3A%200%3Bmargin%3A%200%3Bbox%2Dsizing%3A%20border%2Dbox%3B%7D" rel="stylesheet" />
<script src="data:application/javascript;base64,LyoqDQogKiB2aXMuanMNCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hbG1lbmRlL3Zpcw0KICoNCiAqIEEgZHluYW1pYywgYnJvd3Nlci1iYXNlZCB2aXN1YWxpemF0aW9uIGxpYnJhcnkuDQogKg0KICogQHZlcnNpb24gNC4yMC4xDQogKiBAZGF0ZSAgICAyMDE3LTA3LTAyDQogKg0KICogQGxpY2Vuc2UNCiAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFsbWVuZGUgQi5WLCBodHRwOi8vYWxtZW5kZS5jb20NCiAqDQogKiBWaXMuanMgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciBib3RoDQogKg0KICogKiBUaGUgQXBhY2hlIDIuMCBMaWNlbnNlDQogKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KICoNCiAqIGFuZA0KICoNCiAqICogVGhlIE1JVCBMaWNlbnNlDQogKiAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCiAqDQogKiBWaXMuanMgbWF5IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIGVpdGhlciBsaWNlbnNlLg0KICovDQoidXNlIHN0cmljdCI7IWZ1bmN0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMudmlzPWUoKTp0LnZpcz1lKCl9KHRoaXMsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShvKXtpZihpW29dKXJldHVybiBpW29dLmV4cG9ydHM7dmFyIG49aVtvXT17ZXhwb3J0czp7fSxpZDpvLGxvYWRlZDohMX07cmV0dXJuIHRbb10uY2FsbChuLmV4cG9ydHMsbixuLmV4cG9ydHMsZSksbi5sb2FkZWQ9ITAsbi5leHBvcnRzfXZhciBpPXt9O3JldHVybiBlLm09dCxlLmM9aSxlLnA9IiIsZSgwKX0oW2Z1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDEpO28uZXh0ZW5kKGUsaSg4NykpLG8uZXh0ZW5kKGUsaSgxMTcpKSxvLmV4dGVuZChlLGkoMTU5KSl9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX12YXIgbj1pKDIpLHM9byhuKSxyPWkoNTUpLGE9byhyKSxoPWkoNTgpLGQ9byhoKSxsPWkoNjIpLHU9byhsKSxjPWkoODIpLHA9aSg4Nik7ZS5pc051bWJlcj1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIE51bWJlcnx8Im51bWJlciI9PXR5cGVvZiB0fSxlLnJlY3Vyc2l2ZURPTURlbGV0ZT1mdW5jdGlvbih0KXtpZih0KWZvcig7ITA9PT10Lmhhc0NoaWxkTm9kZXMoKTspZS5yZWN1cnNpdmVET01EZWxldGUodC5maXJzdENoaWxkKSx0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCl9LGUuZ2l2ZVJhbmdlPWZ1bmN0aW9uKHQsZSxpLG8pe2lmKGU9PXQpcmV0dXJuLjU7dmFyIG49MS8oZS10KTtyZXR1cm4gTWF0aC5tYXgoMCwoby10KSpuKX0sZS5pc1N0cmluZz1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFN0cmluZ3x8InN0cmluZyI9PXR5cGVvZiB0fSxlLmlzRGF0ZT1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4hMDtpZihlLmlzU3RyaW5nKHQpKXtpZihmLmV4ZWModCkpcmV0dXJuITA7aWYoIWlzTmFOKERhdGUucGFyc2UodCkpKXJldHVybiEwfXJldHVybiExfSxlLnJhbmRvbVVVSUQ9ZnVuY3Rpb24oKXtyZXR1cm4gcC52NCgpfSxlLmFzc2lnbkFsbEtleXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIGkgaW4gdCl0Lmhhc093blByb3BlcnR5KGkpJiYib2JqZWN0IiE9PSgwLHUuZGVmYXVsdCkodFtpXSkmJih0W2ldPWUpfSxlLmZpbGxJZkRlZmluZWQ9ZnVuY3Rpb24odCxpKXt2YXIgbz1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO2Zvcih2YXIgbiBpbiB0KXZvaWQgMCE9PWlbbl0mJigib2JqZWN0IiE9PSgwLHUuZGVmYXVsdCkoaVtuXSk/dm9pZCAwIT09aVtuXSYmbnVsbCE9PWlbbl18fHZvaWQgMD09PXRbbl18fCEwIT09bz90W25dPWlbbl06ZGVsZXRlIHRbbl06Im9iamVjdCI9PT0oMCx1LmRlZmF1bHQpKHRbbl0pJiZlLmZpbGxJZkRlZmluZWQodFtuXSxpW25dLG8pKX0sZS5wcm90b0V4dGVuZD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspe3ZhciBvPWFyZ3VtZW50c1tpXTtmb3IodmFyIG4gaW4gbyl0W25dPW9bbl19cmV0dXJuIHR9LGUuZXh0ZW5kPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyl7dmFyIG89YXJndW1lbnRzW2ldO2Zvcih2YXIgbiBpbiBvKW8uaGFzT3duUHJvcGVydHkobikmJih0W25dPW9bbl0pfXJldHVybiB0fSxlLnNlbGVjdGl2ZUV4dGVuZD1mdW5jdGlvbih0LGUsaSl7aWYoIUFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IEVycm9yKCJBcnJheSB3aXRoIHByb3BlcnR5IG5hbWVzIGV4cGVjdGVkIGFzIGZpcnN0IGFyZ3VtZW50Iik7Zm9yKHZhciBvPTI7bzxhcmd1bWVudHMubGVuZ3RoO28rKylmb3IodmFyIG49YXJndW1lbnRzW29dLHM9MDtzPHQubGVuZ3RoO3MrKyl7dmFyIHI9dFtzXTtuJiZuLmhhc093blByb3BlcnR5KHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sZS5zZWxlY3RpdmVEZWVwRXh0ZW5kPWZ1bmN0aW9uKHQsaSxvKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdO2lmKEFycmF5LmlzQXJyYXkobykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJyYXlzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGRlZXBFeHRlbmQiKTtmb3IodmFyIHM9MjtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKWZvcih2YXIgcj1hcmd1bWVudHNbc10sYT0wO2E8dC5sZW5ndGg7YSsrKXt2YXIgaD10W2FdO2lmKHIuaGFzT3duUHJvcGVydHkoaCkpaWYob1toXSYmb1toXS5jb25zdHJ1Y3Rvcj09PU9iamVjdCl2b2lkIDA9PT1pW2hdJiYoaVtoXT17fSksaVtoXS5jb25zdHJ1Y3Rvcj09PU9iamVjdD9lLmRlZXBFeHRlbmQoaVtoXSxvW2hdLCExLG4pOm51bGw9PT1vW2hdJiZ2b2lkIDAhPT1pW2hdJiYhMD09PW4/ZGVsZXRlIGlbaF06aVtoXT1vW2hdO2Vsc2V7aWYoQXJyYXkuaXNBcnJheShvW2hdKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcnJheXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgZGVlcEV4dGVuZCIpO251bGw9PT1vW2hdJiZ2b2lkIDAhPT1pW2hdJiYhMD09PW4/ZGVsZXRlIGlbaF06aVtoXT1vW2hdfX1yZXR1cm4gaX0sZS5zZWxlY3RpdmVOb3REZWVwRXh0ZW5kPWZ1bmN0aW9uKHQsaSxvKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdO2lmKEFycmF5LmlzQXJyYXkobykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJyYXlzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGRlZXBFeHRlbmQiKTtmb3IodmFyIHMgaW4gbylpZihvLmhhc093blByb3BlcnR5KHMpJiYtMT09dC5pbmRleE9mKHMpKWlmKG9bc10mJm9bc10uY29uc3RydWN0b3I9PT1PYmplY3Qpdm9pZCAwPT09aVtzXSYmKGlbc109e30pLGlbc10uY29uc3RydWN0b3I9PT1PYmplY3Q/ZS5kZWVwRXh0ZW5kKGlbc10sb1tzXSk6bnVsbD09PW9bc10mJnZvaWQgMCE9PWlbc10mJiEwPT09bj9kZWxldGUgaVtzXTppW3NdPW9bc107ZWxzZSBpZihBcnJheS5pc0FycmF5KG9bc10pKXtpW3NdPVtdO2Zvcih2YXIgcj0wO3I8b1tzXS5sZW5ndGg7cisrKWlbc10ucHVzaChvW3NdW3JdKX1lbHNlIG51bGw9PT1vW3NdJiZ2b2lkIDAhPT1pW3NdJiYhMD09PW4/ZGVsZXRlIGlbc106aVtzXT1vW3NdO3JldHVybiBpfSxlLmRlZXBFeHRlbmQ9ZnVuY3Rpb24odCxpLG8sbil7Zm9yKHZhciBzIGluIGkpaWYoaS5oYXNPd25Qcm9wZXJ0eShzKXx8ITA9PT1vKWlmKGlbc10mJmlbc10uY29uc3RydWN0b3I9PT1PYmplY3Qpdm9pZCAwPT09dFtzXSYmKHRbc109e30pLHRbc10uY29uc3RydWN0b3I9PT1PYmplY3Q/ZS5kZWVwRXh0ZW5kKHRbc10saVtzXSxvKTpudWxsPT09aVtzXSYmdm9pZCAwIT09dFtzXSYmITA9PT1uP2RlbGV0ZSB0W3NdOnRbc109aVtzXTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoaVtzXSkpe3Rbc109W107Zm9yKHZhciByPTA7cjxpW3NdLmxlbmd0aDtyKyspdFtzXS5wdXNoKGlbc11bcl0pfWVsc2UgbnVsbD09PWlbc10mJnZvaWQgMCE9PXRbc10mJiEwPT09bj9kZWxldGUgdFtzXTp0W3NdPWlbc107cmV0dXJuIHR9LGUuZXF1YWxBcnJheT1mdW5jdGlvbih0LGUpe2lmKHQubGVuZ3RoIT1lLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGk9MCxvPXQubGVuZ3RoO2k8bztpKyspaWYodFtpXSE9ZVtpXSlyZXR1cm4hMTtyZXR1cm4hMH0sZS5jb252ZXJ0PWZ1bmN0aW9uKHQsaSl7dmFyIG87aWYodm9pZCAwIT09dCl7aWYobnVsbD09PXQpcmV0dXJuIG51bGw7aWYoIWkpcmV0dXJuIHQ7aWYoInN0cmluZyIhPXR5cGVvZiBpJiYhKGkgaW5zdGFuY2VvZiBTdHJpbmcpKXRocm93IG5ldyBFcnJvcigiVHlwZSBtdXN0IGJlIGEgc3RyaW5nIik7c3dpdGNoKGkpe2Nhc2UiYm9vbGVhbiI6Y2FzZSJCb29sZWFuIjpyZXR1cm4gQm9vbGVhbih0KTtjYXNlIm51bWJlciI6Y2FzZSJOdW1iZXIiOnJldHVybiBlLmlzU3RyaW5nKHQpJiYhaXNOYU4oRGF0ZS5wYXJzZSh0KSk/Yyh0KS52YWx1ZU9mKCk6TnVtYmVyKHQudmFsdWVPZigpKTtjYXNlInN0cmluZyI6Y2FzZSJTdHJpbmciOnJldHVybiBTdHJpbmcodCk7Y2FzZSJEYXRlIjppZihlLmlzTnVtYmVyKHQpKXJldHVybiBuZXcgRGF0ZSh0KTtpZih0IGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gbmV3IERhdGUodC52YWx1ZU9mKCkpO2lmKGMuaXNNb21lbnQodCkpcmV0dXJuIG5ldyBEYXRlKHQudmFsdWVPZigpKTtpZihlLmlzU3RyaW5nKHQpKXJldHVybiBvPWYuZXhlYyh0KSxvP25ldyBEYXRlKE51bWJlcihvWzFdKSk6YyhuZXcgRGF0ZSh0KSkudG9EYXRlKCk7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY29udmVydCBvYmplY3Qgb2YgdHlwZSAiK2UuZ2V0VHlwZSh0KSsiIHRvIHR5cGUgRGF0ZSIpO2Nhc2UiTW9tZW50IjppZihlLmlzTnVtYmVyKHQpKXJldHVybiBjKHQpO2lmKHQgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBjKHQudmFsdWVPZigpKTtpZihjLmlzTW9tZW50KHQpKXJldHVybiBjKHQpO2lmKGUuaXNTdHJpbmcodCkpcmV0dXJuIG89Zi5leGVjKHQpLGMobz9OdW1iZXIob1sxXSk6dCk7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY29udmVydCBvYmplY3Qgb2YgdHlwZSAiK2UuZ2V0VHlwZSh0KSsiIHRvIHR5cGUgRGF0ZSIpO2Nhc2UiSVNPRGF0ZSI6aWYoZS5pc051bWJlcih0KSlyZXR1cm4gbmV3IERhdGUodCk7aWYodCBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIHQudG9JU09TdHJpbmcoKTtpZihjLmlzTW9tZW50KHQpKXJldHVybiB0LnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCk7aWYoZS5pc1N0cmluZyh0KSlyZXR1cm4gbz1mLmV4ZWModCksbz9uZXcgRGF0ZShOdW1iZXIob1sxXSkpLnRvSVNPU3RyaW5nKCk6Yyh0KS5mb3JtYXQoKTt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBjb252ZXJ0IG9iamVjdCBvZiB0eXBlICIrZS5nZXRUeXBlKHQpKyIgdG8gdHlwZSBJU09EYXRlIik7Y2FzZSJBU1BEYXRlIjppZihlLmlzTnVtYmVyKHQpKXJldHVybiIvRGF0ZSgiK3QrIikvIjtpZih0IGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4iL0RhdGUoIit0LnZhbHVlT2YoKSsiKS8iO2lmKGUuaXNTdHJpbmcodCkpe289Zi5leGVjKHQpO3JldHVybiIvRGF0ZSgiKyhvP25ldyBEYXRlKE51bWJlcihvWzFdKSkudmFsdWVPZigpOm5ldyBEYXRlKHQpLnZhbHVlT2YoKSkrIikvIn10aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBjb252ZXJ0IG9iamVjdCBvZiB0eXBlICIrZS5nZXRUeXBlKHQpKyIgdG8gdHlwZSBBU1BEYXRlIik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gdHlwZSAiJytpKyciJyl9fX07dmFyIGY9L15cLz9EYXRlXCgoXC0/XGQrKS9pO2UuZ2V0VHlwZT1mdW5jdGlvbih0KXt2YXIgZT12b2lkIDA9PT10PyJ1bmRlZmluZWQiOigwLHUuZGVmYXVsdCkodCk7cmV0dXJuIm9iamVjdCI9PWU/bnVsbD09PXQ/Im51bGwiOnQgaW5zdGFuY2VvZiBCb29sZWFuPyJCb29sZWFuIjp0IGluc3RhbmNlb2YgTnVtYmVyPyJOdW1iZXIiOnQgaW5zdGFuY2VvZiBTdHJpbmc/IlN0cmluZyI6QXJyYXkuaXNBcnJheSh0KT8iQXJyYXkiOnQgaW5zdGFuY2VvZiBEYXRlPyJEYXRlIjoiT2JqZWN0IjoibnVtYmVyIj09ZT8iTnVtYmVyIjoiYm9vbGVhbiI9PWU/IkJvb2xlYW4iOiJzdHJpbmciPT1lPyJTdHJpbmciOnZvaWQgMD09PWU/InVuZGVmaW5lZCI6ZX0sZS5jb3B5QW5kRXh0ZW5kQXJyYXk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9W10sbz0wO288dC5sZW5ndGg7bysrKWkucHVzaCh0W29dKTtyZXR1cm4gaS5wdXNoKGUpLGl9LGUuY29weUFycmF5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxpPTA7aTx0Lmxlbmd0aDtpKyspZS5wdXNoKHRbaV0pO3JldHVybiBlfSxlLmdldEFic29sdXRlTGVmdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSxlLmdldEFic29sdXRlUmlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHR9LGUuZ2V0QWJzb2x1dGVUb3A9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wfSxlLmFkZENsYXNzTmFtZT1mdW5jdGlvbih0LGUpe3ZhciBpPXQuY2xhc3NOYW1lLnNwbGl0KCIgIiksbz1lLnNwbGl0KCIgIik7aT1pLmNvbmNhdChvLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gaS5pbmRleE9mKHQpPDB9KSksdC5jbGFzc05hbWU9aS5qb2luKCIgIil9LGUucmVtb3ZlQ2xhc3NOYW1lPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dC5jbGFzc05hbWUuc3BsaXQoIiAiKSxvPWUuc3BsaXQoIiAiKTtpPWkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBvLmluZGV4T2YodCk8MH0pLHQuY2xhc3NOYW1lPWkuam9pbigiICIpfSxlLmZvckVhY2g9ZnVuY3Rpb24odCxlKXt2YXIgaSxvO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGk9MCxvPXQubGVuZ3RoO2k8bztpKyspZSh0W2ldLGksdCk7ZWxzZSBmb3IoaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJmUodFtpXSxpLHQpfSxlLnRvQXJyYXk9ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciBpIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShpKSYmZS5wdXNoKHRbaV0pO3JldHVybiBlfSxlLnVwZGF0ZVByb3BlcnR5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdFtlXSE9PWkmJih0W2VdPWksITApfSxlLnRocm90dGxlPWZ1bmN0aW9uKHQpe3ZhciBlPSExO3JldHVybiBmdW5jdGlvbigpe2V8fChlPSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe2U9ITEsdCgpfSkpfX0sZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxpLG8pe3QuYWRkRXZlbnRMaXN0ZW5lcj8odm9pZCAwPT09byYmKG89ITEpLCJtb3VzZXdoZWVsIj09PWUmJm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiRmlyZWZveCIpPj0wJiYoZT0iRE9NTW91c2VTY3JvbGwiKSx0LmFkZEV2ZW50TGlzdGVuZXIoZSxpLG8pKTp0LmF0dGFjaEV2ZW50KCJvbiIrZSxpKX0sZS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxpLG8pe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcj8odm9pZCAwPT09byYmKG89ITEpLCJtb3VzZXdoZWVsIj09PWUmJm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiRmlyZWZveCIpPj0wJiYoZT0iRE9NTW91c2VTY3JvbGwiKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxpLG8pKTp0LmRldGFjaEV2ZW50KCJvbiIrZSxpKX0sZS5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbih0KXt0fHwodD13aW5kb3cuZXZlbnQpLHQucHJldmVudERlZmF1bHQ/dC5wcmV2ZW50RGVmYXVsdCgpOnQucmV0dXJuVmFsdWU9ITF9LGUuZ2V0VGFyZ2V0PWZ1bmN0aW9uKHQpe3R8fCh0PXdpbmRvdy5ldmVudCk7dmFyIGU7cmV0dXJuIHQudGFyZ2V0P2U9dC50YXJnZXQ6dC5zcmNFbGVtZW50JiYoZT10LnNyY0VsZW1lbnQpLHZvaWQgMCE9ZS5ub2RlVHlwZSYmMz09ZS5ub2RlVHlwZSYmKGU9ZS5wYXJlbnROb2RlKSxlfSxlLmhhc1BhcmVudD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10O2k7KXtpZihpPT09ZSlyZXR1cm4hMDtpPWkucGFyZW50Tm9kZX1yZXR1cm4hMX0sZS5vcHRpb249e30sZS5vcHRpb24uYXNCb29sZWFuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJih0PXQoKSksbnVsbCE9dD8wIT10OmV8fG51bGx9LGUub3B0aW9uLmFzTnVtYmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJih0PXQoKSksbnVsbCE9dD9OdW1iZXIodCl8fGV8fG51bGw6ZXx8bnVsbH0sZS5vcHRpb24uYXNTdHJpbmc9ZnVuY3Rpb24odCxlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmKHQ9dCgpKSxudWxsIT10P1N0cmluZyh0KTplfHxudWxsfSxlLm9wdGlvbi5hc1NpemU9ZnVuY3Rpb24odCxpKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmKHQ9dCgpKSxlLmlzU3RyaW5nKHQpP3Q6ZS5pc051bWJlcih0KT90KyJweCI6aXx8bnVsbH0sZS5vcHRpb24uYXNFbGVtZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJih0PXQoKSksdHx8ZXx8bnVsbH0sZS5oZXhUb1JHQj1mdW5jdGlvbih0KXt2YXIgZT0vXiM/KFthLWZcZF0pKFthLWZcZF0pKFthLWZcZF0pJC9pO3Q9dC5yZXBsYWNlKGUsZnVuY3Rpb24odCxlLGksbyl7cmV0dXJuIGUrZStpK2krbytvfSk7dmFyIGk9L14jPyhbYS1mXGRdezJ9KShbYS1mXGRdezJ9KShbYS1mXGRdezJ9KSQvaS5leGVjKHQpO3JldHVybiBpP3tyOnBhcnNlSW50KGlbMV0sMTYpLGc6cGFyc2VJbnQoaVsyXSwxNiksYjpwYXJzZUludChpWzNdLDE2KX06bnVsbH0sZS5vdmVycmlkZU9wYWNpdHk9ZnVuY3Rpb24odCxpKXtpZigtMSE9dC5pbmRleE9mKCJyZ2JhIikpcmV0dXJuIHQ7aWYoLTEhPXQuaW5kZXhPZigicmdiIikpe3ZhciBvPXQuc3Vic3RyKHQuaW5kZXhPZigiKCIpKzEpLnJlcGxhY2UoIikiLCIiKS5zcGxpdCgiLCIpO3JldHVybiJyZ2JhKCIrb1swXSsiLCIrb1sxXSsiLCIrb1syXSsiLCIraSsiKSJ9dmFyIG89ZS5oZXhUb1JHQih0KTtyZXR1cm4gbnVsbD09bz90OiJyZ2JhKCIrby5yKyIsIitvLmcrIiwiK28uYisiLCIraSsiKSJ9LGUuUkdCVG9IZXg9ZnVuY3Rpb24odCxlLGkpe3JldHVybiIjIisoKDE8PDI0KSsodDw8MTYpKyhlPDw4KStpKS50b1N0cmluZygxNikuc2xpY2UoMSl9LGUucGFyc2VDb2xvcj1mdW5jdGlvbih0KXt2YXIgaTtpZighMD09PWUuaXNTdHJpbmcodCkpe2lmKCEwPT09ZS5pc1ZhbGlkUkdCKHQpKXt2YXIgbz10LnN1YnN0cig0KS5zdWJzdHIoMCx0Lmxlbmd0aC01KS5zcGxpdCgiLCIpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VJbnQodCl9KTt0PWUuUkdCVG9IZXgob1swXSxvWzFdLG9bMl0pfWlmKCEwPT09ZS5pc1ZhbGlkSGV4KHQpKXt2YXIgbj1lLmhleFRvSFNWKHQpLHM9e2g6bi5oLHM6Ljgqbi5zLHY6TWF0aC5taW4oMSwxLjAyKm4udil9LHI9e2g6bi5oLHM6TWF0aC5taW4oMSwxLjI1Km4ucyksdjouOCpuLnZ9LGE9ZS5IU1ZUb0hleChyLmgsci5zLHIudiksaD1lLkhTVlRvSGV4KHMuaCxzLnMscy52KTtpPXtiYWNrZ3JvdW5kOnQsYm9yZGVyOmEsaGlnaGxpZ2h0OntiYWNrZ3JvdW5kOmgsYm9yZGVyOmF9LGhvdmVyOntiYWNrZ3JvdW5kOmgsYm9yZGVyOmF9fX1lbHNlIGk9e2JhY2tncm91bmQ6dCxib3JkZXI6dCxoaWdobGlnaHQ6e2JhY2tncm91bmQ6dCxib3JkZXI6dH0saG92ZXI6e2JhY2tncm91bmQ6dCxib3JkZXI6dH19fWVsc2UgaT17fSxpLmJhY2tncm91bmQ9dC5iYWNrZ3JvdW5kfHx2b2lkIDAsaS5ib3JkZXI9dC5ib3JkZXJ8fHZvaWQgMCxlLmlzU3RyaW5nKHQuaGlnaGxpZ2h0KT9pLmhpZ2hsaWdodD17Ym9yZGVyOnQuaGlnaGxpZ2h0LGJhY2tncm91bmQ6dC5oaWdobGlnaHR9OihpLmhpZ2hsaWdodD17fSxpLmhpZ2hsaWdodC5iYWNrZ3JvdW5kPXQuaGlnaGxpZ2h0JiZ0LmhpZ2hsaWdodC5iYWNrZ3JvdW5kfHx2b2lkIDAsaS5oaWdobGlnaHQuYm9yZGVyPXQuaGlnaGxpZ2h0JiZ0LmhpZ2hsaWdodC5ib3JkZXJ8fHZvaWQgMCksZS5pc1N0cmluZyh0LmhvdmVyKT9pLmhvdmVyPXtib3JkZXI6dC5ob3ZlcixiYWNrZ3JvdW5kOnQuaG92ZXJ9OihpLmhvdmVyPXt9LGkuaG92ZXIuYmFja2dyb3VuZD10LmhvdmVyJiZ0LmhvdmVyLmJhY2tncm91bmR8fHZvaWQgMCxpLmhvdmVyLmJvcmRlcj10LmhvdmVyJiZ0LmhvdmVyLmJvcmRlcnx8dm9pZCAwKTtyZXR1cm4gaX0sZS5SR0JUb0hTVj1mdW5jdGlvbih0LGUsaSl7dC89MjU1LGUvPTI1NSxpLz0yNTU7dmFyIG89TWF0aC5taW4odCxNYXRoLm1pbihlLGkpKSxuPU1hdGgubWF4KHQsTWF0aC5tYXgoZSxpKSk7aWYobz09bilyZXR1cm57aDowLHM6MCx2Om99O3ZhciBzPXQ9PW8/ZS1pOmk9PW8/dC1lOmktdDtyZXR1cm57aDo2MCooKHQ9PW8/MzppPT1vPzE6NSktcy8obi1vKSkvMzYwLHM6KG4tbykvbix2Om59fTt2YXIgbT17c3BsaXQ6ZnVuY3Rpb24odCl7dmFyIGU9e307cmV0dXJuIHQuc3BsaXQoIjsiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lmKCIiIT10LnRyaW0oKSl7dmFyIGk9dC5zcGxpdCgiOiIpLG89aVswXS50cmltKCksbj1pWzFdLnRyaW0oKTtlW29dPW59fSksZX0sam9pbjpmdW5jdGlvbih0KXtyZXR1cm4oMCxkLmRlZmF1bHQpKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZSsiOiAiK3RbZV19KS5qb2luKCI7ICIpfX07ZS5hZGRDc3NUZXh0PWZ1bmN0aW9uKHQsaSl7dmFyIG89bS5zcGxpdCh0LnN0eWxlLmNzc1RleHQpLG49bS5zcGxpdChpKSxzPWUuZXh0ZW5kKG8sbik7dC5zdHlsZS5jc3NUZXh0PW0uam9pbihzKX0sZS5yZW1vdmVDc3NUZXh0PWZ1bmN0aW9uKHQsZSl7dmFyIGk9bS5zcGxpdCh0LnN0eWxlLmNzc1RleHQpLG89bS5zcGxpdChlKTtmb3IodmFyIG4gaW4gbylvLmhhc093blByb3BlcnR5KG4pJiZkZWxldGUgaVtuXTt0LnN0eWxlLmNzc1RleHQ9bS5qb2luKGkpfSxlLkhTVlRvUkdCPWZ1bmN0aW9uKHQsZSxpKXt2YXIgbyxuLHMscj1NYXRoLmZsb29yKDYqdCksYT02KnQtcixoPWkqKDEtZSksZD1pKigxLWEqZSksbD1pKigxLSgxLWEpKmUpO3N3aXRjaChyJTYpe2Nhc2UgMDpvPWksbj1sLHM9aDticmVhaztjYXNlIDE6bz1kLG49aSxzPWg7YnJlYWs7Y2FzZSAyOm89aCxuPWkscz1sO2JyZWFrO2Nhc2UgMzpvPWgsbj1kLHM9aTticmVhaztjYXNlIDQ6bz1sLG49aCxzPWk7YnJlYWs7Y2FzZSA1Om89aSxuPWgscz1kfXJldHVybntyOk1hdGguZmxvb3IoMjU1Km8pLGc6TWF0aC5mbG9vcigyNTUqbiksYjpNYXRoLmZsb29yKDI1NSpzKX19LGUuSFNWVG9IZXg9ZnVuY3Rpb24odCxpLG8pe3ZhciBuPWUuSFNWVG9SR0IodCxpLG8pO3JldHVybiBlLlJHQlRvSGV4KG4ucixuLmcsbi5iKX0sZS5oZXhUb0hTVj1mdW5jdGlvbih0KXt2YXIgaT1lLmhleFRvUkdCKHQpO3JldHVybiBlLlJHQlRvSFNWKGkucixpLmcsaS5iKX0sZS5pc1ZhbGlkSGV4PWZ1bmN0aW9uKHQpe3JldHVybi8oXiNbMC05QS1GXXs2fSQpfCheI1swLTlBLUZdezN9JCkvaS50ZXN0KHQpfSxlLmlzVmFsaWRSR0I9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC5yZXBsYWNlKCIgIiwiIiksL3JnYlwoKFxkezEsM30pLChcZHsxLDN9KSwoXGR7MSwzfSlcKS9pLnRlc3QodCl9LGUuaXNWYWxpZFJHQkE9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC5yZXBsYWNlKCIgIiwiIiksL3JnYmFcKChcZHsxLDN9KSwoXGR7MSwzfSksKFxkezEsM30pLCguezEsM30pXCkvaS50ZXN0KHQpfSxlLnNlbGVjdGl2ZUJyaWRnZU9iamVjdD1mdW5jdGlvbih0LGkpe2lmKCJvYmplY3QiPT0odm9pZCAwPT09aT8idW5kZWZpbmVkIjooMCx1LmRlZmF1bHQpKGkpKSl7Zm9yKHZhciBvPSgwLGEuZGVmYXVsdCkoaSksbj0wO248dC5sZW5ndGg7bisrKWkuaGFzT3duUHJvcGVydHkodFtuXSkmJiJvYmplY3QiPT0oMCx1LmRlZmF1bHQpKGlbdFtuXV0pJiYob1t0W25dXT1lLmJyaWRnZU9iamVjdChpW3Rbbl1dKSk7cmV0dXJuIG99cmV0dXJuIG51bGx9LGUuYnJpZGdlT2JqZWN0PWZ1bmN0aW9uKHQpe2lmKCJvYmplY3QiPT0odm9pZCAwPT09dD8idW5kZWZpbmVkIjooMCx1LmRlZmF1bHQpKHQpKSl7dmFyIGk9KDAsYS5kZWZhdWx0KSh0KTtmb3IodmFyIG8gaW4gdCl0Lmhhc093blByb3BlcnR5KG8pJiYib2JqZWN0Ij09KDAsdS5kZWZhdWx0KSh0W29dKSYmKGlbb109ZS5icmlkZ2VPYmplY3QodFtvXSkpO3JldHVybiBpfXJldHVybiBudWxsfSxlLmluc2VydFNvcnQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKyl7Zm9yKHZhciBvPXRbaV0sbj1pO24+MCYmZShvLHRbbi0xXSk8MDtuLS0pdFtuXT10W24tMV07dFtuXT1vfXJldHVybiB0fSxlLm1lcmdlT3B0aW9ucz1mdW5jdGlvbih0LGUsaSl7dmFyIG89KGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM10sYXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOnt9KTtpZihudWxsPT09ZVtpXSl0W2ldPSgwLGEuZGVmYXVsdCkob1tpXSk7ZWxzZSBpZih2b2lkIDAhPT1lW2ldKWlmKCJib29sZWFuIj09dHlwZW9mIGVbaV0pdFtpXS5lbmFibGVkPWVbaV07ZWxzZXt2b2lkIDA9PT1lW2ldLmVuYWJsZWQmJih0W2ldLmVuYWJsZWQ9ITApO2Zvcih2YXIgbiBpbiBlW2ldKWVbaV0uaGFzT3duUHJvcGVydHkobikmJih0W2ldW25dPWVbaV1bbl0pfX0sZS5iaW5hcnlTZWFyY2hDdXN0b209ZnVuY3Rpb24odCxlLGksbyl7Zm9yKHZhciBuPTAscz0wLHI9dC5sZW5ndGgtMTtzPD1yJiZuPDFlNDspe3ZhciBhPU1hdGguZmxvb3IoKHMrcikvMiksaD10W2FdLGQ9dm9pZCAwPT09bz9oW2ldOmhbaV1bb10sbD1lKGQpO2lmKDA9PWwpcmV0dXJuIGE7LTE9PWw/cz1hKzE6cj1hLTEsbisrfXJldHVybi0xfSxlLmJpbmFyeVNlYXJjaFZhbHVlPWZ1bmN0aW9uKHQsZSxpLG8sbil7Zm9yKHZhciBzLHIsYSxoLGQ9MCxsPTAsdT10Lmxlbmd0aC0xLG49dm9pZCAwIT1uP246ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09ZT8wOnQ8ZT8tMToxfTtsPD11JiZkPDFlNDspe2lmKGg9TWF0aC5mbG9vciguNSoodStsKSkscz10W01hdGgubWF4KDAsaC0xKV1baV0scj10W2hdW2ldLGE9dFtNYXRoLm1pbih0Lmxlbmd0aC0xLGgrMSldW2ldLDA9PW4ocixlKSlyZXR1cm4gaDtpZihuKHMsZSk8MCYmbihyLGUpPjApcmV0dXJuImJlZm9yZSI9PW8/TWF0aC5tYXgoMCxoLTEpOmg7aWYobihyLGUpPDAmJm4oYSxlKT4wKXJldHVybiJiZWZvcmUiPT1vP2g6TWF0aC5taW4odC5sZW5ndGgtMSxoKzEpO24ocixlKTwwP2w9aCsxOnU9aC0xLGQrK31yZXR1cm4tMX0sZS5lYXNpbmdGdW5jdGlvbnM9e2xpbmVhcjpmdW5jdGlvbih0KXtyZXR1cm4gdH0sZWFzZUluUXVhZDpmdW5jdGlvbih0KXtyZXR1cm4gdCp0fSxlYXNlT3V0UXVhZDpmdW5jdGlvbih0KXtyZXR1cm4gdCooMi10KX0sZWFzZUluT3V0UXVhZDpmdW5jdGlvbih0KXtyZXR1cm4gdDwuNT8yKnQqdDooNC0yKnQpKnQtMX0sZWFzZUluQ3ViaWM6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdCp0fSxlYXNlT3V0Q3ViaWM6ZnVuY3Rpb24odCl7cmV0dXJuLS10KnQqdCsxfSxlYXNlSW5PdXRDdWJpYzpmdW5jdGlvbih0KXtyZXR1cm4gdDwuNT80KnQqdCp0Oih0LTEpKigyKnQtMikqKDIqdC0yKSsxfSxlYXNlSW5RdWFydDpmdW5jdGlvbih0KXtyZXR1cm4gdCp0KnQqdH0sZWFzZU91dFF1YXJ0OmZ1bmN0aW9uKHQpe3JldHVybiAxLSAtLXQqdCp0KnR9LGVhc2VJbk91dFF1YXJ0OmZ1bmN0aW9uKHQpe3JldHVybiB0PC41PzgqdCp0KnQqdDoxLTgqLS10KnQqdCp0fSxlYXNlSW5RdWludDpmdW5jdGlvbih0KXtyZXR1cm4gdCp0KnQqdCp0fSxlYXNlT3V0UXVpbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIDErLS10KnQqdCp0KnR9LGVhc2VJbk91dFF1aW50OmZ1bmN0aW9uKHQpe3JldHVybiB0PC41PzE2KnQqdCp0KnQqdDoxKzE2Ki0tdCp0KnQqdCp0fX0sZS5nZXRTY3JvbGxCYXJXaWR0aD1mdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTt0LnN0eWxlLndpZHRoPSIxMDAlIix0LnN0eWxlLmhlaWdodD0iMjAwcHgiO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Uuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixlLnN0eWxlLnRvcD0iMHB4IixlLnN0eWxlLmxlZnQ9IjBweCIsZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLGUuc3R5bGUud2lkdGg9IjIwMHB4IixlLnN0eWxlLmhlaWdodD0iMTUwcHgiLGUuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsZS5hcHBlbmRDaGlsZCh0KSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpO3ZhciBpPXQub2Zmc2V0V2lkdGg7ZS5zdHlsZS5vdmVyZmxvdz0ic2Nyb2xsIjt2YXIgbz10Lm9mZnNldFdpZHRoO3JldHVybiBpPT1vJiYobz1lLmNsaWVudFdpZHRoKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGUpLGktb30sZS50b3BNb3N0PWZ1bmN0aW9uKHQsZSl7dmFyIGk9dm9pZCAwO0FycmF5LmlzQXJyYXkoZSl8fChlPVtlXSk7dmFyIG89ITAsbj0hMSxyPXZvaWQgMDt0cnl7Zm9yKHZhciBhLGg9KDAscy5kZWZhdWx0KSh0KTshKG89KGE9aC5uZXh0KCkpLmRvbmUpO289ITApe3ZhciBkPWEudmFsdWU7aWYoZCl7aT1kW2VbMF1dO2Zvcih2YXIgbD0xO2w8ZS5sZW5ndGg7bCsrKWkmJihpPWlbZVtsXV0pO2lmKHZvaWQgMCE9PWkpYnJlYWt9fX1jYXRjaCh0KXtuPSEwLHI9dH1maW5hbGx5e3RyeXshbyYmaC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihuKXRocm93IHJ9fXJldHVybiBpfX0sZnVuY3Rpb24odCxlLGkpe3QuZXhwb3J0cz17ZGVmYXVsdDppKDMpLF9fZXNNb2R1bGU6ITB9fSxmdW5jdGlvbih0LGUsaSl7aSg0KSxpKDUwKSx0LmV4cG9ydHM9aSg1Mil9LGZ1bmN0aW9uKHQsZSxpKXtpKDUpO2Zvcih2YXIgbz1pKDE2KSxuPWkoMjApLHM9aSg4KSxyPWkoNDcpKCJ0b1N0cmluZ1RhZyIpLGE9WyJOb2RlTGlzdCIsIkRPTVRva2VuTGlzdCIsIk1lZGlhTGlzdCIsIlN0eWxlU2hlZXRMaXN0IiwiQ1NTUnVsZUxpc3QiXSxoPTA7aDw1O2grKyl7dmFyIGQ9YVtoXSxsPW9bZF0sdT1sJiZsLnByb3RvdHlwZTt1JiYhdVtyXSYmbih1LHIsZCksc1tkXT1zLkFycmF5fX0sZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkoNiksbj1pKDcpLHM9aSg4KSxyPWkoOSk7dC5leHBvcnRzPWkoMTMpKEFycmF5LCJBcnJheSIsZnVuY3Rpb24odCxlKXt0aGlzLl90PXIodCksdGhpcy5faT0wLHRoaXMuX2s9ZX0sZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90LGU9dGhpcy5fayxpPXRoaXMuX2krKztyZXR1cm4hdHx8aT49dC5sZW5ndGg/KHRoaXMuX3Q9dm9pZCAwLG4oMSkpOiJrZXlzIj09ZT9uKDAsaSk6InZhbHVlcyI9PWU/bigwLHRbaV0pOm4oMCxbaSx0W2ldXSl9LCJ2YWx1ZXMiKSxzLkFyZ3VtZW50cz1zLkFycmF5LG8oImtleXMiKSxvKCJ2YWx1ZXMiKSxvKCJlbnRyaWVzIil9LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm57dmFsdWU6ZSxkb25lOiEhdH19fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz17fX0sZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkoMTApLG49aSgxMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvKG4odCkpfX0sZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkoMTEpO3QuZXhwb3J0cz1PYmplY3QoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKT9PYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIlN0cmluZyI9PW8odCk/dC5zcGxpdCgiIik6T2JqZWN0KHQpfX0sZnVuY3Rpb24odCxlKXt2YXIgaT17fS50b1N0cmluZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGkuY2FsbCh0KS5zbGljZSg4LC0xKX19LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09dCl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNhbGwgbWV0aG9kIG9uICAiK3QpO3JldHVybiB0fX0sZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkoMTQpLG49aSgxNSkscz1pKDMwKSxyPWkoMjApLGE9aSgzMSksaD1pKDgpLGQ9aSgzMiksbD1pKDQ2KSx1PWkoNDgpLGM9aSg0NykoIml0ZXJhdG9yIikscD0hKFtdLmtleXMmJiJuZXh0ImluW10ua2V5cygpKSxmPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsaSxtLHYsZyx5KXtkKGksZSxtKTt2YXIgYixfLHcseD1mdW5jdGlvbih0KXtpZighcCYmdCBpbiBTKXJldHVybiBTW3RdO3N3aXRjaCh0KXtjYXNlImtleXMiOmNhc2UidmFsdWVzIjpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGkodGhpcyx0KX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpKHRoaXMsdCl9fSxrPWUrIiBJdGVyYXRvciIsRD0idmFsdWVzIj09dixNPSExLFM9dC5wcm90b3R5cGUsTz1TW2NdfHxTWyJAQGl0ZXJhdG9yIl18fHYmJlNbdl0sQz1PfHx4KHYpLFQ9dj9EP3goImVudHJpZXMiKTpDOnZvaWQgMCxFPSJBcnJheSI9PWU/Uy5lbnRyaWVzfHxPOk87aWYoRSYmKHc9dShFLmNhbGwobmV3IHQpKSkhPT1PYmplY3QucHJvdG90eXBlJiYobCh3LGssITApLG98fGEodyxjKXx8cih3LGMsZikpLEQmJk8mJiJ2YWx1ZXMiIT09Ty5uYW1lJiYoTT0hMCxDPWZ1bmN0aW9uKCl7cmV0dXJuIE8uY2FsbCh0aGlzKX0pLG8mJiF5fHwhcCYmIU0mJlNbY118fHIoUyxjLEMpLGhbZV09QyxoW2tdPWYsdilpZihiPXt2YWx1ZXM6RD9DOngoInZhbHVlcyIpLGtleXM6Zz9DOngoImtleXMiKSxlbnRyaWVzOlR9LHkpZm9yKF8gaW4gYilfIGluIFN8fHMoUyxfLGJbX10pO2Vsc2UgbihuLlArbi5GKihwfHxNKSxlLGIpO3JldHVybiBifX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ITB9LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDE2KSxuPWkoMTcpLHM9aSgxOCkscj1pKDIwKSxhPWZ1bmN0aW9uKHQsZSxpKXt2YXIgaCxkLGwsdT10JmEuRixjPXQmYS5HLHA9dCZhLlMsZj10JmEuUCxtPXQmYS5CLHY9dCZhLlcsZz1jP246bltlXXx8KG5bZV09e30pLHk9Zy5wcm90b3R5cGUsYj1jP286cD9vW2VdOihvW2VdfHx7fSkucHJvdG90eXBlO2MmJihpPWUpO2ZvcihoIGluIGkpKGQ9IXUmJmImJnZvaWQgMCE9PWJbaF0pJiZoIGluIGd8fChsPWQ/YltoXTppW2hdLGdbaF09YyYmImZ1bmN0aW9uIiE9dHlwZW9mIGJbaF0/aVtoXTptJiZkP3MobCxvKTp2JiZiW2hdPT1sP2Z1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKGUsaSxvKXtpZih0aGlzIGluc3RhbmNlb2YgdCl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IHQ7Y2FzZSAxOnJldHVybiBuZXcgdChlKTtjYXNlIDI6cmV0dXJuIG5ldyB0KGUsaSl9cmV0dXJuIG5ldyB0KGUsaSxvKX1yZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3JldHVybiBlLnByb3RvdHlwZT10LnByb3RvdHlwZSxlfShsKTpmJiYiZnVuY3Rpb24iPT10eXBlb2YgbD9zKEZ1bmN0aW9uLmNhbGwsbCk6bCxmJiYoKGcudmlydHVhbHx8KGcudmlydHVhbD17fSkpW2hdPWwsdCZhLlImJnkmJiF5W2hdJiZyKHksaCxsKSkpfTthLkY9MSxhLkc9MixhLlM9NCxhLlA9OCxhLkI9MTYsYS5XPTMyLGEuVT02NCxhLlI9MTI4LHQuZXhwb3J0cz1hfSxmdW5jdGlvbih0LGUpe3ZhciBpPXQuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZi5NYXRoPT1NYXRoP3NlbGY6RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTsibnVtYmVyIj09dHlwZW9mIF9fZyYmKF9fZz1pKX0sZnVuY3Rpb24odCxlKXt2YXIgaT10LmV4cG9ydHM9e3ZlcnNpb246IjIuNC4wIn07Im51bWJlciI9PXR5cGVvZiBfX2UmJihfX2U9aSl9LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDE5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLGkpe2lmKG8odCksdm9pZCAwPT09ZSlyZXR1cm4gdDtzd2l0Y2goaSl7Y2FzZSAxOnJldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gdC5jYWxsKGUsaSl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oaSxvKXtyZXR1cm4gdC5jYWxsKGUsaSxvKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihpLG8sbil7cmV0dXJuIHQuY2FsbChlLGksbyxuKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IFR5cGVFcnJvcih0KyIgaXMgbm90IGEgZnVuY3Rpb24hIik7cmV0dXJuIHR9fSxmdW5jdGlvbih0LGUsaSl7dmFyIG89aSgyMSksbj1pKDI5KTt0LmV4cG9ydHM9aSgyNSk/ZnVuY3Rpb24odCxlLGkpe3JldHVybiBvLmYodCxlLG4oMSxpKSl9OmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdFtlXT1pLHR9fSxmdW5jdGlvbih0LGUsaSl7dmFyIG89aSgyMiksbj1pKDI0KSxzPWkoMjgpLHI9T2JqZWN0LmRlZmluZVByb3BlcnR5O2UuZj1pKDI1KT9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24odCxlLGkpe2lmKG8odCksZT1zKGUsITApLG8oaSksbil0cnl7cmV0dXJuIHIodCxlLGkpfWNhdGNoKHQpe31pZigiZ2V0ImluIGl8fCJzZXQiaW4gaSl0aHJvdyBUeXBlRXJyb3IoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkISIpO3JldHVybiJ2YWx1ZSJpbiBpJiYodFtlXT1pLnZhbHVlKSx0fX0sZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkoMjMpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZighbyh0KSl0aHJvdyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhbiBvYmplY3QhIik7cmV0dXJuIHR9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQ/bnVsbCE9PXQ6ImZ1bmN0aW9uIj09dHlwZW9mIHR9fSxmdW5jdGlvbih0LGUsaSl7dC5leHBvcnRzPSFpKDI1KSYmIWkoMjYpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShpKDI3KSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKHQsZSxpKXt0LmV4cG9ydHM9IWkoMjYpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKHQpe3JldHVybiEwfX19LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDIzKSxuPWkoMTYpLmRvY3VtZW50LHM9byhuKSYmbyhuLmNyZWF0ZUVsZW1lbnQpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcz9uLmNyZWF0ZUVsZW1lbnQodCk6e319fSxmdW5jdGlvbih0LGUsaSl7dmFyIG89aSgyMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoIW8odCkpcmV0dXJuIHQ7dmFyIGksbjtpZihlJiYiZnVuY3Rpb24iPT10eXBlb2YoaT10LnRvU3RyaW5nKSYmIW8obj1pLmNhbGwodCkpKXJldHVybiBuO2lmKCJmdW5jdGlvbiI9PXR5cGVvZihpPXQudmFsdWVPZikmJiFvKG49aS5jYWxsKHQpKSlyZXR1cm4gbjtpZighZSYmImZ1bmN0aW9uIj09dHlwZW9mKGk9dC50b1N0cmluZykmJiFvKG49aS5jYWxsKHQpKSlyZXR1cm4gbjt0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm57ZW51bWVyYWJsZTohKDEmdCksY29uZmlndXJhYmxlOiEoMiZ0KSx3cml0YWJsZTohKDQmdCksdmFsdWU6ZX19fSxmdW5jdGlvbih0LGUsaSl7dC5leHBvcnRzPWkoMjApfSxmdW5jdGlvbih0LGUpe3ZhciBpPXt9Lmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBpLmNhbGwodCxlKX19LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDMzKSxuPWkoMjkpLHM9aSg0Nikscj17fTtpKDIwKShyLGkoNDcpKCJpdGVyYXRvciIpLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSx0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLGkpe3QucHJvdG90eXBlPW8ocix7bmV4dDpuKDEsaSl9KSxzKHQsZSsiIEl0ZXJhdG9yIil9fSxmdW5jdGlvbih0LGUsaSl7dmFyIG89aSgyMiksbj1pKDM0KSxzPWkoNDQpLHI9aSg0MSkoIklFX1BST1RPIiksYT1mdW5jdGlvbigpe30saD1mdW5jdGlvbigpe3ZhciB0LGU9aSgyNykoImlmcmFtZSIpLG89cy5sZW5ndGg7Zm9yKGUuc3R5bGUuZGlzcGxheT0ibm9uZSIsaSg0NSkuYXBwZW5kQ2hpbGQoZSksZS5zcmM9ImphdmFzY3JpcHQ6Iix0PWUuY29udGVudFdpbmRvdy5kb2N1bWVudCx0Lm9wZW4oKSx0LndyaXRlKCI8c2NyaXB0PmRvY3VtZW50LkY9T2JqZWN0PFwvc2NyaXB0PiIpLHQuY2xvc2UoKSxoPXQuRjtvLS07KWRlbGV0ZSBoLnByb3RvdHlwZVtzW29dXTtyZXR1cm4gaCgpfTt0LmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odCxlKXt2YXIgaTtyZXR1cm4gbnVsbCE9PXQ/KGEucHJvdG90eXBlPW8odCksaT1uZXcgYSxhLnByb3RvdHlwZT1udWxsLGlbcl09dCk6aT1oKCksdm9pZCAwPT09ZT9pOm4oaSxlKX19LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDIxKSxuPWkoMjIpLHM9aSgzNSk7dC5leHBvcnRzPWkoMjUpP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKHQsZSl7bih0KTtmb3IodmFyIGkscj1zKGUpLGE9ci5sZW5ndGgsaD0wO2E+aDspby5mKHQsaT1yW2grK10sZVtpXSk7cmV0dXJuIHR9fSxmdW5jdGlvbih0LGUsaSl7dmFyIG89aSgzNiksbj1pKDQ0KTt0LmV4cG9ydHM9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3JldHVybiBvKHQsbil9fSxmdW5jdGlvbih0LGUsaSl7dmFyIG89aSgzMSksbj1pKDkpLHM9aSgzNykoITEpLHI9aSg0MSkoIklFX1BST1RPIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIGksYT1uKHQpLGg9MCxkPVtdO2ZvcihpIGluIGEpaSE9ciYmbyhhLGkpJiZkLnB1c2goaSk7Zm9yKDtlLmxlbmd0aD5oOylvKGEsaT1lW2grK10pJiYofnMoZCxpKXx8ZC5wdXNoKGkpKTtyZXR1cm4gZH19LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDkpLG49aSgzOCkscz1pKDQwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsaSxyKXt2YXIgYSxoPW8oZSksZD1uKGgubGVuZ3RoKSxsPXMocixkKTtpZih0JiZpIT1pKXtmb3IoO2Q+bDspaWYoKGE9aFtsKytdKSE9YSlyZXR1cm4hMH1lbHNlIGZvcig7ZD5sO2wrKylpZigodHx8bCBpbiBoKSYmaFtsXT09PWkpcmV0dXJuIHR8fGx8fDA7cmV0dXJuIXQmJi0xfX19LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDM5KSxuPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdD4wP24obyh0KSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sZnVuY3Rpb24odCxlKXt2YXIgaT1NYXRoLmNlaWwsbz1NYXRoLmZsb29yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaXNOYU4odD0rdCk/MDoodD4wP286aSkodCl9fSxmdW5jdGlvbih0LGUsaSl7dmFyIG89aSgzOSksbj1NYXRoLm1heCxzPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0PW8odCksdDwwP24odCtlLDApOnModCxlKX19LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDQyKSgia2V5cyIpLG49aSg0Myk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvW3RdfHwob1t0XT1uKHQpKX19LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDE2KSxuPW9bIl9fY29yZS1qc19zaGFyZWRfXyJdfHwob1siX19jb3JlLWpzX3NoYXJlZF9fIl09e30pO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gblt0XXx8KG5bdF09e30pfX0sZnVuY3Rpb24odCxlKXt2YXIgaT0wLG89TWF0aC5yYW5kb20oKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIlN5bWJvbCgiLmNvbmNhdCh2b2lkIDA9PT10PyIiOnQsIilfIiwoKytpK28pLnRvU3RyaW5nKDM2KSl9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz0iY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mIi5zcGxpdCgiLCIpfSxmdW5jdGlvbih0LGUsaSl7dC5leHBvcnRzPWkoMTYpLmRvY3VtZW50JiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDIxKS5mLG49aSgzMSkscz1pKDQ3KSgidG9TdHJpbmdUYWciKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLGkpe3QmJiFuKHQ9aT90OnQucHJvdG90eXBlLHMpJiZvKHQscyx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOmV9KX19LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDQyKSgid2tzIiksbj1pKDQzKSxzPWkoMTYpLlN5bWJvbCxyPSJmdW5jdGlvbiI9PXR5cGVvZiBzOyh0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG9bdF18fChvW3RdPXImJnNbdF18fChyP3M6bikoIlN5bWJvbC4iK3QpKX0pLnN0b3JlPW99LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDMxKSxuPWkoNDkpLHM9aSg0MSkoIklFX1BST1RPIikscj1PYmplY3QucHJvdG90eXBlO3QuZXhwb3J0cz1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHQpe3JldHVybiB0PW4odCksbyh0LHMpP3Rbc106ImZ1bmN0aW9uIj09dHlwZW9mIHQuY29uc3RydWN0b3ImJnQgaW5zdGFuY2VvZiB0LmNvbnN0cnVjdG9yP3QuY29uc3RydWN0b3IucHJvdG90eXBlOnQgaW5zdGFuY2VvZiBPYmplY3Q/cjpudWxsfX0sZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkoMTIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KG8odCkpfX0sZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkoNTEpKCEwKTtpKDEzKShTdHJpbmcsIlN0cmluZyIsZnVuY3Rpb24odCl7dGhpcy5fdD1TdHJpbmcodCksdGhpcy5faT0wfSxmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5fdCxpPXRoaXMuX2k7cmV0dXJuIGk+PWUubGVuZ3RoP3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06KHQ9byhlLGkpLHRoaXMuX2krPXQubGVuZ3RoLHt2YWx1ZTp0LGRvbmU6ITF9KX0pfSxmdW5jdGlvbih0LGUsaSl7dmFyIG89aSgzOSksbj1pKDEyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsaSl7dmFyIHMscixhPVN0cmluZyhuKGUpKSxoPW8oaSksZD1hLmxlbmd0aDtyZXR1cm4gaDwwfHxoPj1kP3Q/IiI6dm9pZCAwOihzPWEuY2hhckNvZGVBdChoKSxzPDU1Mjk2fHxzPjU2MzE5fHxoKzE9PT1kfHwocj1hLmNoYXJDb2RlQXQoaCsxKSk8NTYzMjB8fHI+NTczNDM/dD9hLmNoYXJBdChoKTpzOnQ/YS5zbGljZShoLGgrMik6ci01NjMyMCsocy01NTI5Njw8MTApKzY1NTM2KX19fSxmdW5jdGlvbih0LGUsaSl7dmFyIG89aSgyMiksbj1pKDUzKTt0LmV4cG9ydHM9aSgxNykuZ2V0SXRlcmF0b3I9ZnVuY3Rpb24odCl7dmFyIGU9bih0KTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBUeXBlRXJyb3IodCsiIGlzIG5vdCBpdGVyYWJsZSEiKTtyZXR1cm4gbyhlLmNhbGwodCkpfX0sZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkoNTQpLG49aSg0NykoIml0ZXJhdG9yIikscz1pKDgpO3QuZXhwb3J0cz1pKDE3KS5nZXRJdGVyYXRvck1ldGhvZD1mdW5jdGlvbih0KXtpZih2b2lkIDAhPXQpcmV0dXJuIHRbbl18fHRbIkBAaXRlcmF0b3IiXXx8c1tvKHQpXX19LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDExKSxuPWkoNDcpKCJ0b1N0cmluZ1RhZyIpLHM9IkFyZ3VtZW50cyI9PW8oZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKSxyPWZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVybiB0W2VdfWNhdGNoKHQpe319O3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxpLGE7cmV0dXJuIHZvaWQgMD09PXQ/IlVuZGVmaW5lZCI6bnVsbD09PXQ/Ik51bGwiOiJzdHJpbmciPT10eXBlb2YoaT1yKGU9T2JqZWN0KHQpLG4pKT9pOnM/byhlKToiT2JqZWN0Ij09KGE9byhlKSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNhbGxlZT8iQXJndW1lbnRzIjphfX0sZnVuY3Rpb24odCxlLGkpe3QuZXhwb3J0cz17ZGVmYXVsdDppKDU2KSxfX2VzTW9kdWxlOiEwfX0sZnVuY3Rpb24odCxlLGkpe2koNTcpO3ZhciBvPWkoMTcpLk9iamVjdDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gby5jcmVhdGUodCxlKX19LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDE1KTtvKG8uUywiT2JqZWN0Iix7Y3JlYXRlOmkoMzMpfSl9LGZ1bmN0aW9uKHQsZSxpKXt0LmV4cG9ydHM9e2RlZmF1bHQ6aSg1OSksX19lc01vZHVsZTohMH19LGZ1bmN0aW9uKHQsZSxpKXtpKDYwKSx0LmV4cG9ydHM9aSgxNykuT2JqZWN0LmtleXN9LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDQ5KSxuPWkoMzUpO2koNjEpKCJrZXlzIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbihvKHQpKX19KX0sZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkoMTUpLG49aSgxNykscz1pKDI2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgaT0obi5PYmplY3R8fHt9KVt0XXx8T2JqZWN0W3RdLHI9e307clt0XT1lKGkpLG8oby5TK28uRipzKGZ1bmN0aW9uKCl7aSgxKX0pLCJPYmplY3QiLHIpfX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fWUuX19lc01vZHVsZT0hMDt2YXIgbj1pKDYzKSxzPW8obikscj1pKDY2KSxhPW8ociksaD0iZnVuY3Rpb24iPT10eXBlb2YgYS5kZWZhdWx0JiYic3ltYm9sIj09dHlwZW9mIHMuZGVmYXVsdD9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgYS5kZWZhdWx0JiZ0LmNvbnN0cnVjdG9yPT09YS5kZWZhdWx0JiZ0IT09YS5kZWZhdWx0LnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH07ZS5kZWZhdWx0PSJmdW5jdGlvbiI9PXR5cGVvZiBhLmRlZmF1bHQmJiJzeW1ib2wiPT09aChzLmRlZmF1bHQpP2Z1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10PyJ1bmRlZmluZWQiOmgodCl9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgYS5kZWZhdWx0JiZ0LmNvbnN0cnVjdG9yPT09YS5kZWZhdWx0JiZ0IT09YS5kZWZhdWx0LnByb3RvdHlwZT8ic3ltYm9sIjp2b2lkIDA9PT10PyJ1bmRlZmluZWQiOmgodCl9fSxmdW5jdGlvbih0LGUsaSl7dC5leHBvcnRzPXtkZWZhdWx0OmkoNjQpLF9fZXNNb2R1bGU6ITB9fSxmdW5jdGlvbih0LGUsaSl7aSg1MCksaSg0KSx0LmV4cG9ydHM9aSg2NSkuZigiaXRlcmF0b3IiKX0sZnVuY3Rpb24odCxlLGkpe2UuZj1pKDQ3KX0sZnVuY3Rpb24odCxlLGkpe3QuZXhwb3J0cz17ZGVmYXVsdDppKDY3KSxfX2VzTW9kdWxlOiEwfX0sZnVuY3Rpb24odCxlLGkpe2koNjgpLGkoNzkpLGkoODApLGkoODEpLHQuZXhwb3J0cz1pKDE3KS5TeW1ib2x9LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDE2KSxuPWkoMzEpLHM9aSgyNSkscj1pKDE1KSxhPWkoMzApLGg9aSg2OSkuS0VZLGQ9aSgyNiksbD1pKDQyKSx1PWkoNDYpLGM9aSg0MykscD1pKDQ3KSxmPWkoNjUpLG09aSg3MCksdj1pKDcxKSxnPWkoNzIpLHk9aSg3NSksYj1pKDIyKSxfPWkoOSksdz1pKDI4KSx4PWkoMjkpLGs9aSgzMyksRD1pKDc2KSxNPWkoNzgpLFM9aSgyMSksTz1pKDM1KSxDPU0uZixUPVMuZixFPUQuZixQPW8uU3ltYm9sLEk9by5KU09OLE49SSYmSS5zdHJpbmdpZnksQT1wKCJfaGlkZGVuIiksUj1wKCJ0b1ByaW1pdGl2ZSIpLHo9e30ucHJvcGVydHlJc0VudW1lcmFibGUsTD1sKCJzeW1ib2wtcmVnaXN0cnkiKSxGPWwoInN5bWJvbHMiKSxCPWwoIm9wLXN5bWJvbHMiKSxqPU9iamVjdC5wcm90b3R5cGUsSD0iZnVuY3Rpb24iPT10eXBlb2YgUCxXPW8uUU9iamVjdCxZPSFXfHwhVy5wcm90b3R5cGV8fCFXLnByb3RvdHlwZS5maW5kQ2hpbGQsRz1zJiZkKGZ1bmN0aW9uKCl7cmV0dXJuIDchPWsoVCh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiBUKHRoaXMsImEiLHt2YWx1ZTo3fSkuYX19KSkuYX0pP2Z1bmN0aW9uKHQsZSxpKXt2YXIgbz1DKGosZSk7byYmZGVsZXRlIGpbZV0sVCh0LGUsaSksbyYmdCE9PWomJlQoaixlLG8pfTpULFY9ZnVuY3Rpb24odCl7dmFyIGU9Rlt0XT1rKFAucHJvdG90eXBlKTtyZXR1cm4gZS5faz10LGV9LFU9SCYmInN5bWJvbCI9PXR5cGVvZiBQLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBQfSxxPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdD09PWomJnEoQixlLGkpLGIodCksZT13KGUsITApLGIoaSksbihGLGUpPyhpLmVudW1lcmFibGU/KG4odCxBKSYmdFtBXVtlXSYmKHRbQV1bZV09ITEpLGk9ayhpLHtlbnVtZXJhYmxlOngoMCwhMSl9KSk6KG4odCxBKXx8VCh0LEEseCgxLHt9KSksdFtBXVtlXT0hMCksRyh0LGUsaSkpOlQodCxlLGkpfSxYPWZ1bmN0aW9uKHQsZSl7Yih0KTtmb3IodmFyIGksbz1nKGU9XyhlKSksbj0wLHM9by5sZW5ndGg7cz5uOylxKHQsaT1vW24rK10sZVtpXSk7cmV0dXJuIHR9LFo9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZT9rKHQpOlgoayh0KSxlKX0sSz1mdW5jdGlvbih0KXt2YXIgZT16LmNhbGwodGhpcyx0PXcodCwhMCkpO3JldHVybiEodGhpcz09PWomJm4oRix0KSYmIW4oQix0KSkmJighKGV8fCFuKHRoaXMsdCl8fCFuKEYsdCl8fG4odGhpcyxBKSYmdGhpc1tBXVt0XSl8fGUpfSxKPWZ1bmN0aW9uKHQsZSl7aWYodD1fKHQpLGU9dyhlLCEwKSx0IT09anx8IW4oRixlKXx8bihCLGUpKXt2YXIgaT1DKHQsZSk7cmV0dXJuIWl8fCFuKEYsZSl8fG4odCxBKSYmdFtBXVtlXXx8KGkuZW51bWVyYWJsZT0hMCksaX19LFE9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLGk9RShfKHQpKSxvPVtdLHM9MDtpLmxlbmd0aD5zOyluKEYsZT1pW3MrK10pfHxlPT1BfHxlPT1ofHxvLnB1c2goZSk7cmV0dXJuIG99LCQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLGk9dD09PWosbz1FKGk/QjpfKHQpKSxzPVtdLHI9MDtvLmxlbmd0aD5yOykhbihGLGU9b1tyKytdKXx8aSYmIW4oaixlKXx8cy5wdXNoKEZbZV0pO3JldHVybiBzfTtIfHwoUD1mdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiBQKXRocm93IFR5cGVFcnJvcigiU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yISIpO3ZhciB0PWMoYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApLGU9ZnVuY3Rpb24oaSl7dGhpcz09PWomJmUuY2FsbChCLGkpLG4odGhpcyxBKSYmbih0aGlzW0FdLHQpJiYodGhpc1tBXVt0XT0hMSksRyh0aGlzLHQseCgxLGkpKX07cmV0dXJuIHMmJlkmJkcoaix0LHtjb25maWd1cmFibGU6ITAsc2V0OmV9KSxWKHQpfSxhKFAucHJvdG90eXBlLCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fa30pLE0uZj1KLFMuZj1xLGkoNzcpLmY9RC5mPVEsaSg3NCkuZj1LLGkoNzMpLmY9JCxzJiYhaSgxNCkmJmEoaiwicHJvcGVydHlJc0VudW1lcmFibGUiLEssITApLGYuZj1mdW5jdGlvbih0KXtyZXR1cm4gVihwKHQpKX0pLHIoci5HK3IuVytyLkYqIUgse1N5bWJvbDpQfSk7Zm9yKHZhciB0dD0iaGFzSW5zdGFuY2UsaXNDb25jYXRTcHJlYWRhYmxlLGl0ZXJhdG9yLG1hdGNoLHJlcGxhY2Usc2VhcmNoLHNwZWNpZXMsc3BsaXQsdG9QcmltaXRpdmUsdG9TdHJpbmdUYWcsdW5zY29wYWJsZXMiLnNwbGl0KCIsIiksZXQ9MDt0dC5sZW5ndGg+ZXQ7KXAodHRbZXQrK10pO2Zvcih2YXIgdHQ9TyhwLnN0b3JlKSxldD0wO3R0Lmxlbmd0aD5ldDspbSh0dFtldCsrXSk7cihyLlMrci5GKiFILCJTeW1ib2wiLHtmb3I6ZnVuY3Rpb24odCl7cmV0dXJuIG4oTCx0Kz0iIik/TFt0XTpMW3RdPVAodCl9LGtleUZvcjpmdW5jdGlvbih0KXtpZihVKHQpKXJldHVybiB2KEwsdCk7dGhyb3cgVHlwZUVycm9yKHQrIiBpcyBub3QgYSBzeW1ib2whIil9LHVzZVNldHRlcjpmdW5jdGlvbigpe1k9ITB9LHVzZVNpbXBsZTpmdW5jdGlvbigpe1k9ITF9fSkscihyLlMrci5GKiFILCJPYmplY3QiLHtjcmVhdGU6WixkZWZpbmVQcm9wZXJ0eTpxLGRlZmluZVByb3BlcnRpZXM6WCxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6SixnZXRPd25Qcm9wZXJ0eU5hbWVzOlEsZ2V0T3duUHJvcGVydHlTeW1ib2xzOiR9KSxJJiZyKHIuUytyLkYqKCFIfHxkKGZ1bmN0aW9uKCl7dmFyIHQ9UCgpO3JldHVybiJbbnVsbF0iIT1OKFt0XSl8fCJ7fSIhPU4oe2E6dH0pfHwie30iIT1OKE9iamVjdCh0KSl9KSksIkpTT04iLHtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7aWYodm9pZCAwIT09dCYmIVUodCkpe2Zvcih2YXIgZSxpLG89W3RdLG49MTthcmd1bWVudHMubGVuZ3RoPm47KW8ucHVzaChhcmd1bWVudHNbbisrXSk7cmV0dXJuIGU9b1sxXSwiZnVuY3Rpb24iPT10eXBlb2YgZSYmKGk9ZSksIWkmJnkoZSl8fChlPWZ1bmN0aW9uKHQsZSl7aWYoaSYmKGU9aS5jYWxsKHRoaXMsdCxlKSksIVUoZSkpcmV0dXJuIGV9KSxvWzFdPWUsTi5hcHBseShJLG8pfX19KSxQLnByb3RvdHlwZVtSXXx8aSgyMCkoUC5wcm90b3R5cGUsUixQLnByb3RvdHlwZS52YWx1ZU9mKSx1KFAsIlN5bWJvbCIpLHUoTWF0aCwiTWF0aCIsITApLHUoby5KU09OLCJKU09OIiwhMCl9LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDQzKSgibWV0YSIpLG49aSgyMykscz1pKDMxKSxyPWkoMjEpLmYsYT0wLGg9T2JqZWN0LmlzRXh0ZW5zaWJsZXx8ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZD0haSgyNikoZnVuY3Rpb24oKXtyZXR1cm4gaChPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKX0pLGw9ZnVuY3Rpb24odCl7cih0LG8se3ZhbHVlOntpOiJPIisgKythLHc6e319fSl9LHU9ZnVuY3Rpb24odCxlKXtpZighbih0KSlyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHQ/dDooInN0cmluZyI9PXR5cGVvZiB0PyJTIjoiUCIpK3Q7aWYoIXModCxvKSl7aWYoIWgodCkpcmV0dXJuIkYiO2lmKCFlKXJldHVybiJFIjtsKHQpfXJldHVybiB0W29dLml9LGM9ZnVuY3Rpb24odCxlKXtpZighcyh0LG8pKXtpZighaCh0KSlyZXR1cm4hMDtpZighZSlyZXR1cm4hMTtsKHQpfXJldHVybiB0W29dLnd9LHA9ZnVuY3Rpb24odCl7cmV0dXJuIGQmJmYuTkVFRCYmaCh0KSYmIXModCxvKSYmbCh0KSx0fSxmPXQuZXhwb3J0cz17S0VZOm8sTkVFRDohMSxmYXN0S2V5OnUsZ2V0V2VhazpjLG9uRnJlZXplOnB9fSxmdW5jdGlvbih0LGUsaSl7dmFyIG89aSgxNiksbj1pKDE3KSxzPWkoMTQpLHI9aSg2NSksYT1pKDIxKS5mO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1uLlN5bWJvbHx8KG4uU3ltYm9sPXM/e306by5TeW1ib2x8fHt9KTsiXyI9PXQuY2hhckF0KDApfHx0IGluIGV8fGEoZSx0LHt2YWx1ZTpyLmYodCl9KX19LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDM1KSxuPWkoOSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpLHM9bih0KSxyPW8ocyksYT1yLmxlbmd0aCxoPTA7YT5oOylpZihzW2k9cltoKytdXT09PWUpcmV0dXJuIGl9fSxmdW5jdGlvbih0LGUsaSl7dmFyIG89aSgzNSksbj1pKDczKSxzPWkoNzQpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1vKHQpLGk9bi5mO2lmKGkpZm9yKHZhciByLGE9aSh0KSxoPXMuZixkPTA7YS5sZW5ndGg+ZDspaC5jYWxsKHQscj1hW2QrK10pJiZlLnB1c2gocik7cmV0dXJuIGV9fSxmdW5jdGlvbih0LGUpe2UuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSxmdW5jdGlvbih0LGUpe2UuZj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZX0sZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkoMTEpO3QuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4iQXJyYXkiPT1vKHQpfX0sZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkoOSksbj1pKDc3KS5mLHM9e30udG9TdHJpbmcscj0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93JiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcz9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpOltdLGE9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBuKHQpfWNhdGNoKHQpe3JldHVybiByLnNsaWNlKCl9fTt0LmV4cG9ydHMuZj1mdW5jdGlvbih0KXtyZXR1cm4gciYmIltvYmplY3QgV2luZG93XSI9PXMuY2FsbCh0KT9hKHQpOm4obyh0KSl9fSxmdW5jdGlvbih0LGUsaSl7dmFyIG89aSgzNiksbj1pKDQ0KS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO2UuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24odCl7cmV0dXJuIG8odCxuKX19LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDc0KSxuPWkoMjkpLHM9aSg5KSxyPWkoMjgpLGE9aSgzMSksaD1pKDI0KSxkPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7ZS5mPWkoMjUpP2Q6ZnVuY3Rpb24odCxlKXtpZih0PXModCksZT1yKGUsITApLGgpdHJ5e3JldHVybiBkKHQsZSl9Y2F0Y2godCl7fWlmKGEodCxlKSlyZXR1cm4gbighby5mLmNhbGwodCxlKSx0W2VdKX19LGZ1bmN0aW9uKHQsZSl7fSxmdW5jdGlvbih0LGUsaSl7aSg3MCkoImFzeW5jSXRlcmF0b3IiKX0sZnVuY3Rpb24odCxlLGkpe2koNzApKCJvYnNlcnZhYmxlIil9LGZ1bmN0aW9uKHQsZSxpKXt0LmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5tb21lbnR8fGkoODMpfSxmdW5jdGlvbih0LGUsaSl7KGZ1bmN0aW9uKHQpeyFmdW5jdGlvbihlLGkpe3QuZXhwb3J0cz1pKCl9KDAsZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7cmV0dXJuIGJvLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBpKHQpe3JldHVybiB0IGluc3RhbmNlb2YgQXJyYXl8fCJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gbnVsbCE9dCYmIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gbih0KXt2YXIgZTtmb3IoZSBpbiB0KXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHModCl7cmV0dXJuIHZvaWQgMD09PXR9ZnVuY3Rpb24gcih0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHR8fCJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlfHwiW29iamVjdCBEYXRlXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gaCh0LGUpe3ZhciBpLG89W107Zm9yKGk9MDtpPHQubGVuZ3RoOysraSlvLnB1c2goZSh0W2ldLGkpKTtyZXR1cm4gb31mdW5jdGlvbiBkKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfWZ1bmN0aW9uIGwodCxlKXtmb3IodmFyIGkgaW4gZSlkKGUsaSkmJih0W2ldPWVbaV0pO3JldHVybiBkKGUsInRvU3RyaW5nIikmJih0LnRvU3RyaW5nPWUudG9TdHJpbmcpLGQoZSwidmFsdWVPZiIpJiYodC52YWx1ZU9mPWUudmFsdWVPZiksdH1mdW5jdGlvbiB1KHQsZSxpLG8pe3JldHVybiB5ZSh0LGUsaSxvLCEwKS51dGMoKX1mdW5jdGlvbiBjKCl7cmV0dXJue2VtcHR5OiExLHVudXNlZFRva2VuczpbXSx1bnVzZWRJbnB1dDpbXSxvdmVyZmxvdzotMixjaGFyc0xlZnRPdmVyOjAsbnVsbElucHV0OiExLGludmFsaWRNb250aDpudWxsLGludmFsaWRGb3JtYXQ6ITEsdXNlckludmFsaWRhdGVkOiExLGlzbzohMSxwYXJzZWREYXRlUGFydHM6W10sbWVyaWRpZW06bnVsbCxyZmMyODIyOiExLHdlZWtkYXlNaXNtYXRjaDohMX19ZnVuY3Rpb24gcCh0KXtyZXR1cm4gbnVsbD09dC5fcGYmJih0Ll9wZj1jKCkpLHQuX3BmfWZ1bmN0aW9uIGYodCl7aWYobnVsbD09dC5faXNWYWxpZCl7dmFyIGU9cCh0KSxpPXdvLmNhbGwoZS5wYXJzZWREYXRlUGFydHMsZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXR9KSxvPSFpc05hTih0Ll9kLmdldFRpbWUoKSkmJmUub3ZlcmZsb3c8MCYmIWUuZW1wdHkmJiFlLmludmFsaWRNb250aCYmIWUuaW52YWxpZFdlZWtkYXkmJiFlLm51bGxJbnB1dCYmIWUuaW52YWxpZEZvcm1hdCYmIWUudXNlckludmFsaWRhdGVkJiYoIWUubWVyaWRpZW18fGUubWVyaWRpZW0mJmkpO2lmKHQuX3N0cmljdCYmKG89byYmMD09PWUuY2hhcnNMZWZ0T3ZlciYmMD09PWUudW51c2VkVG9rZW5zLmxlbmd0aCYmdm9pZCAwPT09ZS5iaWdIb3VyKSxudWxsIT1PYmplY3QuaXNGcm96ZW4mJk9iamVjdC5pc0Zyb3plbih0KSlyZXR1cm4gbzt0Ll9pc1ZhbGlkPW99cmV0dXJuIHQuX2lzVmFsaWR9ZnVuY3Rpb24gbSh0KXt2YXIgZT11KE5hTik7cmV0dXJuIG51bGwhPXQ/bChwKGUpLHQpOnAoZSkudXNlckludmFsaWRhdGVkPSEwLGV9ZnVuY3Rpb24gdih0LGUpe3ZhciBpLG8sbjtpZihzKGUuX2lzQU1vbWVudE9iamVjdCl8fCh0Ll9pc0FNb21lbnRPYmplY3Q9ZS5faXNBTW9tZW50T2JqZWN0KSxzKGUuX2kpfHwodC5faT1lLl9pKSxzKGUuX2YpfHwodC5fZj1lLl9mKSxzKGUuX2wpfHwodC5fbD1lLl9sKSxzKGUuX3N0cmljdCl8fCh0Ll9zdHJpY3Q9ZS5fc3RyaWN0KSwNCnMoZS5fdHptKXx8KHQuX3R6bT1lLl90em0pLHMoZS5faXNVVEMpfHwodC5faXNVVEM9ZS5faXNVVEMpLHMoZS5fb2Zmc2V0KXx8KHQuX29mZnNldD1lLl9vZmZzZXQpLHMoZS5fcGYpfHwodC5fcGY9cChlKSkscyhlLl9sb2NhbGUpfHwodC5fbG9jYWxlPWUuX2xvY2FsZSkseG8ubGVuZ3RoPjApZm9yKGk9MDtpPHhvLmxlbmd0aDtpKyspbz14b1tpXSxuPWVbb10scyhuKXx8KHRbb109bik7cmV0dXJuIHR9ZnVuY3Rpb24gZyh0KXt2KHRoaXMsdCksdGhpcy5fZD1uZXcgRGF0ZShudWxsIT10Ll9kP3QuX2QuZ2V0VGltZSgpOk5hTiksdGhpcy5pc1ZhbGlkKCl8fCh0aGlzLl9kPW5ldyBEYXRlKE5hTikpLCExPT09a28mJihrbz0hMCxlLnVwZGF0ZU9mZnNldCh0aGlzKSxrbz0hMSl9ZnVuY3Rpb24geSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGd8fG51bGwhPXQmJm51bGwhPXQuX2lzQU1vbWVudE9iamVjdH1mdW5jdGlvbiBiKHQpe3JldHVybiB0PDA/TWF0aC5jZWlsKHQpfHwwOk1hdGguZmxvb3IodCl9ZnVuY3Rpb24gXyh0KXt2YXIgZT0rdCxpPTA7cmV0dXJuIDAhPT1lJiZpc0Zpbml0ZShlKSYmKGk9YihlKSksaX1mdW5jdGlvbiB3KHQsZSxpKXt2YXIgbyxuPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKSxzPU1hdGguYWJzKHQubGVuZ3RoLWUubGVuZ3RoKSxyPTA7Zm9yKG89MDtvPG47bysrKShpJiZ0W29dIT09ZVtvXXx8IWkmJl8odFtvXSkhPT1fKGVbb10pKSYmcisrO3JldHVybiByK3N9ZnVuY3Rpb24geCh0KXshMT09PWUuc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzJiYidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCJEZXByZWNhdGlvbiB3YXJuaW5nOiAiK3QpfWZ1bmN0aW9uIGsodCxpKXt2YXIgbz0hMDtyZXR1cm4gbChmdW5jdGlvbigpe2lmKG51bGwhPWUuZGVwcmVjYXRpb25IYW5kbGVyJiZlLmRlcHJlY2F0aW9uSGFuZGxlcihudWxsLHQpLG8pe2Zvcih2YXIgbixzPVtdLHI9MDtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXtpZihuPSIiLCJvYmplY3QiPT10eXBlb2YgYXJndW1lbnRzW3JdKXtuKz0iXG5bIityKyJdICI7Zm9yKHZhciBhIGluIGFyZ3VtZW50c1swXSluKz1hKyI6ICIrYXJndW1lbnRzWzBdW2FdKyIsICI7bj1uLnNsaWNlKDAsLTIpfWVsc2Ugbj1hcmd1bWVudHNbcl07cy5wdXNoKG4pfXgodCsiXG5Bcmd1bWVudHM6ICIrQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwocykuam9pbigiIikrIlxuIisobmV3IEVycm9yKS5zdGFjayksbz0hMX1yZXR1cm4gaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGkpfWZ1bmN0aW9uIEQodCxpKXtudWxsIT1lLmRlcHJlY2F0aW9uSGFuZGxlciYmZS5kZXByZWNhdGlvbkhhbmRsZXIodCxpKSxEb1t0XXx8KHgoaSksRG9bdF09ITApfWZ1bmN0aW9uIE0odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBGdW5jdGlvbnx8IltvYmplY3QgRnVuY3Rpb25dIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBTKHQpe3ZhciBlLGk7Zm9yKGkgaW4gdCllPXRbaV0sTShlKT90aGlzW2ldPWU6dGhpc1siXyIraV09ZTt0aGlzLl9jb25maWc9dCx0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudD1uZXcgUmVnRXhwKCh0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlLnNvdXJjZXx8dGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSkrInwiKy9cZHsxLDJ9Ly5zb3VyY2UpfWZ1bmN0aW9uIE8odCxlKXt2YXIgaSxuPWwoe30sdCk7Zm9yKGkgaW4gZSlkKGUsaSkmJihvKHRbaV0pJiZvKGVbaV0pPyhuW2ldPXt9LGwobltpXSx0W2ldKSxsKG5baV0sZVtpXSkpOm51bGwhPWVbaV0/bltpXT1lW2ldOmRlbGV0ZSBuW2ldKTtmb3IoaSBpbiB0KWQodCxpKSYmIWQoZSxpKSYmbyh0W2ldKSYmKG5baV09bCh7fSxuW2ldKSk7cmV0dXJuIG59ZnVuY3Rpb24gQyh0KXtudWxsIT10JiZ0aGlzLnNldCh0KX1mdW5jdGlvbiBUKHQsZSxpKXt2YXIgbz10aGlzLl9jYWxlbmRhclt0XXx8dGhpcy5fY2FsZW5kYXIuc2FtZUVsc2U7cmV0dXJuIE0obyk/by5jYWxsKGUsaSk6b31mdW5jdGlvbiBFKHQpe3ZhciBlPXRoaXMuX2xvbmdEYXRlRm9ybWF0W3RdLGk9dGhpcy5fbG9uZ0RhdGVGb3JtYXRbdC50b1VwcGVyQ2FzZSgpXTtyZXR1cm4gZXx8IWk/ZToodGhpcy5fbG9uZ0RhdGVGb3JtYXRbdF09aS5yZXBsYWNlKC9NTU1NfE1NfEREfGRkZGQvZyxmdW5jdGlvbih0KXtyZXR1cm4gdC5zbGljZSgxKX0pLHRoaXMuX2xvbmdEYXRlRm9ybWF0W3RdKX1mdW5jdGlvbiBQKCl7cmV0dXJuIHRoaXMuX2ludmFsaWREYXRlfWZ1bmN0aW9uIEkodCl7cmV0dXJuIHRoaXMuX29yZGluYWwucmVwbGFjZSgiJWQiLHQpfWZ1bmN0aW9uIE4odCxlLGksbyl7dmFyIG49dGhpcy5fcmVsYXRpdmVUaW1lW2ldO3JldHVybiBNKG4pP24odCxlLGksbyk6bi5yZXBsYWNlKC8lZC9pLHQpfWZ1bmN0aW9uIEEodCxlKXt2YXIgaT10aGlzLl9yZWxhdGl2ZVRpbWVbdD4wPyJmdXR1cmUiOiJwYXN0Il07cmV0dXJuIE0oaSk/aShlKTppLnJlcGxhY2UoLyVzL2ksZSl9ZnVuY3Rpb24gUih0LGUpe3ZhciBpPXQudG9Mb3dlckNhc2UoKTtJb1tpXT1Jb1tpKyJzIl09SW9bZV09dH1mdW5jdGlvbiB6KHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9Jb1t0XXx8SW9bdC50b0xvd2VyQ2FzZSgpXTp2b2lkIDB9ZnVuY3Rpb24gTCh0KXt2YXIgZSxpLG89e307Zm9yKGkgaW4gdClkKHQsaSkmJihlPXooaSkpJiYob1tlXT10W2ldKTtyZXR1cm4gb31mdW5jdGlvbiBGKHQsZSl7Tm9bdF09ZX1mdW5jdGlvbiBCKHQpe3ZhciBlPVtdO2Zvcih2YXIgaSBpbiB0KWUucHVzaCh7dW5pdDppLHByaW9yaXR5Ok5vW2ldfSk7cmV0dXJuIGUuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LnByaW9yaXR5LWUucHJpb3JpdHl9KSxlfWZ1bmN0aW9uIGoodCxpKXtyZXR1cm4gZnVuY3Rpb24obyl7cmV0dXJuIG51bGwhPW8/KFcodGhpcyx0LG8pLGUudXBkYXRlT2Zmc2V0KHRoaXMsaSksdGhpcyk6SCh0aGlzLHQpfX1mdW5jdGlvbiBIKHQsZSl7cmV0dXJuIHQuaXNWYWxpZCgpP3QuX2RbImdldCIrKHQuX2lzVVRDPyJVVEMiOiIiKStlXSgpOk5hTn1mdW5jdGlvbiBXKHQsZSxpKXt0LmlzVmFsaWQoKSYmdC5fZFsic2V0IisodC5faXNVVEM/IlVUQyI6IiIpK2VdKGkpfWZ1bmN0aW9uIFkodCl7cmV0dXJuIHQ9eih0KSxNKHRoaXNbdF0pP3RoaXNbdF0oKTp0aGlzfWZ1bmN0aW9uIEcodCxlKXtpZigib2JqZWN0Ij09dHlwZW9mIHQpe3Q9TCh0KTtmb3IodmFyIGk9Qih0KSxvPTA7bzxpLmxlbmd0aDtvKyspdGhpc1tpW29dLnVuaXRdKHRbaVtvXS51bml0XSl9ZWxzZSBpZih0PXoodCksTSh0aGlzW3RdKSlyZXR1cm4gdGhpc1t0XShlKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBWKHQsZSxpKXt2YXIgbz0iIitNYXRoLmFicyh0KSxuPWUtby5sZW5ndGg7cmV0dXJuKHQ+PTA/aT8iKyI6IiI6Ii0iKStNYXRoLnBvdygxMCxNYXRoLm1heCgwLG4pKS50b1N0cmluZygpLnN1YnN0cigxKStvfWZ1bmN0aW9uIFUodCxlLGksbyl7dmFyIG49bzsic3RyaW5nIj09dHlwZW9mIG8mJihuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbb10oKX0pLHQmJihMb1t0XT1uKSxlJiYoTG9bZVswXV09ZnVuY3Rpb24oKXtyZXR1cm4gVihuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlWzFdLGVbMl0pfSksaSYmKExvW2ldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm9yZGluYWwobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksdCl9KX1mdW5jdGlvbiBxKHQpe3JldHVybiB0Lm1hdGNoKC9cW1tcc1xTXS8pP3QucmVwbGFjZSgvXlxbfFxdJC9nLCIiKTp0LnJlcGxhY2UoL1xcL2csIiIpfWZ1bmN0aW9uIFgodCl7dmFyIGUsaSxvPXQubWF0Y2goQW8pO2ZvcihlPTAsaT1vLmxlbmd0aDtlPGk7ZSsrKUxvW29bZV1dP29bZV09TG9bb1tlXV06b1tlXT1xKG9bZV0pO3JldHVybiBmdW5jdGlvbihlKXt2YXIgbixzPSIiO2ZvcihuPTA7bjxpO24rKylzKz1NKG9bbl0pP29bbl0uY2FsbChlLHQpOm9bbl07cmV0dXJuIHN9fWZ1bmN0aW9uIFoodCxlKXtyZXR1cm4gdC5pc1ZhbGlkKCk/KGU9SyhlLHQubG9jYWxlRGF0YSgpKSx6b1tlXT16b1tlXXx8WChlKSx6b1tlXSh0KSk6dC5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKX1mdW5jdGlvbiBLKHQsZSl7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gZS5sb25nRGF0ZUZvcm1hdCh0KXx8dH12YXIgbz01O2ZvcihSby5sYXN0SW5kZXg9MDtvPj0wJiZSby50ZXN0KHQpOyl0PXQucmVwbGFjZShSbyxpKSxSby5sYXN0SW5kZXg9MCxvLT0xO3JldHVybiB0fWZ1bmN0aW9uIEoodCxlLGkpe2VuW3RdPU0oZSk/ZTpmdW5jdGlvbih0LG8pe3JldHVybiB0JiZpP2k6ZX19ZnVuY3Rpb24gUSh0LGUpe3JldHVybiBkKGVuLHQpP2VuW3RdKGUuX3N0cmljdCxlLl9sb2NhbGUpOm5ldyBSZWdFeHAoJCh0KSl9ZnVuY3Rpb24gJCh0KXtyZXR1cm4gdHQodC5yZXBsYWNlKCJcXCIsIiIpLnJlcGxhY2UoL1xcKFxbKXxcXChcXSl8XFsoW15cXVxbXSopXF18XFwoLikvZyxmdW5jdGlvbih0LGUsaSxvLG4pe3JldHVybiBlfHxpfHxvfHxufSkpfWZ1bmN0aW9uIHR0KHQpe3JldHVybiB0LnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIil9ZnVuY3Rpb24gZXQodCxlKXt2YXIgaSxvPWU7Zm9yKCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9W3RdKSxyKGUpJiYobz1mdW5jdGlvbih0LGkpe2lbZV09Xyh0KX0pLGk9MDtpPHQubGVuZ3RoO2krKylvblt0W2ldXT1vfWZ1bmN0aW9uIGl0KHQsZSl7ZXQodCxmdW5jdGlvbih0LGksbyxuKXtvLl93PW8uX3d8fHt9LGUodCxvLl93LG8sbil9KX1mdW5jdGlvbiBvdCh0LGUsaSl7bnVsbCE9ZSYmZChvbix0KSYmb25bdF0oZSxpLl9hLGksdCl9ZnVuY3Rpb24gbnQodCxlKXtyZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModCxlKzEsMCkpLmdldFVUQ0RhdGUoKX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiB0P2kodGhpcy5fbW9udGhzKT90aGlzLl9tb250aHNbdC5tb250aCgpXTp0aGlzLl9tb250aHNbKHRoaXMuX21vbnRocy5pc0Zvcm1hdHx8Zm4pLnRlc3QoZSk/ImZvcm1hdCI6InN0YW5kYWxvbmUiXVt0Lm1vbnRoKCldOmkodGhpcy5fbW9udGhzKT90aGlzLl9tb250aHM6dGhpcy5fbW9udGhzLnN0YW5kYWxvbmV9ZnVuY3Rpb24gcnQodCxlKXtyZXR1cm4gdD9pKHRoaXMuX21vbnRoc1Nob3J0KT90aGlzLl9tb250aHNTaG9ydFt0Lm1vbnRoKCldOnRoaXMuX21vbnRoc1Nob3J0W2ZuLnRlc3QoZSk/ImZvcm1hdCI6InN0YW5kYWxvbmUiXVt0Lm1vbnRoKCldOmkodGhpcy5fbW9udGhzU2hvcnQpP3RoaXMuX21vbnRoc1Nob3J0OnRoaXMuX21vbnRoc1Nob3J0LnN0YW5kYWxvbmV9ZnVuY3Rpb24gYXQodCxlLGkpe3ZhciBvLG4scyxyPXQudG9Mb2NhbGVMb3dlckNhc2UoKTtpZighdGhpcy5fbW9udGhzUGFyc2UpZm9yKHRoaXMuX21vbnRoc1BhcnNlPVtdLHRoaXMuX2xvbmdNb250aHNQYXJzZT1bXSx0aGlzLl9zaG9ydE1vbnRoc1BhcnNlPVtdLG89MDtvPDEyOysrbylzPXUoWzJlMyxvXSksdGhpcy5fc2hvcnRNb250aHNQYXJzZVtvXT10aGlzLm1vbnRoc1Nob3J0KHMsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCksdGhpcy5fbG9uZ01vbnRoc1BhcnNlW29dPXRoaXMubW9udGhzKHMsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCk7cmV0dXJuIGk/Ik1NTSI9PT1lPyhuPXBuLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSxyKSwtMSE9PW4/bjpudWxsKToobj1wbi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSxyKSwtMSE9PW4/bjpudWxsKToiTU1NIj09PWU/LTEhPT0obj1wbi5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UscikpP246KG49cG4uY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsciksLTEhPT1uP246bnVsbCk6LTEhPT0obj1wbi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSxyKSk/bjoobj1wbi5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsciksLTEhPT1uP246bnVsbCl9ZnVuY3Rpb24gaHQodCxlLGkpe3ZhciBvLG4scztpZih0aGlzLl9tb250aHNQYXJzZUV4YWN0KXJldHVybiBhdC5jYWxsKHRoaXMsdCxlLGkpO2Zvcih0aGlzLl9tb250aHNQYXJzZXx8KHRoaXMuX21vbnRoc1BhcnNlPVtdLHRoaXMuX2xvbmdNb250aHNQYXJzZT1bXSx0aGlzLl9zaG9ydE1vbnRoc1BhcnNlPVtdKSxvPTA7bzwxMjtvKyspe2lmKG49dShbMmUzLG9dKSxpJiYhdGhpcy5fbG9uZ01vbnRoc1BhcnNlW29dJiYodGhpcy5fbG9uZ01vbnRoc1BhcnNlW29dPW5ldyBSZWdFeHAoIl4iK3RoaXMubW9udGhzKG4sIiIpLnJlcGxhY2UoIi4iLCIiKSsiJCIsImkiKSx0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW29dPW5ldyBSZWdFeHAoIl4iK3RoaXMubW9udGhzU2hvcnQobiwiIikucmVwbGFjZSgiLiIsIiIpKyIkIiwiaSIpKSxpfHx0aGlzLl9tb250aHNQYXJzZVtvXXx8KHM9Il4iK3RoaXMubW9udGhzKG4sIiIpKyJ8XiIrdGhpcy5tb250aHNTaG9ydChuLCIiKSx0aGlzLl9tb250aHNQYXJzZVtvXT1uZXcgUmVnRXhwKHMucmVwbGFjZSgiLiIsIiIpLCJpIikpLGkmJiJNTU1NIj09PWUmJnRoaXMuX2xvbmdNb250aHNQYXJzZVtvXS50ZXN0KHQpKXJldHVybiBvO2lmKGkmJiJNTU0iPT09ZSYmdGhpcy5fc2hvcnRNb250aHNQYXJzZVtvXS50ZXN0KHQpKXJldHVybiBvO2lmKCFpJiZ0aGlzLl9tb250aHNQYXJzZVtvXS50ZXN0KHQpKXJldHVybiBvfX1mdW5jdGlvbiBkdCh0LGUpe3ZhciBpO2lmKCF0LmlzVmFsaWQoKSlyZXR1cm4gdDtpZigic3RyaW5nIj09dHlwZW9mIGUpaWYoL15cZCskLy50ZXN0KGUpKWU9XyhlKTtlbHNlIGlmKGU9dC5sb2NhbGVEYXRhKCkubW9udGhzUGFyc2UoZSksIXIoZSkpcmV0dXJuIHQ7cmV0dXJuIGk9TWF0aC5taW4odC5kYXRlKCksbnQodC55ZWFyKCksZSkpLHQuX2RbInNldCIrKHQuX2lzVVRDPyJVVEMiOiIiKSsiTW9udGgiXShlLGkpLHR9ZnVuY3Rpb24gbHQodCl7cmV0dXJuIG51bGwhPXQ/KGR0KHRoaXMsdCksZS51cGRhdGVPZmZzZXQodGhpcywhMCksdGhpcyk6SCh0aGlzLCJNb250aCIpfWZ1bmN0aW9uIHV0KCl7cmV0dXJuIG50KHRoaXMueWVhcigpLHRoaXMubW9udGgoKSl9ZnVuY3Rpb24gY3QodCl7cmV0dXJuIHRoaXMuX21vbnRoc1BhcnNlRXhhY3Q/KGQodGhpcywiX21vbnRoc1JlZ2V4Iil8fGZ0LmNhbGwodGhpcyksdD90aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1Nob3J0UmVnZXgpOihkKHRoaXMsIl9tb250aHNTaG9ydFJlZ2V4Iil8fCh0aGlzLl9tb250aHNTaG9ydFJlZ2V4PWduKSx0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4JiZ0P3RoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fbW9udGhzU2hvcnRSZWdleCl9ZnVuY3Rpb24gcHQodCl7cmV0dXJuIHRoaXMuX21vbnRoc1BhcnNlRXhhY3Q/KGQodGhpcywiX21vbnRoc1JlZ2V4Iil8fGZ0LmNhbGwodGhpcyksdD90aGlzLl9tb250aHNTdHJpY3RSZWdleDp0aGlzLl9tb250aHNSZWdleCk6KGQodGhpcywiX21vbnRoc1JlZ2V4Iil8fCh0aGlzLl9tb250aHNSZWdleD15biksdGhpcy5fbW9udGhzU3RyaWN0UmVnZXgmJnQ/dGhpcy5fbW9udGhzU3RyaWN0UmVnZXg6dGhpcy5fbW9udGhzUmVnZXgpfWZ1bmN0aW9uIGZ0KCl7ZnVuY3Rpb24gdCh0LGUpe3JldHVybiBlLmxlbmd0aC10Lmxlbmd0aH12YXIgZSxpLG89W10sbj1bXSxzPVtdO2ZvcihlPTA7ZTwxMjtlKyspaT11KFsyZTMsZV0pLG8ucHVzaCh0aGlzLm1vbnRoc1Nob3J0KGksIiIpKSxuLnB1c2godGhpcy5tb250aHMoaSwiIikpLHMucHVzaCh0aGlzLm1vbnRocyhpLCIiKSkscy5wdXNoKHRoaXMubW9udGhzU2hvcnQoaSwiIikpO2ZvcihvLnNvcnQodCksbi5zb3J0KHQpLHMuc29ydCh0KSxlPTA7ZTwxMjtlKyspb1tlXT10dChvW2VdKSxuW2VdPXR0KG5bZV0pO2ZvcihlPTA7ZTwyNDtlKyspc1tlXT10dChzW2VdKTt0aGlzLl9tb250aHNSZWdleD1uZXcgUmVnRXhwKCJeKCIrcy5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fbW9udGhzU2hvcnRSZWdleD10aGlzLl9tb250aHNSZWdleCx0aGlzLl9tb250aHNTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrbi5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrby5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gbXQodCl7cmV0dXJuIHZ0KHQpPzM2NjozNjV9ZnVuY3Rpb24gdnQodCl7cmV0dXJuIHQlND09MCYmdCUxMDAhPTB8fHQlNDAwPT0wfWZ1bmN0aW9uIGd0KCl7cmV0dXJuIHZ0KHRoaXMueWVhcigpKX1mdW5jdGlvbiB5dCh0LGUsaSxvLG4scyxyKXt2YXIgYT1uZXcgRGF0ZSh0LGUsaSxvLG4scyxyKTtyZXR1cm4gdDwxMDAmJnQ+PTAmJmlzRmluaXRlKGEuZ2V0RnVsbFllYXIoKSkmJmEuc2V0RnVsbFllYXIodCksYX1mdW5jdGlvbiBidCh0KXt2YXIgZT1uZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLGFyZ3VtZW50cykpO3JldHVybiB0PDEwMCYmdD49MCYmaXNGaW5pdGUoZS5nZXRVVENGdWxsWWVhcigpKSYmZS5zZXRVVENGdWxsWWVhcih0KSxlfWZ1bmN0aW9uIF90KHQsZSxpKXt2YXIgbz03K2UtaTtyZXR1cm4tKDcrYnQodCwwLG8pLmdldFVUQ0RheSgpLWUpJTcrby0xfWZ1bmN0aW9uIHd0KHQsZSxpLG8sbil7dmFyIHMscixhPSg3K2ktbyklNyxoPV90KHQsbyxuKSxkPTErNyooZS0xKSthK2g7cmV0dXJuIGQ8PTA/KHM9dC0xLHI9bXQocykrZCk6ZD5tdCh0KT8ocz10KzEscj1kLW10KHQpKToocz10LHI9ZCkse3llYXI6cyxkYXlPZlllYXI6cn19ZnVuY3Rpb24geHQodCxlLGkpe3ZhciBvLG4scz1fdCh0LnllYXIoKSxlLGkpLHI9TWF0aC5mbG9vcigodC5kYXlPZlllYXIoKS1zLTEpLzcpKzE7cmV0dXJuIHI8MT8obj10LnllYXIoKS0xLG89citrdChuLGUsaSkpOnI+a3QodC55ZWFyKCksZSxpKT8obz1yLWt0KHQueWVhcigpLGUsaSksbj10LnllYXIoKSsxKToobj10LnllYXIoKSxvPXIpLHt3ZWVrOm8seWVhcjpufX1mdW5jdGlvbiBrdCh0LGUsaSl7dmFyIG89X3QodCxlLGkpLG49X3QodCsxLGUsaSk7cmV0dXJuKG10KHQpLW8rbikvN31mdW5jdGlvbiBEdCh0KXtyZXR1cm4geHQodCx0aGlzLl93ZWVrLmRvdyx0aGlzLl93ZWVrLmRveSkud2Vla31mdW5jdGlvbiBNdCgpe3JldHVybiB0aGlzLl93ZWVrLmRvd31mdW5jdGlvbiBTdCgpe3JldHVybiB0aGlzLl93ZWVrLmRveX1mdW5jdGlvbiBPdCh0KXt2YXIgZT10aGlzLmxvY2FsZURhdGEoKS53ZWVrKHRoaXMpO3JldHVybiBudWxsPT10P2U6dGhpcy5hZGQoNyoodC1lKSwiZCIpfWZ1bmN0aW9uIEN0KHQpe3ZhciBlPXh0KHRoaXMsMSw0KS53ZWVrO3JldHVybiBudWxsPT10P2U6dGhpcy5hZGQoNyoodC1lKSwiZCIpfWZ1bmN0aW9uIFR0KHQsZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiB0P3Q6aXNOYU4odCk/KHQ9ZS53ZWVrZGF5c1BhcnNlKHQpLCJudW1iZXIiPT10eXBlb2YgdD90Om51bGwpOnBhcnNlSW50KHQsMTApfWZ1bmN0aW9uIEV0KHQsZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P2Uud2Vla2RheXNQYXJzZSh0KSU3fHw3OmlzTmFOKHQpP251bGw6dH1mdW5jdGlvbiBQdCh0LGUpe3JldHVybiB0P2kodGhpcy5fd2Vla2RheXMpP3RoaXMuX3dlZWtkYXlzW3QuZGF5KCldOnRoaXMuX3dlZWtkYXlzW3RoaXMuX3dlZWtkYXlzLmlzRm9ybWF0LnRlc3QoZSk/ImZvcm1hdCI6InN0YW5kYWxvbmUiXVt0LmRheSgpXTppKHRoaXMuX3dlZWtkYXlzKT90aGlzLl93ZWVrZGF5czp0aGlzLl93ZWVrZGF5cy5zdGFuZGFsb25lfWZ1bmN0aW9uIEl0KHQpe3JldHVybiB0P3RoaXMuX3dlZWtkYXlzU2hvcnRbdC5kYXkoKV06dGhpcy5fd2Vla2RheXNTaG9ydH1mdW5jdGlvbiBOdCh0KXtyZXR1cm4gdD90aGlzLl93ZWVrZGF5c01pblt0LmRheSgpXTp0aGlzLl93ZWVrZGF5c01pbn1mdW5jdGlvbiBBdCh0LGUsaSl7dmFyIG8sbixzLHI9dC50b0xvY2FsZUxvd2VyQ2FzZSgpO2lmKCF0aGlzLl93ZWVrZGF5c1BhcnNlKWZvcih0aGlzLl93ZWVrZGF5c1BhcnNlPVtdLHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZT1bXSx0aGlzLl9taW5XZWVrZGF5c1BhcnNlPVtdLG89MDtvPDc7KytvKXM9dShbMmUzLDFdKS5kYXkobyksdGhpcy5fbWluV2Vla2RheXNQYXJzZVtvXT10aGlzLndlZWtkYXlzTWluKHMsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCksdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW29dPXRoaXMud2Vla2RheXNTaG9ydChzLCIiKS50b0xvY2FsZUxvd2VyQ2FzZSgpLHRoaXMuX3dlZWtkYXlzUGFyc2Vbb109dGhpcy53ZWVrZGF5cyhzLCIiKS50b0xvY2FsZUxvd2VyQ2FzZSgpO3JldHVybiBpPyJkZGRkIj09PWU/KG49cG4uY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLHIpLC0xIT09bj9uOm51bGwpOiJkZGQiPT09ZT8obj1wbi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSxyKSwtMSE9PW4/bjpudWxsKToobj1wbi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsciksLTEhPT1uP246bnVsbCk6ImRkZGQiPT09ZT8tMSE9PShuPXBuLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSxyKSk/bjotMSE9PShuPXBuLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLHIpKT9uOihuPXBuLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxyKSwtMSE9PW4/bjpudWxsKToiZGRkIj09PWU/LTEhPT0obj1wbi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSxyKSk/bjotMSE9PShuPXBuLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSxyKSk/bjoobj1wbi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsciksLTEhPT1uP246bnVsbCk6LTEhPT0obj1wbi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UscikpP246LTEhPT0obj1wbi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UscikpP246KG49cG4uY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsciksLTEhPT1uP246bnVsbCl9ZnVuY3Rpb24gUnQodCxlLGkpe3ZhciBvLG4scztpZih0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpcmV0dXJuIEF0LmNhbGwodGhpcyx0LGUsaSk7Zm9yKHRoaXMuX3dlZWtkYXlzUGFyc2V8fCh0aGlzLl93ZWVrZGF5c1BhcnNlPVtdLHRoaXMuX21pbldlZWtkYXlzUGFyc2U9W10sdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlPVtdLHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlPVtdKSxvPTA7bzw3O28rKyl7aWYobj11KFsyZTMsMV0pLmRheShvKSxpJiYhdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2Vbb10mJih0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtvXT1uZXcgUmVnRXhwKCJeIit0aGlzLndlZWtkYXlzKG4sIiIpLnJlcGxhY2UoIi4iLCIuPyIpKyIkIiwiaSIpLHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtvXT1uZXcgUmVnRXhwKCJeIit0aGlzLndlZWtkYXlzU2hvcnQobiwiIikucmVwbGFjZSgiLiIsIi4/IikrIiQiLCJpIiksdGhpcy5fbWluV2Vla2RheXNQYXJzZVtvXT1uZXcgUmVnRXhwKCJeIit0aGlzLndlZWtkYXlzTWluKG4sIiIpLnJlcGxhY2UoIi4iLCIuPyIpKyIkIiwiaSIpKSx0aGlzLl93ZWVrZGF5c1BhcnNlW29dfHwocz0iXiIrdGhpcy53ZWVrZGF5cyhuLCIiKSsifF4iK3RoaXMud2Vla2RheXNTaG9ydChuLCIiKSsifF4iK3RoaXMud2Vla2RheXNNaW4obiwiIiksdGhpcy5fd2Vla2RheXNQYXJzZVtvXT1uZXcgUmVnRXhwKHMucmVwbGFjZSgiLiIsIiIpLCJpIikpLGkmJiJkZGRkIj09PWUmJnRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW29dLnRlc3QodCkpcmV0dXJuIG87aWYoaSYmImRkZCI9PT1lJiZ0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2Vbb10udGVzdCh0KSlyZXR1cm4gbztpZihpJiYiZGQiPT09ZSYmdGhpcy5fbWluV2Vla2RheXNQYXJzZVtvXS50ZXN0KHQpKXJldHVybiBvO2lmKCFpJiZ0aGlzLl93ZWVrZGF5c1BhcnNlW29dLnRlc3QodCkpcmV0dXJuIG99fWZ1bmN0aW9uIHp0KHQpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9dD90aGlzOk5hTjt2YXIgZT10aGlzLl9pc1VUQz90aGlzLl9kLmdldFVUQ0RheSgpOnRoaXMuX2QuZ2V0RGF5KCk7cmV0dXJuIG51bGwhPXQ/KHQ9VHQodCx0aGlzLmxvY2FsZURhdGEoKSksdGhpcy5hZGQodC1lLCJkIikpOmV9ZnVuY3Rpb24gTHQodCl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBudWxsIT10P3RoaXM6TmFOO3ZhciBlPSh0aGlzLmRheSgpKzctdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93KSU3O3JldHVybiBudWxsPT10P2U6dGhpcy5hZGQodC1lLCJkIil9ZnVuY3Rpb24gRnQodCl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBudWxsIT10P3RoaXM6TmFOO2lmKG51bGwhPXQpe3ZhciBlPUV0KHQsdGhpcy5sb2NhbGVEYXRhKCkpO3JldHVybiB0aGlzLmRheSh0aGlzLmRheSgpJTc/ZTplLTcpfXJldHVybiB0aGlzLmRheSgpfHw3fWZ1bmN0aW9uIEJ0KHQpe3JldHVybiB0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3Q/KGQodGhpcywiX3dlZWtkYXlzUmVnZXgiKXx8V3QuY2FsbCh0aGlzKSx0P3RoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNSZWdleCk6KGQodGhpcywiX3dlZWtkYXlzUmVnZXgiKXx8KHRoaXMuX3dlZWtkYXlzUmVnZXg9RG4pLHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXgmJnQ/dGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c1JlZ2V4KX1mdW5jdGlvbiBqdCh0KXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhkKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fFd0LmNhbGwodGhpcyksdD90aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4KTooZCh0aGlzLCJfd2Vla2RheXNTaG9ydFJlZ2V4Iil8fCh0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXg9TW4pLHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCYmdD90aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4KX1mdW5jdGlvbiBIdCh0KXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhkKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fFd0LmNhbGwodGhpcyksdD90aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzTWluUmVnZXgpOihkKHRoaXMsIl93ZWVrZGF5c01pblJlZ2V4Iil8fCh0aGlzLl93ZWVrZGF5c01pblJlZ2V4PVNuKSx0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4JiZ0P3RoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNNaW5SZWdleCl9ZnVuY3Rpb24gV3QoKXtmdW5jdGlvbiB0KHQsZSl7cmV0dXJuIGUubGVuZ3RoLXQubGVuZ3RofXZhciBlLGksbyxuLHMscj1bXSxhPVtdLGg9W10sZD1bXTtmb3IoZT0wO2U8NztlKyspaT11KFsyZTMsMV0pLmRheShlKSxvPXRoaXMud2Vla2RheXNNaW4oaSwiIiksbj10aGlzLndlZWtkYXlzU2hvcnQoaSwiIikscz10aGlzLndlZWtkYXlzKGksIiIpLHIucHVzaChvKSxhLnB1c2gobiksaC5wdXNoKHMpLGQucHVzaChvKSxkLnB1c2gobiksZC5wdXNoKHMpO2ZvcihyLnNvcnQodCksYS5zb3J0KHQpLGguc29ydCh0KSxkLnNvcnQodCksZT0wO2U8NztlKyspYVtlXT10dChhW2VdKSxoW2VdPXR0KGhbZV0pLGRbZV09dHQoZFtlXSk7dGhpcy5fd2Vla2RheXNSZWdleD1uZXcgUmVnRXhwKCJeKCIrZC5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4PXRoaXMuX3dlZWtkYXlzUmVnZXgsdGhpcy5fd2Vla2RheXNNaW5SZWdleD10aGlzLl93ZWVrZGF5c1JlZ2V4LHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK2guam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrYS5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrci5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gWXQoKXtyZXR1cm4gdGhpcy5ob3VycygpJTEyfHwxMn1mdW5jdGlvbiBHdCgpe3JldHVybiB0aGlzLmhvdXJzKCl8fDI0fWZ1bmN0aW9uIFZ0KHQsZSl7VSh0LDAsMCxmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tZXJpZGllbSh0aGlzLmhvdXJzKCksdGhpcy5taW51dGVzKCksZSl9KX1mdW5jdGlvbiBVdCh0LGUpe3JldHVybiBlLl9tZXJpZGllbVBhcnNlfWZ1bmN0aW9uIHF0KHQpe3JldHVybiJwIj09PSh0KyIiKS50b0xvd2VyQ2FzZSgpLmNoYXJBdCgwKX1mdW5jdGlvbiBYdCh0LGUsaSl7cmV0dXJuIHQ+MTE/aT8icG0iOiJQTSI6aT8iYW0iOiJBTSJ9ZnVuY3Rpb24gWnQodCl7cmV0dXJuIHQ/dC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoIl8iLCItIik6dH1mdW5jdGlvbiBLdCh0KXtmb3IodmFyIGUsaSxvLG4scz0wO3M8dC5sZW5ndGg7KXtmb3Iobj1adCh0W3NdKS5zcGxpdCgiLSIpLGU9bi5sZW5ndGgsaT1adCh0W3MrMV0pLGk9aT9pLnNwbGl0KCItIik6bnVsbDtlPjA7KXtpZihvPUp0KG4uc2xpY2UoMCxlKS5qb2luKCItIikpKXJldHVybiBvO2lmKGkmJmkubGVuZ3RoPj1lJiZ3KG4saSwhMCk+PWUtMSlicmVhaztlLS19cysrfXJldHVybiBudWxsfWZ1bmN0aW9uIEp0KGUpe3ZhciBpPW51bGw7aWYoIVBuW2VdJiZ2b2lkIDAhPT10JiZ0JiZ0LmV4cG9ydHMpdHJ5e2k9T24uX2FiYnIsZnVuY3Rpb24oKXt2YXIgdD1uZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIG1vZHVsZSAiLi9sb2NhbGUiJyk7dGhyb3cgdC5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIix0fSgpLFF0KGkpfWNhdGNoKHQpe31yZXR1cm4gUG5bZV19ZnVuY3Rpb24gUXQodCxlKXt2YXIgaTtyZXR1cm4gdCYmKGk9cyhlKT9lZSh0KTokdCh0LGUpKSYmKE9uPWkpLE9uLl9hYmJyfWZ1bmN0aW9uICR0KHQsZSl7aWYobnVsbCE9PWUpe3ZhciBpPUVuO2lmKGUuYWJicj10LG51bGwhPVBuW3RdKUQoImRlZmluZUxvY2FsZU92ZXJyaWRlIiwidXNlIG1vbWVudC51cGRhdGVMb2NhbGUobG9jYWxlTmFtZSwgY29uZmlnKSB0byBjaGFuZ2UgYW4gZXhpc3RpbmcgbG9jYWxlLiBtb21lbnQuZGVmaW5lTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgY3JlYXRpbmcgYSBuZXcgbG9jYWxlIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RlZmluZS1sb2NhbGUvIGZvciBtb3JlIGluZm8uIiksaT1Qblt0XS5fY29uZmlnO2Vsc2UgaWYobnVsbCE9ZS5wYXJlbnRMb2NhbGUpe2lmKG51bGw9PVBuW2UucGFyZW50TG9jYWxlXSlyZXR1cm4gSW5bZS5wYXJlbnRMb2NhbGVdfHwoSW5bZS5wYXJlbnRMb2NhbGVdPVtdKSxJbltlLnBhcmVudExvY2FsZV0ucHVzaCh7bmFtZTp0LGNvbmZpZzplfSksbnVsbDtpPVBuW2UucGFyZW50TG9jYWxlXS5fY29uZmlnfXJldHVybiBQblt0XT1uZXcgQyhPKGksZSkpLEluW3RdJiZJblt0XS5mb3JFYWNoKGZ1bmN0aW9uKHQpeyR0KHQubmFtZSx0LmNvbmZpZyl9KSxRdCh0KSxQblt0XX1yZXR1cm4gZGVsZXRlIFBuW3RdLG51bGx9ZnVuY3Rpb24gdGUodCxlKXtpZihudWxsIT1lKXt2YXIgaSxvPUVuO251bGwhPVBuW3RdJiYobz1Qblt0XS5fY29uZmlnKSxlPU8obyxlKSxpPW5ldyBDKGUpLGkucGFyZW50TG9jYWxlPVBuW3RdLFBuW3RdPWksUXQodCl9ZWxzZSBudWxsIT1Qblt0XSYmKG51bGwhPVBuW3RdLnBhcmVudExvY2FsZT9Qblt0XT1Qblt0XS5wYXJlbnRMb2NhbGU6bnVsbCE9UG5bdF0mJmRlbGV0ZSBQblt0XSk7cmV0dXJuIFBuW3RdfWZ1bmN0aW9uIGVlKHQpe3ZhciBlO2lmKHQmJnQuX2xvY2FsZSYmdC5fbG9jYWxlLl9hYmJyJiYodD10Ll9sb2NhbGUuX2FiYnIpLCF0KXJldHVybiBPbjtpZighaSh0KSl7aWYoZT1KdCh0KSlyZXR1cm4gZTt0PVt0XX1yZXR1cm4gS3QodCl9ZnVuY3Rpb24gaWUoKXtyZXR1cm4gT28oUG4pfWZ1bmN0aW9uIG9lKHQpe3ZhciBlLGk9dC5fYTtyZXR1cm4gaSYmLTI9PT1wKHQpLm92ZXJmbG93JiYoZT1pW3NuXTwwfHxpW3NuXT4xMT9zbjppW3JuXTwxfHxpW3JuXT5udChpW25uXSxpW3NuXSk/cm46aVthbl08MHx8aVthbl0+MjR8fDI0PT09aVthbl0mJigwIT09aVtobl18fDAhPT1pW2RuXXx8MCE9PWlbbG5dKT9hbjppW2huXTwwfHxpW2huXT41OT9objppW2RuXTwwfHxpW2RuXT41OT9kbjppW2xuXTwwfHxpW2xuXT45OTk/bG46LTEscCh0KS5fb3ZlcmZsb3dEYXlPZlllYXImJihlPG5ufHxlPnJuKSYmKGU9cm4pLHAodCkuX292ZXJmbG93V2Vla3MmJi0xPT09ZSYmKGU9dW4pLHAodCkuX292ZXJmbG93V2Vla2RheSYmLTE9PT1lJiYoZT1jbikscCh0KS5vdmVyZmxvdz1lKSx0fWZ1bmN0aW9uIG5lKHQpe3ZhciBlLGksbyxuLHMscixhPXQuX2ksaD1Obi5leGVjKGEpfHxBbi5leGVjKGEpO2lmKGgpe2ZvcihwKHQpLmlzbz0hMCxlPTAsaT16bi5sZW5ndGg7ZTxpO2UrKylpZih6bltlXVsxXS5leGVjKGhbMV0pKXtuPXpuW2VdWzBdLG89ITEhPT16bltlXVsyXTticmVha31pZihudWxsPT1uKXJldHVybiB2b2lkKHQuX2lzVmFsaWQ9ITEpO2lmKGhbM10pe2ZvcihlPTAsaT1Mbi5sZW5ndGg7ZTxpO2UrKylpZihMbltlXVsxXS5leGVjKGhbM10pKXtzPShoWzJdfHwiICIpK0xuW2VdWzBdO2JyZWFrfWlmKG51bGw9PXMpcmV0dXJuIHZvaWQodC5faXNWYWxpZD0hMSl9aWYoIW8mJm51bGwhPXMpcmV0dXJuIHZvaWQodC5faXNWYWxpZD0hMSk7aWYoaFs0XSl7aWYoIVJuLmV4ZWMoaFs0XSkpcmV0dXJuIHZvaWQodC5faXNWYWxpZD0hMSk7cj0iWiJ9dC5fZj1uKyhzfHwiIikrKHJ8fCIiKSx1ZSh0KX1lbHNlIHQuX2lzVmFsaWQ9ITF9ZnVuY3Rpb24gc2UodCl7dmFyIGUsaSxvLG4scyxyLGEsaCxkPXsiIEdNVCI6IiArMDAwMCIsIiBFRFQiOiIgLTA0MDAiLCIgRVNUIjoiIC0wNTAwIiwiIENEVCI6IiAtMDUwMCIsIiBDU1QiOiIgLTA2MDAiLCIgTURUIjoiIC0wNjAwIiwiIE1TVCI6IiAtMDcwMCIsIiBQRFQiOiIgLTA3MDAiLCIgUFNUIjoiIC0wODAwIn0sbD0iWVhXVlVUU1JRUE9OWkFCQ0RFRkdISUtMTSI7aWYoZT10Ll9pLnJlcGxhY2UoL1woW15cKV0qXCl8W1xuXHRdL2csIiAiKS5yZXBsYWNlKC8oXHNccyspL2csIiAiKS5yZXBsYWNlKC9eXHN8XHMkL2csIiIpLGk9Qm4uZXhlYyhlKSl7aWYobz1pWzFdPyJkZGQiKyg1PT09aVsxXS5sZW5ndGg/IiwgIjoiICIpOiIiLG49IkQgTU1NICIrKGlbMl0ubGVuZ3RoPjEwPyJZWVlZICI6IllZICIpLHM9IkhIOm1tIisoaVs0XT8iOnNzIjoiIiksaVsxXSl7dmFyIHU9bmV3IERhdGUoaVsyXSksYz1bIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdW3UuZ2V0RGF5KCldO2lmKGlbMV0uc3Vic3RyKDAsMykhPT1jKXJldHVybiBwKHQpLndlZWtkYXlNaXNtYXRjaD0hMCx2b2lkKHQuX2lzVmFsaWQ9ITEpfXN3aXRjaChpWzVdLmxlbmd0aCl7Y2FzZSAyOjA9PT1oP2E9IiArMDAwMCI6KGg9bC5pbmRleE9mKGlbNV1bMV0udG9VcHBlckNhc2UoKSktMTIsYT0oaDwwPyIgLSI6IiArIikrKCIiK2gpLnJlcGxhY2UoL14tPy8sIjAiKS5tYXRjaCgvLi4kLylbMF0rIjAwIik7YnJlYWs7Y2FzZSA0OmE9ZFtpWzVdXTticmVhaztkZWZhdWx0OmE9ZFsiIEdNVCJdfWlbNV09YSx0Ll9pPWkuc3BsaWNlKDEpLmpvaW4oIiIpLHI9IiBaWiIsdC5fZj1vK24rcytyLHVlKHQpLHAodCkucmZjMjgyMj0hMH1lbHNlIHQuX2lzVmFsaWQ9ITF9ZnVuY3Rpb24gcmUodCl7dmFyIGk9Rm4uZXhlYyh0Ll9pKTtpZihudWxsIT09aSlyZXR1cm4gdm9pZCh0Ll9kPW5ldyBEYXRlKCtpWzFdKSk7bmUodCksITE9PT10Ll9pc1ZhbGlkJiYoZGVsZXRlIHQuX2lzVmFsaWQsc2UodCksITE9PT10Ll9pc1ZhbGlkJiYoZGVsZXRlIHQuX2lzVmFsaWQsZS5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayh0KSkpfWZ1bmN0aW9uIGFlKHQsZSxpKXtyZXR1cm4gbnVsbCE9dD90Om51bGwhPWU/ZTppfWZ1bmN0aW9uIGhlKHQpe3ZhciBpPW5ldyBEYXRlKGUubm93KCkpO3JldHVybiB0Ll91c2VVVEM/W2kuZ2V0VVRDRnVsbFllYXIoKSxpLmdldFVUQ01vbnRoKCksaS5nZXRVVENEYXRlKCldOltpLmdldEZ1bGxZZWFyKCksaS5nZXRNb250aCgpLGkuZ2V0RGF0ZSgpXX1mdW5jdGlvbiBkZSh0KXt2YXIgZSxpLG8sbixzPVtdO2lmKCF0Ll9kKXtmb3Iobz1oZSh0KSx0Ll93JiZudWxsPT10Ll9hW3JuXSYmbnVsbD09dC5fYVtzbl0mJmxlKHQpLG51bGwhPXQuX2RheU9mWWVhciYmKG49YWUodC5fYVtubl0sb1tubl0pLCh0Ll9kYXlPZlllYXI+bXQobil8fDA9PT10Ll9kYXlPZlllYXIpJiYocCh0KS5fb3ZlcmZsb3dEYXlPZlllYXI9ITApLGk9YnQobiwwLHQuX2RheU9mWWVhciksdC5fYVtzbl09aS5nZXRVVENNb250aCgpLHQuX2Fbcm5dPWkuZ2V0VVRDRGF0ZSgpKSxlPTA7ZTwzJiZudWxsPT10Ll9hW2VdOysrZSl0Ll9hW2VdPXNbZV09b1tlXTtmb3IoO2U8NztlKyspdC5fYVtlXT1zW2VdPW51bGw9PXQuX2FbZV0/Mj09PWU/MTowOnQuX2FbZV07MjQ9PT10Ll9hW2FuXSYmMD09PXQuX2FbaG5dJiYwPT09dC5fYVtkbl0mJjA9PT10Ll9hW2xuXSYmKHQuX25leHREYXk9ITAsdC5fYVthbl09MCksdC5fZD0odC5fdXNlVVRDP2J0Onl0KS5hcHBseShudWxsLHMpLG51bGwhPXQuX3R6bSYmdC5fZC5zZXRVVENNaW51dGVzKHQuX2QuZ2V0VVRDTWludXRlcygpLXQuX3R6bSksdC5fbmV4dERheSYmKHQuX2FbYW5dPTI0KX19ZnVuY3Rpb24gbGUodCl7dmFyIGUsaSxvLG4scyxyLGEsaDtpZihlPXQuX3csbnVsbCE9ZS5HR3x8bnVsbCE9ZS5XfHxudWxsIT1lLkUpcz0xLHI9NCxpPWFlKGUuR0csdC5fYVtubl0seHQoYmUoKSwxLDQpLnllYXIpLG89YWUoZS5XLDEpLCgobj1hZShlLkUsMSkpPDF8fG4+NykmJihoPSEwKTtlbHNle3M9dC5fbG9jYWxlLl93ZWVrLmRvdyxyPXQuX2xvY2FsZS5fd2Vlay5kb3k7dmFyIGQ9eHQoYmUoKSxzLHIpO2k9YWUoZS5nZyx0Ll9hW25uXSxkLnllYXIpLG89YWUoZS53LGQud2VlayksbnVsbCE9ZS5kPygobj1lLmQpPDB8fG4+NikmJihoPSEwKTpudWxsIT1lLmU/KG49ZS5lK3MsKGUuZTwwfHxlLmU+NikmJihoPSEwKSk6bj1zfW88MXx8bz5rdChpLHMscik/cCh0KS5fb3ZlcmZsb3dXZWVrcz0hMDpudWxsIT1oP3AodCkuX292ZXJmbG93V2Vla2RheT0hMDooYT13dChpLG8sbixzLHIpLHQuX2Fbbm5dPWEueWVhcix0Ll9kYXlPZlllYXI9YS5kYXlPZlllYXIpfWZ1bmN0aW9uIHVlKHQpe2lmKHQuX2Y9PT1lLklTT184NjAxKXJldHVybiB2b2lkIG5lKHQpO2lmKHQuX2Y9PT1lLlJGQ18yODIyKXJldHVybiB2b2lkIHNlKHQpO3QuX2E9W10scCh0KS5lbXB0eT0hMDt2YXIgaSxvLG4scyxyLGE9IiIrdC5faSxoPWEubGVuZ3RoLGQ9MDtmb3Iobj1LKHQuX2YsdC5fbG9jYWxlKS5tYXRjaChBbyl8fFtdLGk9MDtpPG4ubGVuZ3RoO2krKylzPW5baV0sbz0oYS5tYXRjaChRKHMsdCkpfHxbXSlbMF0sbyYmKHI9YS5zdWJzdHIoMCxhLmluZGV4T2YobykpLHIubGVuZ3RoPjAmJnAodCkudW51c2VkSW5wdXQucHVzaChyKSxhPWEuc2xpY2UoYS5pbmRleE9mKG8pK28ubGVuZ3RoKSxkKz1vLmxlbmd0aCksTG9bc10/KG8/cCh0KS5lbXB0eT0hMTpwKHQpLnVudXNlZFRva2Vucy5wdXNoKHMpLG90KHMsbyx0KSk6dC5fc3RyaWN0JiYhbyYmcCh0KS51bnVzZWRUb2tlbnMucHVzaChzKTtwKHQpLmNoYXJzTGVmdE92ZXI9aC1kLGEubGVuZ3RoPjAmJnAodCkudW51c2VkSW5wdXQucHVzaChhKSx0Ll9hW2FuXTw9MTImJiEwPT09cCh0KS5iaWdIb3VyJiZ0Ll9hW2FuXT4wJiYocCh0KS5iaWdIb3VyPXZvaWQgMCkscCh0KS5wYXJzZWREYXRlUGFydHM9dC5fYS5zbGljZSgwKSxwKHQpLm1lcmlkaWVtPXQuX21lcmlkaWVtLHQuX2FbYW5dPWNlKHQuX2xvY2FsZSx0Ll9hW2FuXSx0Ll9tZXJpZGllbSksZGUodCksb2UodCl9ZnVuY3Rpb24gY2UodCxlLGkpe3ZhciBvO3JldHVybiBudWxsPT1pP2U6bnVsbCE9dC5tZXJpZGllbUhvdXI/dC5tZXJpZGllbUhvdXIoZSxpKTpudWxsIT10LmlzUE0/KG89dC5pc1BNKGkpLG8mJmU8MTImJihlKz0xMiksb3x8MTIhPT1lfHwoZT0wKSxlKTplfWZ1bmN0aW9uIHBlKHQpe3ZhciBlLGksbyxuLHM7aWYoMD09PXQuX2YubGVuZ3RoKXJldHVybiBwKHQpLmludmFsaWRGb3JtYXQ9ITAsdm9pZCh0Ll9kPW5ldyBEYXRlKE5hTikpO2ZvcihuPTA7bjx0Ll9mLmxlbmd0aDtuKyspcz0wLGU9dih7fSx0KSxudWxsIT10Ll91c2VVVEMmJihlLl91c2VVVEM9dC5fdXNlVVRDKSxlLl9mPXQuX2Zbbl0sdWUoZSksZihlKSYmKHMrPXAoZSkuY2hhcnNMZWZ0T3ZlcixzKz0xMCpwKGUpLnVudXNlZFRva2Vucy5sZW5ndGgscChlKS5zY29yZT1zLChudWxsPT1vfHxzPG8pJiYobz1zLGk9ZSkpO2wodCxpfHxlKX1mdW5jdGlvbiBmZSh0KXtpZighdC5fZCl7dmFyIGU9TCh0Ll9pKTt0Ll9hPWgoW2UueWVhcixlLm1vbnRoLGUuZGF5fHxlLmRhdGUsZS5ob3VyLGUubWludXRlLGUuc2Vjb25kLGUubWlsbGlzZWNvbmRdLGZ1bmN0aW9uKHQpe3JldHVybiB0JiZwYXJzZUludCh0LDEwKX0pLGRlKHQpfX1mdW5jdGlvbiBtZSh0KXt2YXIgZT1uZXcgZyhvZSh2ZSh0KSkpO3JldHVybiBlLl9uZXh0RGF5JiYoZS5hZGQoMSwiZCIpLGUuX25leHREYXk9dm9pZCAwKSxlfWZ1bmN0aW9uIHZlKHQpe3ZhciBlPXQuX2ksbz10Ll9mO3JldHVybiB0Ll9sb2NhbGU9dC5fbG9jYWxlfHxlZSh0Ll9sKSxudWxsPT09ZXx8dm9pZCAwPT09byYmIiI9PT1lP20oe251bGxJbnB1dDohMH0pOigic3RyaW5nIj09dHlwZW9mIGUmJih0Ll9pPWU9dC5fbG9jYWxlLnByZXBhcnNlKGUpKSx5KGUpP25ldyBnKG9lKGUpKTooYShlKT90Ll9kPWU6aShvKT9wZSh0KTpvP3VlKHQpOmdlKHQpLGYodCl8fCh0Ll9kPW51bGwpLHQpKX1mdW5jdGlvbiBnZSh0KXt2YXIgbj10Ll9pO3Mobik/dC5fZD1uZXcgRGF0ZShlLm5vdygpKTphKG4pP3QuX2Q9bmV3IERhdGUobi52YWx1ZU9mKCkpOiJzdHJpbmciPT10eXBlb2Ygbj9yZSh0KTppKG4pPyh0Ll9hPWgobi5zbGljZSgwKSxmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VJbnQodCwxMCl9KSxkZSh0KSk6byhuKT9mZSh0KTpyKG4pP3QuX2Q9bmV3IERhdGUobik6ZS5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayh0KX1mdW5jdGlvbiB5ZSh0LGUscyxyLGEpe3ZhciBoPXt9O3JldHVybiEwIT09cyYmITEhPT1zfHwocj1zLHM9dm9pZCAwKSwobyh0KSYmbih0KXx8aSh0KSYmMD09PXQubGVuZ3RoKSYmKHQ9dm9pZCAwKSxoLl9pc0FNb21lbnRPYmplY3Q9ITAsaC5fdXNlVVRDPWguX2lzVVRDPWEsaC5fbD1zLGguX2k9dCxoLl9mPWUsaC5fc3RyaWN0PXIsbWUoaCl9ZnVuY3Rpb24gYmUodCxlLGksbyl7cmV0dXJuIHllKHQsZSxpLG8sITEpfWZ1bmN0aW9uIF9lKHQsZSl7dmFyIG8sbjtpZigxPT09ZS5sZW5ndGgmJmkoZVswXSkmJihlPWVbMF0pLCFlLmxlbmd0aClyZXR1cm4gYmUoKTtmb3Iobz1lWzBdLG49MTtuPGUubGVuZ3RoOysrbillW25dLmlzVmFsaWQoKSYmIWVbbl1bdF0obyl8fChvPWVbbl0pO3JldHVybiBvfWZ1bmN0aW9uIHdlKCl7cmV0dXJuIF9lKCJpc0JlZm9yZSIsW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCkpfWZ1bmN0aW9uIHhlKCl7cmV0dXJuIF9lKCJpc0FmdGVyIixbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9ZnVuY3Rpb24ga2UodCl7Zm9yKHZhciBlIGluIHQpaWYoLTE9PT1Zbi5pbmRleE9mKGUpfHxudWxsIT10W2VdJiZpc05hTih0W2VdKSlyZXR1cm4hMTtmb3IodmFyIGk9ITEsbz0wO288WW4ubGVuZ3RoOysrbylpZih0W1luW29dXSl7aWYoaSlyZXR1cm4hMTtwYXJzZUZsb2F0KHRbWW5bb11dKSE9PV8odFtZbltvXV0pJiYoaT0hMCl9cmV0dXJuITB9ZnVuY3Rpb24gRGUoKXtyZXR1cm4gdGhpcy5faXNWYWxpZH1mdW5jdGlvbiBNZSgpe3JldHVybiBHZShOYU4pfWZ1bmN0aW9uIFNlKHQpe3ZhciBlPUwodCksaT1lLnllYXJ8fDAsbz1lLnF1YXJ0ZXJ8fDAsbj1lLm1vbnRofHwwLHM9ZS53ZWVrfHwwLHI9ZS5kYXl8fDAsYT1lLmhvdXJ8fDAsaD1lLm1pbnV0ZXx8MCxkPWUuc2Vjb25kfHwwLGw9ZS5taWxsaXNlY29uZHx8MDt0aGlzLl9pc1ZhbGlkPWtlKGUpLHRoaXMuX21pbGxpc2Vjb25kcz0rbCsxZTMqZCs2ZTQqaCsxZTMqYSo2MCo2MCx0aGlzLl9kYXlzPStyKzcqcyx0aGlzLl9tb250aHM9K24rMypvKzEyKmksdGhpcy5fZGF0YT17fSx0aGlzLl9sb2NhbGU9ZWUoKSx0aGlzLl9idWJibGUoKX1mdW5jdGlvbiBPZSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFNlfWZ1bmN0aW9uIENlKHQpe3JldHVybiB0PDA/LTEqTWF0aC5yb3VuZCgtMSp0KTpNYXRoLnJvdW5kKHQpfWZ1bmN0aW9uIFRlKHQsZSl7VSh0LDAsMCxmdW5jdGlvbigpe3ZhciB0PXRoaXMudXRjT2Zmc2V0KCksaT0iKyI7cmV0dXJuIHQ8MCYmKHQ9LXQsaT0iLSIpLGkrVih+fih0LzYwKSwyKStlK1Yofn50JTYwLDIpfSl9ZnVuY3Rpb24gRWUodCxlKXt2YXIgaT0oZXx8IiIpLm1hdGNoKHQpO2lmKG51bGw9PT1pKXJldHVybiBudWxsO3ZhciBvPWlbaS5sZW5ndGgtMV18fFtdLG49KG8rIiIpLm1hdGNoKEduKXx8WyItIiwwLDBdLHM9NjAqblsxXStfKG5bMl0pO3JldHVybiAwPT09cz8wOiIrIj09PW5bMF0/czotc31mdW5jdGlvbiBQZSh0LGkpe3ZhciBvLG47cmV0dXJuIGkuX2lzVVRDPyhvPWkuY2xvbmUoKSxuPSh5KHQpfHxhKHQpP3QudmFsdWVPZigpOmJlKHQpLnZhbHVlT2YoKSktby52YWx1ZU9mKCksby5fZC5zZXRUaW1lKG8uX2QudmFsdWVPZigpK24pLGUudXBkYXRlT2Zmc2V0KG8sITEpLG8pOmJlKHQpLmxvY2FsKCl9ZnVuY3Rpb24gSWUodCl7cmV0dXJuIDE1Ki1NYXRoLnJvdW5kKHQuX2QuZ2V0VGltZXpvbmVPZmZzZXQoKS8xNSl9ZnVuY3Rpb24gTmUodCxpLG8pe3ZhciBuLHM9dGhpcy5fb2Zmc2V0fHwwO2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9dD90aGlzOk5hTjtpZihudWxsIT10KXtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKG51bGw9PT0odD1FZShRbyx0KSkpcmV0dXJuIHRoaXN9ZWxzZSBNYXRoLmFicyh0KTwxNiYmIW8mJih0Kj02MCk7cmV0dXJuIXRoaXMuX2lzVVRDJiZpJiYobj1JZSh0aGlzKSksdGhpcy5fb2Zmc2V0PXQsdGhpcy5faXNVVEM9ITAsbnVsbCE9biYmdGhpcy5hZGQobiwibSIpLHMhPT10JiYoIWl8fHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3M/WmUodGhpcyxHZSh0LXMsIm0iKSwxLCExKTp0aGlzLl9jaGFuZ2VJblByb2dyZXNzfHwodGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz0hMCxlLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzLl9jaGFuZ2VJblByb2dyZXNzPW51bGwpKSx0aGlzfXJldHVybiB0aGlzLl9pc1VUQz9zOkllKHRoaXMpfWZ1bmN0aW9uIEFlKHQsZSl7cmV0dXJuIG51bGwhPXQ/KCJzdHJpbmciIT10eXBlb2YgdCYmKHQ9LXQpLHRoaXMudXRjT2Zmc2V0KHQsZSksdGhpcyk6LXRoaXMudXRjT2Zmc2V0KCl9ZnVuY3Rpb24gUmUodCl7cmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsdCl9ZnVuY3Rpb24gemUodCl7cmV0dXJuIHRoaXMuX2lzVVRDJiYodGhpcy51dGNPZmZzZXQoMCx0KSx0aGlzLl9pc1VUQz0hMSx0JiZ0aGlzLnN1YnRyYWN0KEllKHRoaXMpLCJtIikpLHRoaXN9ZnVuY3Rpb24gTGUoKXtpZihudWxsIT10aGlzLl90em0pdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCExLCEwKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgdGhpcy5faSl7dmFyIHQ9RWUoSm8sdGhpcy5faSk7bnVsbCE9dD90aGlzLnV0Y09mZnNldCh0KTp0aGlzLnV0Y09mZnNldCgwLCEwKX1yZXR1cm4gdGhpc31mdW5jdGlvbiBGZSh0KXtyZXR1cm4hIXRoaXMuaXNWYWxpZCgpJiYodD10P2JlKHQpLnV0Y09mZnNldCgpOjAsKHRoaXMudXRjT2Zmc2V0KCktdCklNjA9PTApfWZ1bmN0aW9uIEJlKCl7cmV0dXJuIHRoaXMudXRjT2Zmc2V0KCk+dGhpcy5jbG9uZSgpLm1vbnRoKDApLnV0Y09mZnNldCgpfHx0aGlzLnV0Y09mZnNldCgpPnRoaXMuY2xvbmUoKS5tb250aCg1KS51dGNPZmZzZXQoKX1mdW5jdGlvbiBqZSgpe2lmKCFzKHRoaXMuX2lzRFNUU2hpZnRlZCkpcmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZDt2YXIgdD17fTtpZih2KHQsdGhpcyksdD12ZSh0KSx0Ll9hKXt2YXIgZT10Ll9pc1VUQz91KHQuX2EpOmJlKHQuX2EpO3RoaXMuX2lzRFNUU2hpZnRlZD10aGlzLmlzVmFsaWQoKSYmdyh0Ll9hLGUudG9BcnJheSgpKT4wfWVsc2UgdGhpcy5faXNEU1RTaGlmdGVkPSExO3JldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWR9ZnVuY3Rpb24gSGUoKXtyZXR1cm4hIXRoaXMuaXNWYWxpZCgpJiYhdGhpcy5faXNVVEN9ZnVuY3Rpb24gV2UoKXtyZXR1cm4hIXRoaXMuaXNWYWxpZCgpJiZ0aGlzLl9pc1VUQ31mdW5jdGlvbiBZZSgpe3JldHVybiEhdGhpcy5pc1ZhbGlkKCkmJih0aGlzLl9pc1VUQyYmMD09PXRoaXMuX29mZnNldCl9ZnVuY3Rpb24gR2UodCxlKXt2YXIgaSxvLG4scz10LGE9bnVsbDtyZXR1cm4gT2UodCk/cz17bXM6dC5fbWlsbGlzZWNvbmRzLGQ6dC5fZGF5cyxNOnQuX21vbnRoc306cih0KT8ocz17fSxlP3NbZV09dDpzLm1pbGxpc2Vjb25kcz10KTooYT1Wbi5leGVjKHQpKT8oaT0iLSI9PT1hWzFdPy0xOjEscz17eTowLGQ6XyhhW3JuXSkqaSxoOl8oYVthbl0pKmksbTpfKGFbaG5dKSppLHM6XyhhW2RuXSkqaSxtczpfKENlKDFlMyphW2xuXSkpKml9KTooYT1Vbi5leGVjKHQpKT8oaT0iLSI9PT1hWzFdPy0xOjEscz17eTpWZShhWzJdLGkpLE06VmUoYVszXSxpKSx3OlZlKGFbNF0saSksZDpWZShhWzVdLGkpLGg6VmUoYVs2XSxpKSxtOlZlKGFbN10saSksczpWZShhWzhdLGkpfSk6bnVsbD09cz9zPXt9OiJvYmplY3QiPT10eXBlb2YgcyYmKCJmcm9tImluIHN8fCJ0byJpbiBzKSYmKG49cWUoYmUocy5mcm9tKSxiZShzLnRvKSkscz17fSxzLm1zPW4ubWlsbGlzZWNvbmRzLHMuTT1uLm1vbnRocyksbz1uZXcgU2UocyksT2UodCkmJmQodCwiX2xvY2FsZSIpJiYoby5fbG9jYWxlPXQuX2xvY2FsZSksb31mdW5jdGlvbiBWZSh0LGUpe3ZhciBpPXQmJnBhcnNlRmxvYXQodC5yZXBsYWNlKCIsIiwiLiIpKTtyZXR1cm4oaXNOYU4oaSk/MDppKSplfWZ1bmN0aW9uIFVlKHQsZSl7dmFyIGk9e21pbGxpc2Vjb25kczowLG1vbnRoczowfTtyZXR1cm4gaS5tb250aHM9ZS5tb250aCgpLXQubW9udGgoKSsxMiooZS55ZWFyKCktdC55ZWFyKCkpLHQuY2xvbmUoKS5hZGQoaS5tb250aHMsIk0iKS5pc0FmdGVyKGUpJiYtLWkubW9udGhzLGkubWlsbGlzZWNvbmRzPStlLSt0LmNsb25lKCkuYWRkKGkubW9udGhzLCJNIiksaX1mdW5jdGlvbiBxZSh0LGUpe3ZhciBpO3JldHVybiB0LmlzVmFsaWQoKSYmZS5pc1ZhbGlkKCk/KGU9UGUoZSx0KSx0LmlzQmVmb3JlKGUpP2k9VWUodCxlKTooaT1VZShlLHQpLGkubWlsbGlzZWNvbmRzPS1pLm1pbGxpc2Vjb25kcyxpLm1vbnRocz0taS5tb250aHMpLGkpOnttaWxsaXNlY29uZHM6MCxtb250aHM6MH19ZnVuY3Rpb24gWGUodCxlKXtyZXR1cm4gZnVuY3Rpb24oaSxvKXt2YXIgbixzO3JldHVybiBudWxsPT09b3x8aXNOYU4oK28pfHwoRChlLCJtb21lbnQoKS4iK2UrIihwZXJpb2QsIG51bWJlcikgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBtb21lbnQoKS4iK2UrIihudW1iZXIsIHBlcmlvZCkuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2FkZC1pbnZlcnRlZC1wYXJhbS8gZm9yIG1vcmUgaW5mby4iKSxzPWksaT1vLG89cyksaT0ic3RyaW5nIj09dHlwZW9mIGk/K2k6aSxuPUdlKGksbyksWmUodGhpcyxuLHQpLHRoaXN9fWZ1bmN0aW9uIFplKHQsaSxvLG4pe3ZhciBzPWkuX21pbGxpc2Vjb25kcyxyPUNlKGkuX2RheXMpLGE9Q2UoaS5fbW9udGhzKTt0LmlzVmFsaWQoKSYmKG49bnVsbD09bnx8bixzJiZ0Ll9kLnNldFRpbWUodC5fZC52YWx1ZU9mKCkrcypvKSxyJiZXKHQsIkRhdGUiLEgodCwiRGF0ZSIpK3IqbyksYSYmZHQodCxIKHQsIk1vbnRoIikrYSpvKSxuJiZlLnVwZGF0ZU9mZnNldCh0LHJ8fGEpKX1mdW5jdGlvbiBLZSh0LGUpe3ZhciBpPXQuZGlmZihlLCJkYXlzIiwhMCk7cmV0dXJuIGk8LTY/InNhbWVFbHNlIjppPC0xPyJsYXN0V2VlayI6aTwwPyJsYXN0RGF5IjppPDE/InNhbWVEYXkiOmk8Mj8ibmV4dERheSI6aTw3PyJuZXh0V2VlayI6InNhbWVFbHNlIn1mdW5jdGlvbiBKZSh0LGkpe3ZhciBvPXR8fGJlKCksbj1QZShvLHRoaXMpLnN0YXJ0T2YoImRheSIpLHM9ZS5jYWxlbmRhckZvcm1hdCh0aGlzLG4pfHwic2FtZUVsc2UiLHI9aSYmKE0oaVtzXSk/aVtzXS5jYWxsKHRoaXMsbyk6aVtzXSk7cmV0dXJuIHRoaXMuZm9ybWF0KHJ8fHRoaXMubG9jYWxlRGF0YSgpLmNhbGVuZGFyKHMsdGhpcyxiZShvKSkpfWZ1bmN0aW9uIFFlKCl7cmV0dXJuIG5ldyBnKHRoaXMpfWZ1bmN0aW9uICRlKHQsZSl7dmFyIGk9eSh0KT90OmJlKHQpO3JldHVybiEoIXRoaXMuaXNWYWxpZCgpfHwhaS5pc1ZhbGlkKCkpJiYoZT16KHMoZSk/Im1pbGxpc2Vjb25kIjplKSwibWlsbGlzZWNvbmQiPT09ZT90aGlzLnZhbHVlT2YoKT5pLnZhbHVlT2YoKTppLnZhbHVlT2YoKTx0aGlzLmNsb25lKCkuc3RhcnRPZihlKS52YWx1ZU9mKCkpfWZ1bmN0aW9uIHRpKHQsZSl7dmFyIGk9eSh0KT90OmJlKHQpO3JldHVybiEoIXRoaXMuaXNWYWxpZCgpfHwhaS5pc1ZhbGlkKCkpJiYoZT16KHMoZSk/Im1pbGxpc2Vjb25kIjplKSwibWlsbGlzZWNvbmQiPT09ZT90aGlzLnZhbHVlT2YoKTxpLnZhbHVlT2YoKTp0aGlzLmNsb25lKCkuZW5kT2YoZSkudmFsdWVPZigpPGkudmFsdWVPZigpKX1mdW5jdGlvbiBlaSh0LGUsaSxvKXtyZXR1cm4gbz1vfHwiKCkiLCgiKCI9PT1vWzBdP3RoaXMuaXNBZnRlcih0LGkpOiF0aGlzLmlzQmVmb3JlKHQsaSkpJiYoIikiPT09b1sxXT90aGlzLmlzQmVmb3JlKGUsaSk6IXRoaXMuaXNBZnRlcihlLGkpKX1mdW5jdGlvbiBpaSh0LGUpe3ZhciBpLG89eSh0KT90OmJlKHQpO3JldHVybiEoIXRoaXMuaXNWYWxpZCgpfHwhby5pc1ZhbGlkKCkpJiYoZT16KGV8fCJtaWxsaXNlY29uZCIpLCJtaWxsaXNlY29uZCI9PT1lP3RoaXMudmFsdWVPZigpPT09by52YWx1ZU9mKCk6KGk9by52YWx1ZU9mKCksdGhpcy5jbG9uZSgpLnN0YXJ0T2YoZSkudmFsdWVPZigpPD1pJiZpPD10aGlzLmNsb25lKCkuZW5kT2YoZSkudmFsdWVPZigpKSl9ZnVuY3Rpb24gb2kodCxlKXtyZXR1cm4gdGhpcy5pc1NhbWUodCxlKXx8dGhpcy5pc0FmdGVyKHQsZSl9ZnVuY3Rpb24gbmkodCxlKXtyZXR1cm4gdGhpcy5pc1NhbWUodCxlKXx8dGhpcy5pc0JlZm9yZSh0LGUpfWZ1bmN0aW9uIHNpKHQsZSxpKXt2YXIgbyxuLHMscjtyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/KG89UGUodCx0aGlzKSxvLmlzVmFsaWQoKT8obj02ZTQqKG8udXRjT2Zmc2V0KCktdGhpcy51dGNPZmZzZXQoKSksZT16KGUpLCJ5ZWFyIj09PWV8fCJtb250aCI9PT1lfHwicXVhcnRlciI9PT1lPyhyPXJpKHRoaXMsbyksInF1YXJ0ZXIiPT09ZT9yLz0zOiJ5ZWFyIj09PWUmJihyLz0xMikpOihzPXRoaXMtbyxyPSJzZWNvbmQiPT09ZT9zLzFlMzoibWludXRlIj09PWU/cy82ZTQ6ImhvdXIiPT09ZT9zLzM2ZTU6ImRheSI9PT1lPyhzLW4pLzg2NGU1OiJ3ZWVrIj09PWU/KHMtbikvNjA0OGU1OnMpLGk/cjpiKHIpKTpOYU4pOk5hTn1mdW5jdGlvbiByaSh0LGUpe3ZhciBpLG8sbj0xMiooZS55ZWFyKCktdC55ZWFyKCkpKyhlLm1vbnRoKCktdC5tb250aCgpKSxzPXQuY2xvbmUoKS5hZGQobiwibW9udGhzIik7cmV0dXJuIGUtczwwPyhpPXQuY2xvbmUoKS5hZGQobi0xLCJtb250aHMiKSxvPShlLXMpLyhzLWkpKTooaT10LmNsb25lKCkuYWRkKG4rMSwibW9udGhzIiksbz0oZS1zKS8oaS1zKSksLShuK28pfHwwfWZ1bmN0aW9uIGFpKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5sb2NhbGUoImVuIikuZm9ybWF0KCJkZGQgTU1NIEREIFlZWVkgSEg6bW06c3MgW0dNVF1aWiIpfWZ1bmN0aW9uIGhpKCl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBudWxsO3ZhciB0PXRoaXMuY2xvbmUoKS51dGMoKTtyZXR1cm4gdC55ZWFyKCk8MHx8dC55ZWFyKCk+OTk5OT9aKHQsIllZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXSIpOk0oRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcpP3RoaXMudG9EYXRlKCkudG9JU09TdHJpbmcoKTpaKHQsIllZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0iKX1mdW5jdGlvbiBkaSgpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4ibW9tZW50LmludmFsaWQoLyogIit0aGlzLl9pKyIgKi8pIjt2YXIgdD0ibW9tZW50IixlPSIiO3RoaXMuaXNMb2NhbCgpfHwodD0wPT09dGhpcy51dGNPZmZzZXQoKT8ibW9tZW50LnV0YyI6Im1vbWVudC5wYXJzZVpvbmUiLGU9IloiKTt2YXIgaT0iWyIrdCsnKCJdJyxvPTA8PXRoaXMueWVhcigpJiZ0aGlzLnllYXIoKTw9OTk5OT8iWVlZWSI6IllZWVlZWSIsbj1lKydbIildJztyZXR1cm4gdGhpcy5mb3JtYXQoaStvKyItTU0tRERbVF1ISDptbTpzcy5TU1MiK24pfWZ1bmN0aW9uIGxpKHQpe3R8fCh0PXRoaXMuaXNVdGMoKT9lLmRlZmF1bHRGb3JtYXRVdGM6ZS5kZWZhdWx0Rm9ybWF0KTt2YXIgaT1aKHRoaXMsdCk7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLnBvc3Rmb3JtYXQoaSl9ZnVuY3Rpb24gdWkodCxlKXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCkmJih5KHQpJiZ0LmlzVmFsaWQoKXx8YmUodCkuaXNWYWxpZCgpKT9HZSh7dG86dGhpcyxmcm9tOnR9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIWUpOnRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCl9ZnVuY3Rpb24gY2kodCl7cmV0dXJuIHRoaXMuZnJvbShiZSgpLHQpfWZ1bmN0aW9uIHBpKHQsZSl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiYoeSh0KSYmdC5pc1ZhbGlkKCl8fGJlKHQpLmlzVmFsaWQoKSk/R2Uoe2Zyb206dGhpcyx0bzp0fSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCFlKTp0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfWZ1bmN0aW9uIGZpKHQpe3JldHVybiB0aGlzLnRvKGJlKCksdCl9ZnVuY3Rpb24gbWkodCl7dmFyIGU7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5fbG9jYWxlLl9hYmJyOihlPWVlKHQpLG51bGwhPWUmJih0aGlzLl9sb2NhbGU9ZSksdGhpcyl9ZnVuY3Rpb24gdmkoKXtyZXR1cm4gdGhpcy5fbG9jYWxlfWZ1bmN0aW9uIGdpKHQpe3N3aXRjaCh0PXoodCkpe2Nhc2UieWVhciI6dGhpcy5tb250aCgwKTtjYXNlInF1YXJ0ZXIiOmNhc2UibW9udGgiOnRoaXMuZGF0ZSgxKTtjYXNlIndlZWsiOmNhc2UiaXNvV2VlayI6Y2FzZSJkYXkiOmNhc2UiZGF0ZSI6dGhpcy5ob3VycygwKTtjYXNlImhvdXIiOnRoaXMubWludXRlcygwKTtjYXNlIm1pbnV0ZSI6dGhpcy5zZWNvbmRzKDApO2Nhc2Uic2Vjb25kIjp0aGlzLm1pbGxpc2Vjb25kcygwKX1yZXR1cm4id2VlayI9PT10JiZ0aGlzLndlZWtkYXkoMCksImlzb1dlZWsiPT09dCYmdGhpcy5pc29XZWVrZGF5KDEpLCJxdWFydGVyIj09PXQmJnRoaXMubW9udGgoMypNYXRoLmZsb29yKHRoaXMubW9udGgoKS8zKSksdGhpc31mdW5jdGlvbiB5aSh0KXtyZXR1cm4gdm9pZCAwPT09KHQ9eih0KSl8fCJtaWxsaXNlY29uZCI9PT10P3RoaXM6KCJkYXRlIj09PXQmJih0PSJkYXkiKSx0aGlzLnN0YXJ0T2YodCkuYWRkKDEsImlzb1dlZWsiPT09dD8id2VlayI6dCkuc3VidHJhY3QoMSwibXMiKSl9ZnVuY3Rpb24gYmkoKXtyZXR1cm4gdGhpcy5fZC52YWx1ZU9mKCktNmU0Kih0aGlzLl9vZmZzZXR8fDApfWZ1bmN0aW9uIF9pKCl7cmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkvMWUzKX1mdW5jdGlvbiB3aSgpe3JldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSl9ZnVuY3Rpb24geGkoKXt2YXIgdD10aGlzO3JldHVyblt0LnllYXIoKSx0Lm1vbnRoKCksdC5kYXRlKCksdC5ob3VyKCksdC5taW51dGUoKSx0LnNlY29uZCgpLHQubWlsbGlzZWNvbmQoKV19ZnVuY3Rpb24ga2koKXt2YXIgdD10aGlzO3JldHVybnt5ZWFyczp0LnllYXIoKSxtb250aHM6dC5tb250aCgpLGRhdGU6dC5kYXRlKCksaG91cnM6dC5ob3VycygpLG1pbnV0ZXM6dC5taW51dGVzKCksc2Vjb25kczp0LnNlY29uZHMoKSxtaWxsaXNlY29uZHM6dC5taWxsaXNlY29uZHMoKX19ZnVuY3Rpb24gRGkoKXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/dGhpcy50b0lTT1N0cmluZygpOm51bGx9ZnVuY3Rpb24gTWkoKXtyZXR1cm4gZih0aGlzKX1mdW5jdGlvbiBTaSgpe3JldHVybiBsKHt9LHAodGhpcykpfWZ1bmN0aW9uIE9pKCl7cmV0dXJuIHAodGhpcykub3ZlcmZsb3d9ZnVuY3Rpb24gQ2koKXtyZXR1cm57aW5wdXQ6dGhpcy5faSxmb3JtYXQ6dGhpcy5fZixsb2NhbGU6dGhpcy5fbG9jYWxlLGlzVVRDOnRoaXMuX2lzVVRDLHN0cmljdDp0aGlzLl9zdHJpY3R9fWZ1bmN0aW9uIFRpKHQsZSl7VSgwLFt0LHQubGVuZ3RoXSwwLGUpfWZ1bmN0aW9uIEVpKHQpe3JldHVybiBBaS5jYWxsKHRoaXMsdCx0aGlzLndlZWsoKSx0aGlzLndlZWtkYXkoKSx0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3csdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG95KX1mdW5jdGlvbiBQaSh0KXtyZXR1cm4gQWkuY2FsbCh0aGlzLHQsdGhpcy5pc29XZWVrKCksdGhpcy5pc29XZWVrZGF5KCksMSw0KX1mdW5jdGlvbiBJaSgpe3JldHVybiBrdCh0aGlzLnllYXIoKSwxLDQpfWZ1bmN0aW9uIE5pKCl7dmFyIHQ9dGhpcy5sb2NhbGVEYXRhKCkuX3dlZWs7cmV0dXJuIGt0KHRoaXMueWVhcigpLHQuZG93LHQuZG95KX1mdW5jdGlvbiBBaSh0LGUsaSxvLG4pe3ZhciBzO3JldHVybiBudWxsPT10P3h0KHRoaXMsbyxuKS55ZWFyOihzPWt0KHQsbyxuKSxlPnMmJihlPXMpLFJpLmNhbGwodGhpcyx0LGUsaSxvLG4pKX1mdW5jdGlvbiBSaSh0LGUsaSxvLG4pe3ZhciBzPXd0KHQsZSxpLG8sbikscj1idChzLnllYXIsMCxzLmRheU9mWWVhcik7cmV0dXJuIHRoaXMueWVhcihyLmdldFVUQ0Z1bGxZZWFyKCkpLHRoaXMubW9udGgoci5nZXRVVENNb250aCgpKSx0aGlzLmRhdGUoci5nZXRVVENEYXRlKCkpLHRoaXN9ZnVuY3Rpb24gemkodCl7cmV0dXJuIG51bGw9PXQ/TWF0aC5jZWlsKCh0aGlzLm1vbnRoKCkrMSkvMyk6dGhpcy5tb250aCgzKih0LTEpK3RoaXMubW9udGgoKSUzKX1mdW5jdGlvbiBMaSh0KXt2YXIgZT1NYXRoLnJvdW5kKCh0aGlzLmNsb25lKCkuc3RhcnRPZigiZGF5IiktdGhpcy5jbG9uZSgpLnN0YXJ0T2YoInllYXIiKSkvODY0ZTUpKzE7cmV0dXJuIG51bGw9PXQ/ZTp0aGlzLmFkZCh0LWUsImQiKX1mdW5jdGlvbiBGaSh0LGUpe2VbbG5dPV8oMWUzKigiMC4iK3QpKX1mdW5jdGlvbiBCaSgpe3JldHVybiB0aGlzLl9pc1VUQz8iVVRDIjoiIn1mdW5jdGlvbiBqaSgpe3JldHVybiB0aGlzLl9pc1VUQz8iQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUiOiIifWZ1bmN0aW9uIEhpKHQpe3JldHVybiBiZSgxZTMqdCl9ZnVuY3Rpb24gV2koKXtyZXR1cm4gYmUuYXBwbHkobnVsbCxhcmd1bWVudHMpLnBhcnNlWm9uZSgpfWZ1bmN0aW9uIFlpKHQpe3JldHVybiB0fWZ1bmN0aW9uIEdpKHQsZSxpLG8pe3ZhciBuPWVlKCkscz11KCkuc2V0KG8sZSk7cmV0dXJuIG5baV0ocyx0KX1mdW5jdGlvbiBWaSh0LGUsaSl7aWYocih0KSYmKGU9dCx0PXZvaWQgMCksdD10fHwiIixudWxsIT1lKXJldHVybiBHaSh0LGUsaSwibW9udGgiKTt2YXIgbyxuPVtdO2ZvcihvPTA7bzwxMjtvKyspbltvXT1HaSh0LG8saSwibW9udGgiKTtyZXR1cm4gbn1mdW5jdGlvbiBVaSh0LGUsaSxvKXsiYm9vbGVhbiI9PXR5cGVvZiB0PyhyKGUpJiYoaT1lLGU9dm9pZCAwKSxlPWV8fCIiKTooZT10LGk9ZSx0PSExLHIoZSkmJihpPWUsZT12b2lkIDApLGU9ZXx8IiIpO3ZhciBuPWVlKCkscz10P24uX3dlZWsuZG93OjA7aWYobnVsbCE9aSlyZXR1cm4gR2koZSwoaStzKSU3LG8sImRheSIpO3ZhciBhLGg9W107Zm9yKGE9MDthPDc7YSsrKWhbYV09R2koZSwoYStzKSU3LG8sImRheSIpO3JldHVybiBofWZ1bmN0aW9uIHFpKHQsZSl7cmV0dXJuIFZpKHQsZSwibW9udGhzIil9ZnVuY3Rpb24gWGkodCxlKXtyZXR1cm4gVmkodCxlLCJtb250aHNTaG9ydCIpfWZ1bmN0aW9uIFppKHQsZSxpKXtyZXR1cm4gVWkodCxlLGksIndlZWtkYXlzIil9ZnVuY3Rpb24gS2kodCxlLGkpe3JldHVybiBVaSh0LGUsaSwid2Vla2RheXNTaG9ydCIpfWZ1bmN0aW9uIEppKHQsZSxpKXtyZXR1cm4gVWkodCxlLGksIndlZWtkYXlzTWluIil9ZnVuY3Rpb24gUWkoKXsNCnZhciB0PXRoaXMuX2RhdGE7cmV0dXJuIHRoaXMuX21pbGxpc2Vjb25kcz1vcyh0aGlzLl9taWxsaXNlY29uZHMpLHRoaXMuX2RheXM9b3ModGhpcy5fZGF5cyksdGhpcy5fbW9udGhzPW9zKHRoaXMuX21vbnRocyksdC5taWxsaXNlY29uZHM9b3ModC5taWxsaXNlY29uZHMpLHQuc2Vjb25kcz1vcyh0LnNlY29uZHMpLHQubWludXRlcz1vcyh0Lm1pbnV0ZXMpLHQuaG91cnM9b3ModC5ob3VycyksdC5tb250aHM9b3ModC5tb250aHMpLHQueWVhcnM9b3ModC55ZWFycyksdGhpc31mdW5jdGlvbiAkaSh0LGUsaSxvKXt2YXIgbj1HZShlLGkpO3JldHVybiB0Ll9taWxsaXNlY29uZHMrPW8qbi5fbWlsbGlzZWNvbmRzLHQuX2RheXMrPW8qbi5fZGF5cyx0Ll9tb250aHMrPW8qbi5fbW9udGhzLHQuX2J1YmJsZSgpfWZ1bmN0aW9uIHRvKHQsZSl7cmV0dXJuICRpKHRoaXMsdCxlLDEpfWZ1bmN0aW9uIGVvKHQsZSl7cmV0dXJuICRpKHRoaXMsdCxlLC0xKX1mdW5jdGlvbiBpbyh0KXtyZXR1cm4gdDwwP01hdGguZmxvb3IodCk6TWF0aC5jZWlsKHQpfWZ1bmN0aW9uIG9vKCl7dmFyIHQsZSxpLG8sbixzPXRoaXMuX21pbGxpc2Vjb25kcyxyPXRoaXMuX2RheXMsYT10aGlzLl9tb250aHMsaD10aGlzLl9kYXRhO3JldHVybiBzPj0wJiZyPj0wJiZhPj0wfHxzPD0wJiZyPD0wJiZhPD0wfHwocys9ODY0ZTUqaW8oc28oYSkrcikscj0wLGE9MCksaC5taWxsaXNlY29uZHM9cyUxZTMsdD1iKHMvMWUzKSxoLnNlY29uZHM9dCU2MCxlPWIodC82MCksaC5taW51dGVzPWUlNjAsaT1iKGUvNjApLGguaG91cnM9aSUyNCxyKz1iKGkvMjQpLG49YihubyhyKSksYSs9bixyLT1pbyhzbyhuKSksbz1iKGEvMTIpLGElPTEyLGguZGF5cz1yLGgubW9udGhzPWEsaC55ZWFycz1vLHRoaXN9ZnVuY3Rpb24gbm8odCl7cmV0dXJuIDQ4MDAqdC8xNDYwOTd9ZnVuY3Rpb24gc28odCl7cmV0dXJuIDE0NjA5Nyp0LzQ4MDB9ZnVuY3Rpb24gcm8odCl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBOYU47dmFyIGUsaSxvPXRoaXMuX21pbGxpc2Vjb25kcztpZigibW9udGgiPT09KHQ9eih0KSl8fCJ5ZWFyIj09PXQpcmV0dXJuIGU9dGhpcy5fZGF5cytvLzg2NGU1LGk9dGhpcy5fbW9udGhzK25vKGUpLCJtb250aCI9PT10P2k6aS8xMjtzd2l0Y2goZT10aGlzLl9kYXlzK01hdGgucm91bmQoc28odGhpcy5fbW9udGhzKSksdCl7Y2FzZSJ3ZWVrIjpyZXR1cm4gZS83K28vNjA0OGU1O2Nhc2UiZGF5IjpyZXR1cm4gZStvLzg2NGU1O2Nhc2UiaG91ciI6cmV0dXJuIDI0KmUrby8zNmU1O2Nhc2UibWludXRlIjpyZXR1cm4gMTQ0MCplK28vNmU0O2Nhc2Uic2Vjb25kIjpyZXR1cm4gODY0MDAqZStvLzFlMztjYXNlIm1pbGxpc2Vjb25kIjpyZXR1cm4gTWF0aC5mbG9vcig4NjRlNSplKStvO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHVuaXQgIit0KX19ZnVuY3Rpb24gYW8oKXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/dGhpcy5fbWlsbGlzZWNvbmRzKzg2NGU1KnRoaXMuX2RheXMrdGhpcy5fbW9udGhzJTEyKjI1OTJlNiszMTUzNmU2Kl8odGhpcy5fbW9udGhzLzEyKTpOYU59ZnVuY3Rpb24gaG8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXModCl9fWZ1bmN0aW9uIGxvKHQpe3JldHVybiB0PXoodCksdGhpcy5pc1ZhbGlkKCk/dGhpc1t0KyJzIl0oKTpOYU59ZnVuY3Rpb24gdW8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP3RoaXMuX2RhdGFbdF06TmFOfX1mdW5jdGlvbiBjbygpe3JldHVybiBiKHRoaXMuZGF5cygpLzcpfWZ1bmN0aW9uIHBvKHQsZSxpLG8sbil7cmV0dXJuIG4ucmVsYXRpdmVUaW1lKGV8fDEsISFpLHQsbyl9ZnVuY3Rpb24gZm8odCxlLGkpe3ZhciBvPUdlKHQpLmFicygpLG49YnMoby5hcygicyIpKSxzPWJzKG8uYXMoIm0iKSkscj1icyhvLmFzKCJoIikpLGE9YnMoby5hcygiZCIpKSxoPWJzKG8uYXMoIk0iKSksZD1icyhvLmFzKCJ5IikpLGw9bjw9X3Muc3MmJlsicyIsbl18fG48X3MucyYmWyJzcyIsbl18fHM8PTEmJlsibSJdfHxzPF9zLm0mJlsibW0iLHNdfHxyPD0xJiZbImgiXXx8cjxfcy5oJiZbImhoIixyXXx8YTw9MSYmWyJkIl18fGE8X3MuZCYmWyJkZCIsYV18fGg8PTEmJlsiTSJdfHxoPF9zLk0mJlsiTU0iLGhdfHxkPD0xJiZbInkiXXx8WyJ5eSIsZF07cmV0dXJuIGxbMl09ZSxsWzNdPSt0PjAsbFs0XT1pLHBvLmFwcGx5KG51bGwsbCl9ZnVuY3Rpb24gbW8odCl7cmV0dXJuIHZvaWQgMD09PXQ/YnM6ImZ1bmN0aW9uIj09dHlwZW9mIHQmJihicz10LCEwKX1mdW5jdGlvbiB2byh0LGUpe3JldHVybiB2b2lkIDAhPT1fc1t0XSYmKHZvaWQgMD09PWU/X3NbdF06KF9zW3RdPWUsInMiPT09dCYmKF9zLnNzPWUtMSksITApKX1mdW5jdGlvbiBnbyh0KXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7dmFyIGU9dGhpcy5sb2NhbGVEYXRhKCksaT1mbyh0aGlzLCF0LGUpO3JldHVybiB0JiYoaT1lLnBhc3RGdXR1cmUoK3RoaXMsaSkpLGUucG9zdGZvcm1hdChpKX1mdW5jdGlvbiB5bygpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTt2YXIgdCxlLGksbz13cyh0aGlzLl9taWxsaXNlY29uZHMpLzFlMyxuPXdzKHRoaXMuX2RheXMpLHM9d3ModGhpcy5fbW9udGhzKTt0PWIoby82MCksZT1iKHQvNjApLG8lPTYwLHQlPTYwLGk9YihzLzEyKSxzJT0xMjt2YXIgcj1pLGE9cyxoPW4sZD1lLGw9dCx1PW8sYz10aGlzLmFzU2Vjb25kcygpO3JldHVybiBjPyhjPDA/Ii0iOiIiKSsiUCIrKHI/cisiWSI6IiIpKyhhP2ErIk0iOiIiKSsoaD9oKyJEIjoiIikrKGR8fGx8fHU/IlQiOiIiKSsoZD9kKyJIIjoiIikrKGw/bCsiTSI6IiIpKyh1P3UrIlMiOiIiKToiUDBEIn12YXIgYm8sX287X289QXJyYXkucHJvdG90eXBlLnNvbWU/QXJyYXkucHJvdG90eXBlLnNvbWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPU9iamVjdCh0aGlzKSxpPWUubGVuZ3RoPj4+MCxvPTA7bzxpO28rKylpZihvIGluIGUmJnQuY2FsbCh0aGlzLGVbb10sbyxlKSlyZXR1cm4hMDtyZXR1cm4hMX07dmFyIHdvPV9vLHhvPWUubW9tZW50UHJvcGVydGllcz1bXSxrbz0hMSxEbz17fTtlLnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncz0hMSxlLmRlcHJlY2F0aW9uSGFuZGxlcj1udWxsO3ZhciBNbztNbz1PYmplY3Qua2V5cz9PYmplY3Qua2V5czpmdW5jdGlvbih0KXt2YXIgZSxpPVtdO2ZvcihlIGluIHQpZCh0LGUpJiZpLnB1c2goZSk7cmV0dXJuIGl9O3ZhciBTbyxPbz1NbyxDbz17c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LFRvPXtMVFM6Img6bW06c3MgQSIsTFQ6Img6bW0gQSIsTDoiTU0vREQvWVlZWSIsTEw6Ik1NTU0gRCwgWVlZWSIsTExMOiJNTU1NIEQsIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBNTU1NIEQsIFlZWVkgaDptbSBBIn0sRW89L1xkezEsMn0vLFBvPXtmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLHNzOiIlZCBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LElvPXt9LE5vPXt9LEFvPS8oXFtbXlxbXSpcXSl8KFxcKT8oW0hoXW1tKHNzKT98TW98TU0/TT9NP3xEb3xERERvfEREP0Q/RD98ZGRkP2Q/fGRvP3x3W298d10/fFdbb3xXXT98UW8/fFlZWVlZWXxZWVlZWXxZWVlZfFlZfGdnKGdnZz8pP3xHRyhHR0c/KT98ZXxFfGF8QXxoaD98SEg/fGtrP3xtbT98c3M/fFN7MSw5fXx4fFh8eno/fFpaP3wuKS9nLFJvPS8oXFtbXlxbXSpcXSl8KFxcKT8oTFRTfExUfExMP0w/TD98bHsxLDR9KS9nLHpvPXt9LExvPXt9LEZvPS9cZC8sQm89L1xkXGQvLGpvPS9cZHszfS8sSG89L1xkezR9LyxXbz0vWystXT9cZHs2fS8sWW89L1xkXGQ/LyxHbz0vXGRcZFxkXGQ/LyxWbz0vXGRcZFxkXGRcZFxkPy8sVW89L1xkezEsM30vLHFvPS9cZHsxLDR9LyxYbz0vWystXT9cZHsxLDZ9Lyxabz0vXGQrLyxLbz0vWystXT9cZCsvLEpvPS9afFsrLV1cZFxkOj9cZFxkL2dpLFFvPS9afFsrLV1cZFxkKD86Oj9cZFxkKT8vZ2ksJG89L1srLV0/XGQrKFwuXGR7MSwzfSk/Lyx0bj0vWzAtOV0qWydhLXpcdTAwQTAtXHUwNUZGXHUwNzAwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSt8W1x1MDYwMC1cdTA2RkZcL10rKFxzKj9bXHUwNjAwLVx1MDZGRl0rKXsxLDJ9L2ksZW49e30sb249e30sbm49MCxzbj0xLHJuPTIsYW49Myxobj00LGRuPTUsbG49Nix1bj03LGNuPTg7U289QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/QXJyYXkucHJvdG90eXBlLmluZGV4T2Y6ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9MDtlPHRoaXMubGVuZ3RoOysrZSlpZih0aGlzW2VdPT09dClyZXR1cm4gZTtyZXR1cm4tMX07dmFyIHBuPVNvO1UoIk0iLFsiTU0iLDJdLCJNbyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb250aCgpKzF9KSxVKCJNTU0iLDAsMCxmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzU2hvcnQodGhpcyx0KX0pLFUoIk1NTU0iLDAsMCxmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzKHRoaXMsdCl9KSxSKCJtb250aCIsIk0iKSxGKCJtb250aCIsOCksSigiTSIsWW8pLEooIk1NIixZbyxCbyksSigiTU1NIixmdW5jdGlvbih0LGUpe3JldHVybiBlLm1vbnRoc1Nob3J0UmVnZXgodCl9KSxKKCJNTU1NIixmdW5jdGlvbih0LGUpe3JldHVybiBlLm1vbnRoc1JlZ2V4KHQpfSksZXQoWyJNIiwiTU0iXSxmdW5jdGlvbih0LGUpe2Vbc25dPV8odCktMX0pLGV0KFsiTU1NIiwiTU1NTSJdLGZ1bmN0aW9uKHQsZSxpLG8pe3ZhciBuPWkuX2xvY2FsZS5tb250aHNQYXJzZSh0LG8saS5fc3RyaWN0KTtudWxsIT1uP2Vbc25dPW46cChpKS5pbnZhbGlkTW9udGg9dH0pO3ZhciBmbj0vRFtvRF0/KFxbW15cW1xdXSpcXXxccykrTU1NTT8vLG1uPSJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLHZuPSJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSxnbj10bix5bj10bjtVKCJZIiwwLDAsZnVuY3Rpb24oKXt2YXIgdD10aGlzLnllYXIoKTtyZXR1cm4gdDw9OTk5OT8iIit0OiIrIit0fSksVSgwLFsiWVkiLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55ZWFyKCklMTAwfSksVSgwLFsiWVlZWSIsNF0sMCwieWVhciIpLFUoMCxbIllZWVlZIiw1XSwwLCJ5ZWFyIiksVSgwLFsiWVlZWVlZIiw2LCEwXSwwLCJ5ZWFyIiksUigieWVhciIsInkiKSxGKCJ5ZWFyIiwxKSxKKCJZIixLbyksSigiWVkiLFlvLEJvKSxKKCJZWVlZIixxbyxIbyksSigiWVlZWVkiLFhvLFdvKSxKKCJZWVlZWVkiLFhvLFdvKSxldChbIllZWVlZIiwiWVlZWVlZIl0sbm4pLGV0KCJZWVlZIixmdW5jdGlvbih0LGkpe2lbbm5dPTI9PT10Lmxlbmd0aD9lLnBhcnNlVHdvRGlnaXRZZWFyKHQpOl8odCl9KSxldCgiWVkiLGZ1bmN0aW9uKHQsaSl7aVtubl09ZS5wYXJzZVR3b0RpZ2l0WWVhcih0KX0pLGV0KCJZIixmdW5jdGlvbih0LGUpe2Vbbm5dPXBhcnNlSW50KHQsMTApfSksZS5wYXJzZVR3b0RpZ2l0WWVhcj1mdW5jdGlvbih0KXtyZXR1cm4gXyh0KSsoXyh0KT42OD8xOTAwOjJlMyl9O3ZhciBibj1qKCJGdWxsWWVhciIsITApO1UoInciLFsid3ciLDJdLCJ3byIsIndlZWsiKSxVKCJXIixbIldXIiwyXSwiV28iLCJpc29XZWVrIiksUigid2VlayIsInciKSxSKCJpc29XZWVrIiwiVyIpLEYoIndlZWsiLDUpLEYoImlzb1dlZWsiLDUpLEooInciLFlvKSxKKCJ3dyIsWW8sQm8pLEooIlciLFlvKSxKKCJXVyIsWW8sQm8pLGl0KFsidyIsInd3IiwiVyIsIldXIl0sZnVuY3Rpb24odCxlLGksbyl7ZVtvLnN1YnN0cigwLDEpXT1fKHQpfSk7dmFyIF9uPXtkb3c6MCxkb3k6Nn07VSgiZCIsMCwiZG8iLCJkYXkiKSxVKCJkZCIsMCwwLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c01pbih0aGlzLHQpfSksVSgiZGRkIiwwLDAsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzU2hvcnQodGhpcyx0KX0pLFUoImRkZGQiLDAsMCxmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXModGhpcyx0KX0pLFUoImUiLDAsMCwid2Vla2RheSIpLFUoIkUiLDAsMCwiaXNvV2Vla2RheSIpLFIoImRheSIsImQiKSxSKCJ3ZWVrZGF5IiwiZSIpLFIoImlzb1dlZWtkYXkiLCJFIiksRigiZGF5IiwxMSksRigid2Vla2RheSIsMTEpLEYoImlzb1dlZWtkYXkiLDExKSxKKCJkIixZbyksSigiZSIsWW8pLEooIkUiLFlvKSxKKCJkZCIsZnVuY3Rpb24odCxlKXtyZXR1cm4gZS53ZWVrZGF5c01pblJlZ2V4KHQpfSksSigiZGRkIixmdW5jdGlvbih0LGUpe3JldHVybiBlLndlZWtkYXlzU2hvcnRSZWdleCh0KX0pLEooImRkZGQiLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUud2Vla2RheXNSZWdleCh0KX0pLGl0KFsiZGQiLCJkZGQiLCJkZGRkIl0sZnVuY3Rpb24odCxlLGksbyl7dmFyIG49aS5fbG9jYWxlLndlZWtkYXlzUGFyc2UodCxvLGkuX3N0cmljdCk7bnVsbCE9bj9lLmQ9bjpwKGkpLmludmFsaWRXZWVrZGF5PXR9KSxpdChbImQiLCJlIiwiRSJdLGZ1bmN0aW9uKHQsZSxpLG8pe2Vbb109Xyh0KX0pO3ZhciB3bj0iU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIikseG49IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSxrbj0iU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksRG49dG4sTW49dG4sU249dG47VSgiSCIsWyJISCIsMl0sMCwiaG91ciIpLFUoImgiLFsiaGgiLDJdLDAsWXQpLFUoImsiLFsia2siLDJdLDAsR3QpLFUoImhtbSIsMCwwLGZ1bmN0aW9uKCl7cmV0dXJuIiIrWXQuYXBwbHkodGhpcykrVih0aGlzLm1pbnV0ZXMoKSwyKX0pLFUoImhtbXNzIiwwLDAsZnVuY3Rpb24oKXtyZXR1cm4iIitZdC5hcHBseSh0aGlzKStWKHRoaXMubWludXRlcygpLDIpK1YodGhpcy5zZWNvbmRzKCksMil9KSxVKCJIbW0iLDAsMCxmdW5jdGlvbigpe3JldHVybiIiK3RoaXMuaG91cnMoKStWKHRoaXMubWludXRlcygpLDIpfSksVSgiSG1tc3MiLDAsMCxmdW5jdGlvbigpe3JldHVybiIiK3RoaXMuaG91cnMoKStWKHRoaXMubWludXRlcygpLDIpK1YodGhpcy5zZWNvbmRzKCksMil9KSxWdCgiYSIsITApLFZ0KCJBIiwhMSksUigiaG91ciIsImgiKSxGKCJob3VyIiwxMyksSigiYSIsVXQpLEooIkEiLFV0KSxKKCJIIixZbyksSigiaCIsWW8pLEooImsiLFlvKSxKKCJISCIsWW8sQm8pLEooImhoIixZbyxCbyksSigia2siLFlvLEJvKSxKKCJobW0iLEdvKSxKKCJobW1zcyIsVm8pLEooIkhtbSIsR28pLEooIkhtbXNzIixWbyksZXQoWyJIIiwiSEgiXSxhbiksZXQoWyJrIiwia2siXSxmdW5jdGlvbih0LGUsaSl7dmFyIG89Xyh0KTtlW2FuXT0yND09PW8/MDpvfSksZXQoWyJhIiwiQSJdLGZ1bmN0aW9uKHQsZSxpKXtpLl9pc1BtPWkuX2xvY2FsZS5pc1BNKHQpLGkuX21lcmlkaWVtPXR9KSxldChbImgiLCJoaCJdLGZ1bmN0aW9uKHQsZSxpKXtlW2FuXT1fKHQpLHAoaSkuYmlnSG91cj0hMH0pLGV0KCJobW0iLGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz10Lmxlbmd0aC0yO2VbYW5dPV8odC5zdWJzdHIoMCxvKSksZVtobl09Xyh0LnN1YnN0cihvKSkscChpKS5iaWdIb3VyPSEwfSksZXQoImhtbXNzIixmdW5jdGlvbih0LGUsaSl7dmFyIG89dC5sZW5ndGgtNCxuPXQubGVuZ3RoLTI7ZVthbl09Xyh0LnN1YnN0cigwLG8pKSxlW2huXT1fKHQuc3Vic3RyKG8sMikpLGVbZG5dPV8odC5zdWJzdHIobikpLHAoaSkuYmlnSG91cj0hMH0pLGV0KCJIbW0iLGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz10Lmxlbmd0aC0yO2VbYW5dPV8odC5zdWJzdHIoMCxvKSksZVtobl09Xyh0LnN1YnN0cihvKSl9KSxldCgiSG1tc3MiLGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz10Lmxlbmd0aC00LG49dC5sZW5ndGgtMjtlW2FuXT1fKHQuc3Vic3RyKDAsbykpLGVbaG5dPV8odC5zdWJzdHIobywyKSksZVtkbl09Xyh0LnN1YnN0cihuKSl9KTt2YXIgT24sQ249L1thcF1cLj9tP1wuPy9pLFRuPWooIkhvdXJzIiwhMCksRW49e2NhbGVuZGFyOkNvLGxvbmdEYXRlRm9ybWF0OlRvLGludmFsaWREYXRlOiJJbnZhbGlkIGRhdGUiLG9yZGluYWw6IiVkIixkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOkVvLHJlbGF0aXZlVGltZTpQbyxtb250aHM6bW4sbW9udGhzU2hvcnQ6dm4sd2Vlazpfbix3ZWVrZGF5czp3bix3ZWVrZGF5c01pbjprbix3ZWVrZGF5c1Nob3J0OnhuLG1lcmlkaWVtUGFyc2U6Q259LFBuPXt9LEluPXt9LE5uPS9eXHMqKCg/OlsrLV1cZHs2fXxcZHs0fSktKD86XGRcZC1cZFxkfFdcZFxkLVxkfFdcZFxkfFxkXGRcZHxcZFxkKSkoPzooVHwgKShcZFxkKD86OlxkXGQoPzo6XGRcZCg/OlsuLF1cZCspPyk/KT8pKFtcK1wtXVxkXGQoPzo6P1xkXGQpP3xccypaKT8pPyQvLEFuPS9eXHMqKCg/OlsrLV1cZHs2fXxcZHs0fSkoPzpcZFxkXGRcZHxXXGRcZFxkfFdcZFxkfFxkXGRcZHxcZFxkKSkoPzooVHwgKShcZFxkKD86XGRcZCg/OlxkXGQoPzpbLixdXGQrKT8pPyk/KShbXCtcLV1cZFxkKD86Oj9cZFxkKT98XHMqWik/KT8kLyxSbj0vWnxbKy1dXGRcZCg/Ojo/XGRcZCk/Lyx6bj1bWyJZWVlZWVktTU0tREQiLC9bKy1dXGR7Nn0tXGRcZC1cZFxkL10sWyJZWVlZLU1NLUREIiwvXGR7NH0tXGRcZC1cZFxkL10sWyJHR0dHLVtXXVdXLUUiLC9cZHs0fS1XXGRcZC1cZC9dLFsiR0dHRy1bV11XVyIsL1xkezR9LVdcZFxkLywhMV0sWyJZWVlZLURERCIsL1xkezR9LVxkezN9L10sWyJZWVlZLU1NIiwvXGR7NH0tXGRcZC8sITFdLFsiWVlZWVlZTU1ERCIsL1srLV1cZHsxMH0vXSxbIllZWVlNTUREIiwvXGR7OH0vXSxbIkdHR0dbV11XV0UiLC9cZHs0fVdcZHszfS9dLFsiR0dHR1tXXVdXIiwvXGR7NH1XXGR7Mn0vLCExXSxbIllZWVlEREQiLC9cZHs3fS9dXSxMbj1bWyJISDptbTpzcy5TU1NTIiwvXGRcZDpcZFxkOlxkXGRcLlxkKy9dLFsiSEg6bW06c3MsU1NTUyIsL1xkXGQ6XGRcZDpcZFxkLFxkKy9dLFsiSEg6bW06c3MiLC9cZFxkOlxkXGQ6XGRcZC9dLFsiSEg6bW0iLC9cZFxkOlxkXGQvXSxbIkhIbW1zcy5TU1NTIiwvXGRcZFxkXGRcZFxkXC5cZCsvXSxbIkhIbW1zcyxTU1NTIiwvXGRcZFxkXGRcZFxkLFxkKy9dLFsiSEhtbXNzIiwvXGRcZFxkXGRcZFxkL10sWyJISG1tIiwvXGRcZFxkXGQvXSxbIkhIIiwvXGRcZC9dXSxGbj0vXlwvP0RhdGVcKChcLT9cZCspL2ksQm49L14oKD86TW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSw/XHMpPyhcZD9cZFxzKD86SmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpXHMoPzpcZFxkKT9cZFxkXHMpKFxkXGQ6XGRcZCkoXDpcZFxkKT8oXHMoPzpVVHxHTVR8W0VDTVBdW1NEXVR8W0EtSUstWmEtaWstel18WystXVxkezR9KSkkLztlLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrPWsoInZhbHVlIHByb3ZpZGVkIGlzIG5vdCBpbiBhIHJlY29nbml6ZWQgUkZDMjgyMiBvciBJU08gZm9ybWF0LiBtb21lbnQgY29uc3RydWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZSgpLCB3aGljaCBpcyBub3QgcmVsaWFibGUgYWNyb3NzIGFsbCBicm93c2VycyBhbmQgdmVyc2lvbnMuIE5vbiBSRkMyODIyL0lTTyBkYXRlIGZvcm1hdHMgYXJlIGRpc2NvdXJhZ2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYW4gdXBjb21pbmcgbWFqb3IgcmVsZWFzZS4gUGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvanMtZGF0ZS8gZm9yIG1vcmUgaW5mby4iLGZ1bmN0aW9uKHQpe3QuX2Q9bmV3IERhdGUodC5faSsodC5fdXNlVVRDPyIgVVRDIjoiIikpfSksZS5JU09fODYwMT1mdW5jdGlvbigpe30sZS5SRkNfMjgyMj1mdW5jdGlvbigpe307dmFyIGpuPWsoIm1vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1heCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvIixmdW5jdGlvbigpe3ZhciB0PWJlLmFwcGx5KG51bGwsYXJndW1lbnRzKTtyZXR1cm4gdGhpcy5pc1ZhbGlkKCkmJnQuaXNWYWxpZCgpP3Q8dGhpcz90aGlzOnQ6bSgpfSksSG49aygibW9tZW50KCkubWF4IGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQubWluIGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvbWluLW1heC8iLGZ1bmN0aW9uKCl7dmFyIHQ9YmUuYXBwbHkobnVsbCxhcmd1bWVudHMpO3JldHVybiB0aGlzLmlzVmFsaWQoKSYmdC5pc1ZhbGlkKCk/dD50aGlzP3RoaXM6dDptKCl9KSxXbj1mdW5jdGlvbigpe3JldHVybiBEYXRlLm5vdz9EYXRlLm5vdygpOituZXcgRGF0ZX0sWW49WyJ5ZWFyIiwicXVhcnRlciIsIm1vbnRoIiwid2VlayIsImRheSIsImhvdXIiLCJtaW51dGUiLCJzZWNvbmQiLCJtaWxsaXNlY29uZCJdO1RlKCJaIiwiOiIpLFRlKCJaWiIsIiIpLEooIloiLFFvKSxKKCJaWiIsUW8pLGV0KFsiWiIsIlpaIl0sZnVuY3Rpb24odCxlLGkpe2kuX3VzZVVUQz0hMCxpLl90em09RWUoUW8sdCl9KTt2YXIgR249LyhbXCtcLV18XGRcZCkvZ2k7ZS51cGRhdGVPZmZzZXQ9ZnVuY3Rpb24oKXt9O3ZhciBWbj0vXihcLSk/KD86KFxkKilbLiBdKT8oXGQrKVw6KFxkKykoPzpcOihcZCspKFwuXGQqKT8pPyQvLFVuPS9eKC0pP1AoPzooLT9bMC05LC5dKilZKT8oPzooLT9bMC05LC5dKilNKT8oPzooLT9bMC05LC5dKilXKT8oPzooLT9bMC05LC5dKilEKT8oPzpUKD86KC0/WzAtOSwuXSopSCk/KD86KC0/WzAtOSwuXSopTSk/KD86KC0/WzAtOSwuXSopUyk/KT8kLztHZS5mbj1TZS5wcm90b3R5cGUsR2UuaW52YWxpZD1NZTt2YXIgcW49WGUoMSwiYWRkIiksWG49WGUoLTEsInN1YnRyYWN0Iik7ZS5kZWZhdWx0Rm9ybWF0PSJZWVlZLU1NLUREVEhIOm1tOnNzWiIsZS5kZWZhdWx0Rm9ybWF0VXRjPSJZWVlZLU1NLUREVEhIOm1tOnNzW1pdIjt2YXIgWm49aygibW9tZW50KCkubGFuZygpIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSBtb21lbnQoKS5sb2NhbGVEYXRhKCkgdG8gZ2V0IHRoZSBsYW5ndWFnZSBjb25maWd1cmF0aW9uLiBVc2UgbW9tZW50KCkubG9jYWxlKCkgdG8gY2hhbmdlIGxhbmd1YWdlcy4iLGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3RoaXMubG9jYWxlRGF0YSgpOnRoaXMubG9jYWxlKHQpfSk7VSgwLFsiZ2ciLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53ZWVrWWVhcigpJTEwMH0pLFUoMCxbIkdHIiwyXSwwLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNvV2Vla1llYXIoKSUxMDB9KSxUaSgiZ2dnZyIsIndlZWtZZWFyIiksVGkoImdnZ2dnIiwid2Vla1llYXIiKSxUaSgiR0dHRyIsImlzb1dlZWtZZWFyIiksVGkoIkdHR0dHIiwiaXNvV2Vla1llYXIiKSxSKCJ3ZWVrWWVhciIsImdnIiksUigiaXNvV2Vla1llYXIiLCJHRyIpLEYoIndlZWtZZWFyIiwxKSxGKCJpc29XZWVrWWVhciIsMSksSigiRyIsS28pLEooImciLEtvKSxKKCJHRyIsWW8sQm8pLEooImdnIixZbyxCbyksSigiR0dHRyIscW8sSG8pLEooImdnZ2ciLHFvLEhvKSxKKCJHR0dHRyIsWG8sV28pLEooImdnZ2dnIixYbyxXbyksaXQoWyJnZ2dnIiwiZ2dnZ2ciLCJHR0dHIiwiR0dHR0ciXSxmdW5jdGlvbih0LGUsaSxvKXtlW28uc3Vic3RyKDAsMildPV8odCl9KSxpdChbImdnIiwiR0ciXSxmdW5jdGlvbih0LGksbyxuKXtpW25dPWUucGFyc2VUd29EaWdpdFllYXIodCl9KSxVKCJRIiwwLCJRbyIsInF1YXJ0ZXIiKSxSKCJxdWFydGVyIiwiUSIpLEYoInF1YXJ0ZXIiLDcpLEooIlEiLEZvKSxldCgiUSIsZnVuY3Rpb24odCxlKXtlW3NuXT0zKihfKHQpLTEpfSksVSgiRCIsWyJERCIsMl0sIkRvIiwiZGF0ZSIpLFIoImRhdGUiLCJEIiksRigiZGF0ZSIsOSksSigiRCIsWW8pLEooIkREIixZbyxCbyksSigiRG8iLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ/ZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZXx8ZS5fb3JkaW5hbFBhcnNlOmUuX2RheU9mTW9udGhPcmRpbmFsUGFyc2VMZW5pZW50fSksZXQoWyJEIiwiREQiXSxybiksZXQoIkRvIixmdW5jdGlvbih0LGUpe2Vbcm5dPV8odC5tYXRjaChZbylbMF0sMTApfSk7dmFyIEtuPWooIkRhdGUiLCEwKTtVKCJEREQiLFsiRERERCIsM10sIkRERG8iLCJkYXlPZlllYXIiKSxSKCJkYXlPZlllYXIiLCJEREQiKSxGKCJkYXlPZlllYXIiLDQpLEooIkRERCIsVW8pLEooIkREREQiLGpvKSxldChbIkRERCIsIkREREQiXSxmdW5jdGlvbih0LGUsaSl7aS5fZGF5T2ZZZWFyPV8odCl9KSxVKCJtIixbIm1tIiwyXSwwLCJtaW51dGUiKSxSKCJtaW51dGUiLCJtIiksRigibWludXRlIiwxNCksSigibSIsWW8pLEooIm1tIixZbyxCbyksZXQoWyJtIiwibW0iXSxobik7dmFyIEpuPWooIk1pbnV0ZXMiLCExKTtVKCJzIixbInNzIiwyXSwwLCJzZWNvbmQiKSxSKCJzZWNvbmQiLCJzIiksRigic2Vjb25kIiwxNSksSigicyIsWW8pLEooInNzIixZbyxCbyksZXQoWyJzIiwic3MiXSxkbik7dmFyIFFuPWooIlNlY29uZHMiLCExKTtVKCJTIiwwLDAsZnVuY3Rpb24oKXtyZXR1cm5+fih0aGlzLm1pbGxpc2Vjb25kKCkvMTAwKX0pLFUoMCxbIlNTIiwyXSwwLGZ1bmN0aW9uKCl7cmV0dXJufn4odGhpcy5taWxsaXNlY29uZCgpLzEwKX0pLFUoMCxbIlNTUyIsM10sMCwibWlsbGlzZWNvbmQiKSxVKDAsWyJTU1NTIiw0XSwwLGZ1bmN0aW9uKCl7cmV0dXJuIDEwKnRoaXMubWlsbGlzZWNvbmQoKX0pLFUoMCxbIlNTU1NTIiw1XSwwLGZ1bmN0aW9uKCl7cmV0dXJuIDEwMCp0aGlzLm1pbGxpc2Vjb25kKCl9KSxVKDAsWyJTU1NTU1MiLDZdLDAsZnVuY3Rpb24oKXtyZXR1cm4gMWUzKnRoaXMubWlsbGlzZWNvbmQoKX0pLFUoMCxbIlNTU1NTU1MiLDddLDAsZnVuY3Rpb24oKXtyZXR1cm4gMWU0KnRoaXMubWlsbGlzZWNvbmQoKX0pLFUoMCxbIlNTU1NTU1NTIiw4XSwwLGZ1bmN0aW9uKCl7cmV0dXJuIDFlNSp0aGlzLm1pbGxpc2Vjb25kKCl9KSxVKDAsWyJTU1NTU1NTU1MiLDldLDAsZnVuY3Rpb24oKXtyZXR1cm4gMWU2KnRoaXMubWlsbGlzZWNvbmQoKX0pLFIoIm1pbGxpc2Vjb25kIiwibXMiKSxGKCJtaWxsaXNlY29uZCIsMTYpLEooIlMiLFVvLEZvKSxKKCJTUyIsVW8sQm8pLEooIlNTUyIsVW8sam8pO3ZhciAkbjtmb3IoJG49IlNTU1MiOyRuLmxlbmd0aDw9OTskbis9IlMiKUooJG4sWm8pO2Zvcigkbj0iUyI7JG4ubGVuZ3RoPD05OyRuKz0iUyIpZXQoJG4sRmkpO3ZhciB0cz1qKCJNaWxsaXNlY29uZHMiLCExKTtVKCJ6IiwwLDAsInpvbmVBYmJyIiksVSgienoiLDAsMCwiem9uZU5hbWUiKTt2YXIgZXM9Zy5wcm90b3R5cGU7ZXMuYWRkPXFuLGVzLmNhbGVuZGFyPUplLGVzLmNsb25lPVFlLGVzLmRpZmY9c2ksZXMuZW5kT2Y9eWksZXMuZm9ybWF0PWxpLGVzLmZyb209dWksZXMuZnJvbU5vdz1jaSxlcy50bz1waSxlcy50b05vdz1maSxlcy5nZXQ9WSxlcy5pbnZhbGlkQXQ9T2ksZXMuaXNBZnRlcj0kZSxlcy5pc0JlZm9yZT10aSxlcy5pc0JldHdlZW49ZWksZXMuaXNTYW1lPWlpLGVzLmlzU2FtZU9yQWZ0ZXI9b2ksZXMuaXNTYW1lT3JCZWZvcmU9bmksZXMuaXNWYWxpZD1NaSxlcy5sYW5nPVpuLGVzLmxvY2FsZT1taSxlcy5sb2NhbGVEYXRhPXZpLGVzLm1heD1Ibixlcy5taW49am4sZXMucGFyc2luZ0ZsYWdzPVNpLGVzLnNldD1HLGVzLnN0YXJ0T2Y9Z2ksZXMuc3VidHJhY3Q9WG4sZXMudG9BcnJheT14aSxlcy50b09iamVjdD1raSxlcy50b0RhdGU9d2ksZXMudG9JU09TdHJpbmc9aGksZXMuaW5zcGVjdD1kaSxlcy50b0pTT049RGksZXMudG9TdHJpbmc9YWksZXMudW5peD1faSxlcy52YWx1ZU9mPWJpLGVzLmNyZWF0aW9uRGF0YT1DaSxlcy55ZWFyPWJuLGVzLmlzTGVhcFllYXI9Z3QsZXMud2Vla1llYXI9RWksZXMuaXNvV2Vla1llYXI9UGksZXMucXVhcnRlcj1lcy5xdWFydGVycz16aSxlcy5tb250aD1sdCxlcy5kYXlzSW5Nb250aD11dCxlcy53ZWVrPWVzLndlZWtzPU90LGVzLmlzb1dlZWs9ZXMuaXNvV2Vla3M9Q3QsZXMud2Vla3NJblllYXI9TmksZXMuaXNvV2Vla3NJblllYXI9SWksZXMuZGF0ZT1Lbixlcy5kYXk9ZXMuZGF5cz16dCxlcy53ZWVrZGF5PUx0LGVzLmlzb1dlZWtkYXk9RnQsZXMuZGF5T2ZZZWFyPUxpLGVzLmhvdXI9ZXMuaG91cnM9VG4sZXMubWludXRlPWVzLm1pbnV0ZXM9Sm4sZXMuc2Vjb25kPWVzLnNlY29uZHM9UW4sZXMubWlsbGlzZWNvbmQ9ZXMubWlsbGlzZWNvbmRzPXRzLGVzLnV0Y09mZnNldD1OZSxlcy51dGM9UmUsZXMubG9jYWw9emUsZXMucGFyc2Vab25lPUxlLGVzLmhhc0FsaWduZWRIb3VyT2Zmc2V0PUZlLGVzLmlzRFNUPUJlLGVzLmlzTG9jYWw9SGUsZXMuaXNVdGNPZmZzZXQ9V2UsZXMuaXNVdGM9WWUsZXMuaXNVVEM9WWUsZXMuem9uZUFiYnI9QmksZXMuem9uZU5hbWU9amksZXMuZGF0ZXM9aygiZGF0ZXMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIGRhdGUgaW5zdGVhZC4iLEtuKSxlcy5tb250aHM9aygibW9udGhzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb250aCBpbnN0ZWFkIixsdCksZXMueWVhcnM9aygieWVhcnMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIHllYXIgaW5zdGVhZCIsYm4pLGVzLnpvbmU9aygibW9tZW50KCkuem9uZSBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50KCkudXRjT2Zmc2V0IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3Mvem9uZS8iLEFlKSxlcy5pc0RTVFNoaWZ0ZWQ9aygiaXNEU1RTaGlmdGVkIGlzIGRlcHJlY2F0ZWQuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RzdC1zaGlmdGVkLyBmb3IgbW9yZSBpbmZvcm1hdGlvbiIsamUpO3ZhciBpcz1DLnByb3RvdHlwZTtpcy5jYWxlbmRhcj1ULGlzLmxvbmdEYXRlRm9ybWF0PUUsaXMuaW52YWxpZERhdGU9UCxpcy5vcmRpbmFsPUksaXMucHJlcGFyc2U9WWksaXMucG9zdGZvcm1hdD1ZaSxpcy5yZWxhdGl2ZVRpbWU9Tixpcy5wYXN0RnV0dXJlPUEsaXMuc2V0PVMsaXMubW9udGhzPXN0LGlzLm1vbnRoc1Nob3J0PXJ0LGlzLm1vbnRoc1BhcnNlPWh0LGlzLm1vbnRoc1JlZ2V4PXB0LGlzLm1vbnRoc1Nob3J0UmVnZXg9Y3QsaXMud2Vlaz1EdCxpcy5maXJzdERheU9mWWVhcj1TdCxpcy5maXJzdERheU9mV2Vlaz1NdCxpcy53ZWVrZGF5cz1QdCxpcy53ZWVrZGF5c01pbj1OdCxpcy53ZWVrZGF5c1Nob3J0PUl0LGlzLndlZWtkYXlzUGFyc2U9UnQsaXMud2Vla2RheXNSZWdleD1CdCxpcy53ZWVrZGF5c1Nob3J0UmVnZXg9anQsaXMud2Vla2RheXNNaW5SZWdleD1IdCxpcy5pc1BNPXF0LGlzLm1lcmlkaWVtPVh0LFF0KCJlbiIse2RheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0odGh8c3R8bmR8cmQpLyxvcmRpbmFsOmZ1bmN0aW9uKHQpe3ZhciBlPXQlMTA7cmV0dXJuIHQrKDE9PT1fKHQlMTAwLzEwKT8idGgiOjE9PT1lPyJzdCI6Mj09PWU/Im5kIjozPT09ZT8icmQiOiJ0aCIpfX0pLGUubGFuZz1rKCJtb21lbnQubGFuZyBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZSBpbnN0ZWFkLiIsUXQpLGUubGFuZ0RhdGE9aygibW9tZW50LmxhbmdEYXRhIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb21lbnQubG9jYWxlRGF0YSBpbnN0ZWFkLiIsZWUpO3ZhciBvcz1NYXRoLmFicyxucz1obygibXMiKSxzcz1obygicyIpLHJzPWhvKCJtIiksYXM9aG8oImgiKSxocz1obygiZCIpLGRzPWhvKCJ3IiksbHM9aG8oIk0iKSx1cz1obygieSIpLGNzPXVvKCJtaWxsaXNlY29uZHMiKSxwcz11bygic2Vjb25kcyIpLGZzPXVvKCJtaW51dGVzIiksbXM9dW8oImhvdXJzIiksdnM9dW8oImRheXMiKSxncz11bygibW9udGhzIikseXM9dW8oInllYXJzIiksYnM9TWF0aC5yb3VuZCxfcz17c3M6NDQsczo0NSxtOjQ1LGg6MjIsZDoyNixNOjExfSx3cz1NYXRoLmFicyx4cz1TZS5wcm90b3R5cGU7cmV0dXJuIHhzLmlzVmFsaWQ9RGUseHMuYWJzPVFpLHhzLmFkZD10byx4cy5zdWJ0cmFjdD1lbyx4cy5hcz1ybyx4cy5hc01pbGxpc2Vjb25kcz1ucyx4cy5hc1NlY29uZHM9c3MseHMuYXNNaW51dGVzPXJzLHhzLmFzSG91cnM9YXMseHMuYXNEYXlzPWhzLHhzLmFzV2Vla3M9ZHMseHMuYXNNb250aHM9bHMseHMuYXNZZWFycz11cyx4cy52YWx1ZU9mPWFvLHhzLl9idWJibGU9b28seHMuZ2V0PWxvLHhzLm1pbGxpc2Vjb25kcz1jcyx4cy5zZWNvbmRzPXBzLHhzLm1pbnV0ZXM9ZnMseHMuaG91cnM9bXMseHMuZGF5cz12cyx4cy53ZWVrcz1jbyx4cy5tb250aHM9Z3MseHMueWVhcnM9eXMseHMuaHVtYW5pemU9Z28seHMudG9JU09TdHJpbmc9eW8seHMudG9TdHJpbmc9eW8seHMudG9KU09OPXlvLHhzLmxvY2FsZT1taSx4cy5sb2NhbGVEYXRhPXZpLHhzLnRvSXNvU3RyaW5nPWsoInRvSXNvU3RyaW5nKCkgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0b0lTT1N0cmluZygpIGluc3RlYWQgKG5vdGljZSB0aGUgY2FwaXRhbHMpIix5bykseHMubGFuZz1abixVKCJYIiwwLDAsInVuaXgiKSxVKCJ4IiwwLDAsInZhbHVlT2YiKSxKKCJ4IixLbyksSigiWCIsJG8pLGV0KCJYIixmdW5jdGlvbih0LGUsaSl7aS5fZD1uZXcgRGF0ZSgxZTMqcGFyc2VGbG9hdCh0LDEwKSl9KSxldCgieCIsZnVuY3Rpb24odCxlLGkpe2kuX2Q9bmV3IERhdGUoXyh0KSl9KSxlLnZlcnNpb249IjIuMTguMSIsZnVuY3Rpb24odCl7Ym89dH0oYmUpLGUuZm49ZXMsZS5taW49d2UsZS5tYXg9eGUsZS5ub3c9V24sZS51dGM9dSxlLnVuaXg9SGksZS5tb250aHM9cWksZS5pc0RhdGU9YSxlLmxvY2FsZT1RdCxlLmludmFsaWQ9bSxlLmR1cmF0aW9uPUdlLGUuaXNNb21lbnQ9eSxlLndlZWtkYXlzPVppLGUucGFyc2Vab25lPVdpLGUubG9jYWxlRGF0YT1lZSxlLmlzRHVyYXRpb249T2UsZS5tb250aHNTaG9ydD1YaSxlLndlZWtkYXlzTWluPUppLGUuZGVmaW5lTG9jYWxlPSR0LGUudXBkYXRlTG9jYWxlPXRlLGUubG9jYWxlcz1pZSxlLndlZWtkYXlzU2hvcnQ9S2ksZS5ub3JtYWxpemVVbml0cz16LGUucmVsYXRpdmVUaW1lUm91bmRpbmc9bW8sZS5yZWxhdGl2ZVRpbWVUaHJlc2hvbGQ9dm8sZS5jYWxlbmRhckZvcm1hdD1LZSxlLnByb3RvdHlwZT1lcyxlfSl9KS5jYWxsKGUsaSg4NCkodCkpfSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdC53ZWJwYWNrUG9seWZpbGx8fCh0LmRlcHJlY2F0ZT1mdW5jdGlvbigpe30sdC5wYXRocz1bXSx0LmNoaWxkcmVuPVtdLHQud2VicGFja1BvbHlmaWxsPTEpLHR9fSxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkodCl7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrdCsiJy4iKX1pLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm5bXX0saS5yZXNvbHZlPWksdC5leHBvcnRzPWksaS5pZD04NX0sZnVuY3Rpb24odCxlKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gaSh0LGUsaSl7dmFyIG89ZSYmaXx8MCxuPTA7Zm9yKGU9ZXx8W10sdC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1swLTlhLWZdezJ9L2csZnVuY3Rpb24odCl7bjwxNiYmKGVbbytuKytdPXVbdF0pfSk7bjwxNjspZVtvK24rK109MDtyZXR1cm4gZX1mdW5jdGlvbiBvKHQsZSl7dmFyIGk9ZXx8MCxvPWw7cmV0dXJuIG9bdFtpKytdXStvW3RbaSsrXV0rb1t0W2krK11dK29bdFtpKytdXSsiLSIrb1t0W2krK11dK29bdFtpKytdXSsiLSIrb1t0W2krK11dK29bdFtpKytdXSsiLSIrb1t0W2krK11dK29bdFtpKytdXSsiLSIrb1t0W2krK11dK29bdFtpKytdXStvW3RbaSsrXV0rb1t0W2krK11dK29bdFtpKytdXStvW3RbaSsrXV19ZnVuY3Rpb24gbih0LGUsaSl7dmFyIG49ZSYmaXx8MCxzPWV8fFtdO3Q9dHx8e307dmFyIHI9dm9pZCAwIT09dC5jbG9ja3NlcT90LmNsb2Nrc2VxOm0sYT12b2lkIDAhPT10Lm1zZWNzP3QubXNlY3M6KG5ldyBEYXRlKS5nZXRUaW1lKCksaD12b2lkIDAhPT10Lm5zZWNzP3QubnNlY3M6ZysxLGQ9YS12KyhoLWcpLzFlNDtpZihkPDAmJnZvaWQgMD09PXQuY2xvY2tzZXEmJihyPXIrMSYxNjM4MyksKGQ8MHx8YT52KSYmdm9pZCAwPT09dC5uc2VjcyYmKGg9MCksaD49MWU0KXRocm93IG5ldyBFcnJvcigidXVpZC52MSgpOiBDYW4ndCBjcmVhdGUgbW9yZSB0aGFuIDEwTSB1dWlkcy9zZWMiKTt2PWEsZz1oLG09cixhKz0xMjIxOTI5MjhlNTt2YXIgbD0oMWU0KigyNjg0MzU0NTUmYSkraCklNDI5NDk2NzI5NjtzW24rK109bD4+PjI0JjI1NSxzW24rK109bD4+PjE2JjI1NSxzW24rK109bD4+PjgmMjU1LHNbbisrXT0yNTUmbDt2YXIgdT1hLzQyOTQ5NjcyOTYqMWU0JjI2ODQzNTQ1NTtzW24rK109dT4+PjgmMjU1LHNbbisrXT0yNTUmdSxzW24rK109dT4+PjI0JjE1fDE2LHNbbisrXT11Pj4+MTYmMjU1LHNbbisrXT1yPj4+OHwxMjgsc1tuKytdPTI1NSZyO2Zvcih2YXIgYz10Lm5vZGV8fGYscD0wO3A8NjtwKyspc1tuK3BdPWNbcF07cmV0dXJuIGV8fG8ocyl9ZnVuY3Rpb24gcyh0LGUsaSl7dmFyIG49ZSYmaXx8MDsic3RyaW5nIj09dHlwZW9mIHQmJihlPSJiaW5hcnkiPT10P25ldyBBcnJheSgxNik6bnVsbCx0PW51bGwpLHQ9dHx8e307dmFyIHM9dC5yYW5kb218fCh0LnJuZ3x8cikoKTtpZihzWzZdPTE1JnNbNl18NjQsc1s4XT02MyZzWzhdfDEyOCxlKWZvcih2YXIgYT0wO2E8MTY7YSsrKWVbbithXT1zW2FdO3JldHVybiBlfHxvKHMpfXZhciByLGE9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMCE9PWU/ZTpudWxsO2lmKGEmJmEuY3J5cHRvJiZjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKXt2YXIgaD1uZXcgVWludDhBcnJheSgxNik7cj1mdW5jdGlvbigpe3JldHVybiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGgpLGh9fWlmKCFyKXt2YXIgZD1uZXcgQXJyYXkoMTYpO3I9ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT0wO2U8MTY7ZSsrKTA9PSgzJmUpJiYodD00Mjk0OTY3Mjk2Kk1hdGgucmFuZG9tKCkpLGRbZV09dD4+PigoMyZlKTw8MykmMjU1O3JldHVybiBkfX1mb3IodmFyIGw9W10sdT17fSxjPTA7YzwyNTY7YysrKWxbY109KGMrMjU2KS50b1N0cmluZygxNikuc3Vic3RyKDEpLHVbbFtjXV09Yzt2YXIgcD1yKCksZj1bMXxwWzBdLHBbMV0scFsyXSxwWzNdLHBbNF0scFs1XV0sbT0xNjM4MyYocFs2XTw8OHxwWzddKSx2PTAsZz0wLHk9czt5LnYxPW4seS52ND1zLHkucGFyc2U9aSx5LnVucGFyc2U9byx0LmV4cG9ydHM9eX0pLmNhbGwoZSxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpKX0sZnVuY3Rpb24odCxlLGkpe2UudXRpbD1pKDEpLGUuRE9NdXRpbD1pKDg4KSxlLkRhdGFTZXQ9aSg4OSksZS5EYXRhVmlldz1pKDkzKSxlLlF1ZXVlPWkoOTIpLGUuR3JhcGgzZD1pKDk0KSxlLmdyYXBoM2Q9e0NhbWVyYTppKDEwMiksRmlsdGVyOmkoMTA3KSxQb2ludDJkOmkoMTAxKSxQb2ludDNkOmkoMTAwKSxTbGlkZXI6aSgxMDgpLFN0ZXBOdW1iZXI6aSgxMDkpfSxlLm1vbWVudD1pKDgyKSxlLkhhbW1lcj1pKDExMyksZS5rZXljaGFybT1pKDExNil9LGZ1bmN0aW9uKHQsZSl7ZS5wcmVwYXJlRWxlbWVudHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShlKSYmKHRbZV0ucmVkdW5kYW50PXRbZV0udXNlZCx0W2VdLnVzZWQ9W10pfSxlLmNsZWFudXBFbGVtZW50cz1mdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGUpJiZ0W2VdLnJlZHVuZGFudCl7Zm9yKHZhciBpPTA7aTx0W2VdLnJlZHVuZGFudC5sZW5ndGg7aSsrKXRbZV0ucmVkdW5kYW50W2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodFtlXS5yZWR1bmRhbnRbaV0pO3RbZV0ucmVkdW5kYW50PVtdfX0sZS5yZXNldEVsZW1lbnRzPWZ1bmN0aW9uKHQpe2UucHJlcGFyZUVsZW1lbnRzKHQpLGUuY2xlYW51cEVsZW1lbnRzKHQpLGUucHJlcGFyZUVsZW1lbnRzKHQpfSxlLmdldFNWR0VsZW1lbnQ9ZnVuY3Rpb24odCxlLGkpe3ZhciBvO3JldHVybiBlLmhhc093blByb3BlcnR5KHQpP2VbdF0ucmVkdW5kYW50Lmxlbmd0aD4wPyhvPWVbdF0ucmVkdW5kYW50WzBdLGVbdF0ucmVkdW5kYW50LnNoaWZ0KCkpOihvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHQpLGkuYXBwZW5kQ2hpbGQobykpOihvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHQpLGVbdF09e3VzZWQ6W10scmVkdW5kYW50OltdfSxpLmFwcGVuZENoaWxkKG8pKSxlW3RdLnVzZWQucHVzaChvKSxvfSxlLmdldERPTUVsZW1lbnQ9ZnVuY3Rpb24odCxlLGksbyl7dmFyIG47cmV0dXJuIGUuaGFzT3duUHJvcGVydHkodCk/ZVt0XS5yZWR1bmRhbnQubGVuZ3RoPjA/KG49ZVt0XS5yZWR1bmRhbnRbMF0sZVt0XS5yZWR1bmRhbnQuc2hpZnQoKSk6KG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KSx2b2lkIDAhPT1vP2kuaW5zZXJ0QmVmb3JlKG4sbyk6aS5hcHBlbmRDaGlsZChuKSk6KG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KSxlW3RdPXt1c2VkOltdLHJlZHVuZGFudDpbXX0sdm9pZCAwIT09bz9pLmluc2VydEJlZm9yZShuLG8pOmkuYXBwZW5kQ2hpbGQobikpLGVbdF0udXNlZC5wdXNoKG4pLG59LGUuZHJhd1BvaW50PWZ1bmN0aW9uKHQsaSxvLG4scyxyKXt2YXIgYTtpZigiY2lyY2xlIj09by5zdHlsZT8oYT1lLmdldFNWR0VsZW1lbnQoImNpcmNsZSIsbixzKSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsImN4Iix0KSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsImN5IixpKSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsInIiLC41Km8uc2l6ZSkpOihhPWUuZ2V0U1ZHRWxlbWVudCgicmVjdCIsbixzKSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLHQtLjUqby5zaXplKSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGktLjUqby5zaXplKSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIixvLnNpemUpLGEuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixvLnNpemUpKSx2b2lkIDAhPT1vLnN0eWxlcyYmYS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHlsZSIsby5zdHlsZXMpLGEuc2V0QXR0cmlidXRlTlMobnVsbCwiY2xhc3MiLG8uY2xhc3NOYW1lKyIgdmlzLXBvaW50Iikscil7dmFyIGg9ZS5nZXRTVkdFbGVtZW50KCJ0ZXh0IixuLHMpO3IueE9mZnNldCYmKHQrPXIueE9mZnNldCksci55T2Zmc2V0JiYoaSs9ci55T2Zmc2V0KSxyLmNvbnRlbnQmJihoLnRleHRDb250ZW50PXIuY29udGVudCksci5jbGFzc05hbWUmJmguc2V0QXR0cmlidXRlTlMobnVsbCwiY2xhc3MiLHIuY2xhc3NOYW1lKyIgdmlzLWxhYmVsIiksaC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4Iix0KSxoLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGkpfXJldHVybiBhfSxlLmRyYXdCYXI9ZnVuY3Rpb24odCxpLG8sbixzLHIsYSxoKXtpZigwIT1uKXtuPDAmJihuKj0tMSxpLT1uKTt2YXIgZD1lLmdldFNWR0VsZW1lbnQoInJlY3QiLHIsYSk7ZC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4Iix0LS41Km8pLGQuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsaSksZC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIsbyksZC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLG4pLGQuc2V0QXR0cmlidXRlTlMobnVsbCwiY2xhc3MiLHMpLGgmJmQuc2V0QXR0cmlidXRlTlMobnVsbCwic3R5bGUiLGgpfX19LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1mdW5jdGlvbiBuKHQsZSl7aWYodCYmIUFycmF5LmlzQXJyYXkodCkmJihlPXQsdD1udWxsKSx0aGlzLl9vcHRpb25zPWV8fHt9LHRoaXMuX2RhdGE9e30sdGhpcy5sZW5ndGg9MCx0aGlzLl9maWVsZElkPXRoaXMuX29wdGlvbnMuZmllbGRJZHx8ImlkIix0aGlzLl90eXBlPXt9LHRoaXMuX29wdGlvbnMudHlwZSlmb3IodmFyIGk9KDAsbC5kZWZhdWx0KSh0aGlzLl9vcHRpb25zLnR5cGUpLG89MCxuPWkubGVuZ3RoO288bjtvKyspe3ZhciBzPWlbb10scj10aGlzLl9vcHRpb25zLnR5cGVbc107dGhpcy5fdHlwZVtzXT0iRGF0ZSI9PXJ8fCJJU09EYXRlIj09cnx8IkFTUERhdGUiPT1yPyJEYXRlIjpyfWlmKHRoaXMuX29wdGlvbnMuY29udmVydCl0aHJvdyBuZXcgRXJyb3IoJ09wdGlvbiAiY29udmVydCIgaXMgZGVwcmVjYXRlZC4gVXNlICJ0eXBlIiBpbnN0ZWFkLicpO3RoaXMuX3N1YnNjcmliZXJzPXt9LHQmJnRoaXMuYWRkKHQpLHRoaXMuc2V0T3B0aW9ucyhlKX12YXIgcz1pKDkwKSxyPW8ocyksYT1pKDYyKSxoPW8oYSksZD1pKDU4KSxsPW8oZCksdT1pKDEpLGM9aSg5Mik7bi5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbih0KXt0JiZ2b2lkIDAhPT10LnF1ZXVlJiYoITE9PT10LnF1ZXVlP3RoaXMuX3F1ZXVlJiYodGhpcy5fcXVldWUuZGVzdHJveSgpLGRlbGV0ZSB0aGlzLl9xdWV1ZSk6KHRoaXMuX3F1ZXVlfHwodGhpcy5fcXVldWU9Yy5leHRlbmQodGhpcyx7cmVwbGFjZTpbImFkZCIsInVwZGF0ZSIsInJlbW92ZSJdfSkpLCJvYmplY3QiPT09KDAsaC5kZWZhdWx0KSh0LnF1ZXVlKSYmdGhpcy5fcXVldWUuc2V0T3B0aW9ucyh0LnF1ZXVlKSkpfSxuLnByb3RvdHlwZS5vbj1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX3N1YnNjcmliZXJzW3RdO2l8fChpPVtdLHRoaXMuX3N1YnNjcmliZXJzW3RdPWkpLGkucHVzaCh7Y2FsbGJhY2s6ZX0pfSxuLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIkRhdGFTZXQuc3Vic2NyaWJlIGlzIGRlcHJlY2F0ZWQuIFVzZSBEYXRhU2V0Lm9uIGluc3RlYWQuIil9LG4ucHJvdG90eXBlLm9mZj1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX3N1YnNjcmliZXJzW3RdO2kmJih0aGlzLl9zdWJzY3JpYmVyc1t0XT1pLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5jYWxsYmFjayE9ZX0pKX0sbi5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIkRhdGFTZXQudW5zdWJzY3JpYmUgaXMgZGVwcmVjYXRlZC4gVXNlIERhdGFTZXQub2ZmIGluc3RlYWQuIil9LG4ucHJvdG90eXBlLl90cmlnZ2VyPWZ1bmN0aW9uKHQsZSxpKXtpZigiKiI9PXQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdHJpZ2dlciBldmVudCAqIik7dmFyIG89W107dCBpbiB0aGlzLl9zdWJzY3JpYmVycyYmKG89by5jb25jYXQodGhpcy5fc3Vic2NyaWJlcnNbdF0pKSwiKiJpbiB0aGlzLl9zdWJzY3JpYmVycyYmKG89by5jb25jYXQodGhpcy5fc3Vic2NyaWJlcnNbIioiXSkpO2Zvcih2YXIgbj0wLHM9by5sZW5ndGg7bjxzO24rKyl7dmFyIHI9b1tuXTtyLmNhbGxiYWNrJiZyLmNhbGxiYWNrKHQsZSxpfHxudWxsKX19LG4ucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0LGUpe3ZhciBpLG89W10sbj10aGlzO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBzPTAscj10Lmxlbmd0aDtzPHI7cysrKWk9bi5fYWRkSXRlbSh0W3NdKSxvLnB1c2goaSk7ZWxzZXtpZighdHx8Im9iamVjdCIhPT0odm9pZCAwPT09dD8idW5kZWZpbmVkIjooMCxoLmRlZmF1bHQpKHQpKSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZGF0YVR5cGUiKTtpPW4uX2FkZEl0ZW0odCksby5wdXNoKGkpfXJldHVybiBvLmxlbmd0aCYmdGhpcy5fdHJpZ2dlcigiYWRkIix7aXRlbXM6b30sZSksb30sbi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQsZSl7dmFyIGk9W10sbz1bXSxuPVtdLHM9W10scj10aGlzLGE9ci5fZmllbGRJZCxkPWZ1bmN0aW9uKHQpe3ZhciBlPXRbYV07aWYoci5fZGF0YVtlXSl7dmFyIGg9dS5leHRlbmQoe30sci5fZGF0YVtlXSk7ZT1yLl91cGRhdGVJdGVtKHQpLG8ucHVzaChlKSxzLnB1c2godCksbi5wdXNoKGgpfWVsc2UgZT1yLl9hZGRJdGVtKHQpLGkucHVzaChlKX07aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGw9MCxjPXQubGVuZ3RoO2w8YztsKyspdFtsXSYmIm9iamVjdCI9PT0oMCxoLmRlZmF1bHQpKHRbbF0pP2QodFtsXSk6Y29uc29sZS53YXJuKCJJZ25vcmluZyBpbnB1dCBpdGVtLCB3aGljaCBpcyBub3QgYW4gb2JqZWN0IGF0IGluZGV4ICIrbCk7ZWxzZXtpZighdHx8Im9iamVjdCIhPT0odm9pZCAwPT09dD8idW5kZWZpbmVkIjooMCxoLmRlZmF1bHQpKHQpKSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZGF0YVR5cGUiKTtkKHQpfWlmKGkubGVuZ3RoJiZ0aGlzLl90cmlnZ2VyKCJhZGQiLHtpdGVtczppfSxlKSxvLmxlbmd0aCl7dmFyIHA9e2l0ZW1zOm8sb2xkRGF0YTpuLGRhdGE6c307dGhpcy5fdHJpZ2dlcigidXBkYXRlIixwLGUpfXJldHVybiBpLmNvbmNhdChvKX0sbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlLGksbyxuPXRoaXMscz11LmdldFR5cGUoYXJndW1lbnRzWzBdKTsiU3RyaW5nIj09c3x8Ik51bWJlciI9PXM/KGU9YXJndW1lbnRzWzBdLG89YXJndW1lbnRzWzFdKToiQXJyYXkiPT1zPyhpPWFyZ3VtZW50c1swXSxvPWFyZ3VtZW50c1sxXSk6bz1hcmd1bWVudHNbMF07dmFyIHI7aWYobyYmby5yZXR1cm5UeXBlKXtyPS0xPT1bIkFycmF5IiwiT2JqZWN0Il0uaW5kZXhPZihvLnJldHVyblR5cGUpPyJBcnJheSI6by5yZXR1cm5UeXBlfWVsc2Ugcj0iQXJyYXkiO3ZhciBhLGgsZCxjLHAsZj1vJiZvLnR5cGV8fHRoaXMuX29wdGlvbnMudHlwZSxtPW8mJm8uZmlsdGVyLHY9W107aWYodm9pZCAwIT1lKShhPW4uX2dldEl0ZW0oZSxmKSkmJm0mJiFtKGEpJiYoYT1udWxsKTtlbHNlIGlmKHZvaWQgMCE9aSlmb3IoYz0wLHA9aS5sZW5ndGg7YzxwO2MrKylhPW4uX2dldEl0ZW0oaVtjXSxmKSxtJiYhbShhKXx8di5wdXNoKGEpO2Vsc2UgZm9yKGg9KDAsbC5kZWZhdWx0KSh0aGlzLl9kYXRhKSxjPTAscD1oLmxlbmd0aDtjPHA7YysrKWQ9aFtjXSxhPW4uX2dldEl0ZW0oZCxmKSxtJiYhbShhKXx8di5wdXNoKGEpO2lmKG8mJm8ub3JkZXImJnZvaWQgMD09ZSYmdGhpcy5fc29ydCh2LG8ub3JkZXIpLG8mJm8uZmllbGRzKXt2YXIgZz1vLmZpZWxkcztpZih2b2lkIDAhPWUpYT10aGlzLl9maWx0ZXJGaWVsZHMoYSxnKTtlbHNlIGZvcihjPTAscD12Lmxlbmd0aDtjPHA7YysrKXZbY109dGhpcy5fZmlsdGVyRmllbGRzKHZbY10sZyl9aWYoIk9iamVjdCI9PXIpe3ZhciB5LGI9e307Zm9yKGM9MCxwPXYubGVuZ3RoO2M8cDtjKyspeT12W2NdLGJbeS5pZF09eTtyZXR1cm4gYn1yZXR1cm4gdm9pZCAwIT1lP2E6dn0sbi5wcm90b3R5cGUuZ2V0SWRzPWZ1bmN0aW9uKHQpe3ZhciBlLGksbyxuLHMscj10aGlzLl9kYXRhLGE9dCYmdC5maWx0ZXIsaD10JiZ0Lm9yZGVyLGQ9dCYmdC50eXBlfHx0aGlzLl9vcHRpb25zLnR5cGUsdT0oMCxsLmRlZmF1bHQpKHIpLGM9W107aWYoYSlpZihoKXtmb3Iocz1bXSxlPTAsaT11Lmxlbmd0aDtlPGk7ZSsrKW89dVtlXSxuPXRoaXMuX2dldEl0ZW0obyxkKSxhKG4pJiZzLnB1c2gobik7Zm9yKHRoaXMuX3NvcnQocyxoKSxlPTAsaT1zLmxlbmd0aDtlPGk7ZSsrKWMucHVzaChzW2VdW3RoaXMuX2ZpZWxkSWRdKX1lbHNlIGZvcihlPTAsaT11Lmxlbmd0aDtlPGk7ZSsrKW89dVtlXSxuPXRoaXMuX2dldEl0ZW0obyxkKSxhKG4pJiZjLnB1c2goblt0aGlzLl9maWVsZElkXSk7ZWxzZSBpZihoKXtmb3Iocz1bXSxlPTAsaT11Lmxlbmd0aDtlPGk7ZSsrKW89dVtlXSxzLnB1c2gocltvXSk7Zm9yKHRoaXMuX3NvcnQocyxoKSxlPTAsaT1zLmxlbmd0aDtlPGk7ZSsrKWMucHVzaChzW2VdW3RoaXMuX2ZpZWxkSWRdKX1lbHNlIGZvcihlPTAsaT11Lmxlbmd0aDtlPGk7ZSsrKW89dVtlXSxuPXJbb10sYy5wdXNoKG5bdGhpcy5fZmllbGRJZF0pO3JldHVybiBjfSxuLnByb3RvdHlwZS5nZXREYXRhU2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG4ucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCxlKXt2YXIgaSxvLG4scyxyPWUmJmUuZmlsdGVyLGE9ZSYmZS50eXBlfHx0aGlzLl9vcHRpb25zLnR5cGUsaD10aGlzLl9kYXRhLGQ9KDAsbC5kZWZhdWx0KShoKTtpZihlJiZlLm9yZGVyKXt2YXIgdT10aGlzLmdldChlKTtmb3IoaT0wLG89dS5sZW5ndGg7aTxvO2krKyluPXVbaV0scz1uW3RoaXMuX2ZpZWxkSWRdLHQobixzKX1lbHNlIGZvcihpPTAsbz1kLmxlbmd0aDtpPG87aSsrKXM9ZFtpXSxuPXRoaXMuX2dldEl0ZW0ocyxhKSxyJiYhcihuKXx8dChuLHMpfSxuLnByb3RvdHlwZS5tYXA9ZnVuY3Rpb24odCxlKXt2YXIgaSxvLG4scyxyPWUmJmUuZmlsdGVyLGE9ZSYmZS50eXBlfHx0aGlzLl9vcHRpb25zLnR5cGUsaD1bXSxkPXRoaXMuX2RhdGEsdT0oMCxsLmRlZmF1bHQpKGQpO2ZvcihpPTAsbz11Lmxlbmd0aDtpPG87aSsrKW49dVtpXSxzPXRoaXMuX2dldEl0ZW0obixhKSxyJiYhcihzKXx8aC5wdXNoKHQocyxuKSk7cmV0dXJuIGUmJmUub3JkZXImJnRoaXMuX3NvcnQoaCxlLm9yZGVyKSxofSxuLnByb3RvdHlwZS5fZmlsdGVyRmllbGRzPWZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuIHQ7dmFyIGksbyxuPXt9LHM9KDAsbC5kZWZhdWx0KSh0KSxyPXMubGVuZ3RoO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGk9MDtpPHI7aSsrKW89c1tpXSwtMSE9ZS5pbmRleE9mKG8pJiYobltvXT10W29dKTtlbHNlIGZvcihpPTA7aTxyO2krKylvPXNbaV0sZS5oYXNPd25Qcm9wZXJ0eShvKSYmKG5bZVtvXV09dFtvXSk7cmV0dXJuIG59LG4ucHJvdG90eXBlLl9zb3J0PWZ1bmN0aW9uKHQsZSl7aWYodS5pc1N0cmluZyhlKSl7dmFyIGk9ZTt0LnNvcnQoZnVuY3Rpb24odCxlKXt2YXIgbz10W2ldLG49ZVtpXTtyZXR1cm4gbz5uPzE6bzxuPy0xOjB9KX1lbHNle2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIk9yZGVyIG11c3QgYmUgYSBmdW5jdGlvbiBvciBhIHN0cmluZyIpO3Quc29ydChlKX19LG4ucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0LGUpe3ZhciBpLG8sbixzLHI9W10sYT1bXSxoPVtdO2ZvcihoPUFycmF5LmlzQXJyYXkodCk/dDpbdF0saT0wLG89aC5sZW5ndGg7aTxvO2krKykocz10aGlzLl9yZW1vdmUoaFtpXSkpJiZ2b2lkIDAhPShuPXNbdGhpcy5fZmllbGRJZF0pJiYoci5wdXNoKG4pLGEucHVzaChzKSk7cmV0dXJuIHIubGVuZ3RoJiZ0aGlzLl90cmlnZ2VyKCJyZW1vdmUiLHtpdGVtczpyLG9sZERhdGE6YX0sZSkscn0sbi5wcm90b3R5cGUuX3JlbW92ZT1mdW5jdGlvbih0KXt2YXIgZSxpO3JldHVybiB1LmlzTnVtYmVyKHQpfHx1LmlzU3RyaW5nKHQpP2k9dDp0JiYib2JqZWN0Ij09PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOigwLGguZGVmYXVsdCkodCkpJiYoaT10W3RoaXMuX2ZpZWxkSWRdKSx2b2lkIDAhPT1pJiZ0aGlzLl9kYXRhW2ldPyhlPXRoaXMuX2RhdGFbaV0sZGVsZXRlIHRoaXMuX2RhdGFbaV0sdGhpcy5sZW5ndGgtLSxlKTpudWxsfSxuLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbih0KXt2YXIgZSxpLG89KDAsbC5kZWZhdWx0KSh0aGlzLl9kYXRhKSxuPVtdO2ZvcihlPTAsaT1vLmxlbmd0aDtlPGk7ZSsrKW4ucHVzaCh0aGlzLl9kYXRhW29bZV1dKTtyZXR1cm4gdGhpcy5fZGF0YT17fSx0aGlzLmxlbmd0aD0wLHRoaXMuX3RyaWdnZXIoInJlbW92ZSIse2l0ZW1zOm8sb2xkRGF0YTpufSx0KSxvfSxuLnByb3RvdHlwZS5tYXg9ZnVuY3Rpb24odCl7dmFyIGUsaSxvPXRoaXMuX2RhdGEsbj0oMCxsLmRlZmF1bHQpKG8pLHM9bnVsbCxyPW51bGw7Zm9yKGU9MCxpPW4ubGVuZ3RoO2U8aTtlKyspe3ZhciBhPW5bZV0saD1vW2FdLGQ9aFt0XTtudWxsIT1kJiYoIXN8fGQ+cikmJihzPWgscj1kKX1yZXR1cm4gc30sbi5wcm90b3R5cGUubWluPWZ1bmN0aW9uKHQpe3ZhciBlLGksbz10aGlzLl9kYXRhLG49KDAsbC5kZWZhdWx0KShvKSxzPW51bGwscj1udWxsO2ZvcihlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKXt2YXIgYT1uW2VdLGg9b1thXSxkPWhbdF07bnVsbCE9ZCYmKCFzfHxkPHIpJiYocz1oLHI9ZCl9cmV0dXJuIHN9LG4ucHJvdG90eXBlLmRpc3RpbmN0PWZ1bmN0aW9uKHQpe3ZhciBlLGksbyxuPXRoaXMuX2RhdGEscz0oMCxsLmRlZmF1bHQpKG4pLHI9W10sYT10aGlzLl9vcHRpb25zLnR5cGUmJnRoaXMuX29wdGlvbnMudHlwZVt0XXx8bnVsbCxoPTA7Zm9yKGU9MCxvPXMubGVuZ3RoO2U8bztlKyspe3ZhciBkPXNbZV0sYz1uW2RdLHA9Y1t0XSxmPSExO2ZvcihpPTA7aTxoO2krKylpZihyW2ldPT1wKXtmPSEwO2JyZWFrfWZ8fHZvaWQgMD09PXB8fChyW2hdPXAsaCsrKX1pZihhKWZvcihlPTAsbz1yLmxlbmd0aDtlPG87ZSsrKXJbZV09dS5jb252ZXJ0KHJbZV0sYSk7cmV0dXJuIHJ9LG4ucHJvdG90eXBlLl9hZGRJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlPXRbdGhpcy5fZmllbGRJZF07aWYodm9pZCAwIT1lKXtpZih0aGlzLl9kYXRhW2VdKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGFkZCBpdGVtOiBpdGVtIHdpdGggaWQgIitlKyIgYWxyZWFkeSBleGlzdHMiKX1lbHNlIGU9dS5yYW5kb21VVUlEKCksdFt0aGlzLl9maWVsZElkXT1lO3ZhciBpLG8sbj17fSxzPSgwLGwuZGVmYXVsdCkodCk7Zm9yKGk9MCxvPXMubGVuZ3RoO2k8bztpKyspe3ZhciByPXNbaV0sYT10aGlzLl90eXBlW3JdO25bcl09dS5jb252ZXJ0KHRbcl0sYSl9cmV0dXJuIHRoaXMuX2RhdGFbZV09bix0aGlzLmxlbmd0aCsrLGV9LG4ucHJvdG90eXBlLl9nZXRJdGVtPWZ1bmN0aW9uKHQsZSl7dmFyIGksbyxuLHMscj10aGlzLl9kYXRhW3RdO2lmKCFyKXJldHVybiBudWxsO3ZhciBhPXt9LGg9KDAsbC5kZWZhdWx0KShyKTtpZihlKWZvcihuPTAscz1oLmxlbmd0aDtuPHM7bisrKWk9aFtuXSxvPXJbaV0sYVtpXT11LmNvbnZlcnQobyxlW2ldKTtlbHNlIGZvcihuPTAscz1oLmxlbmd0aDtuPHM7bisrKWk9aFtuXSxvPXJbaV0sYVtpXT1vO3JldHVybiBhW3RoaXMuX2ZpZWxkSWRdfHwoYVt0aGlzLl9maWVsZElkXT1yLmlkKSxhfSxuLnByb3RvdHlwZS5fdXBkYXRlSXRlbT1mdW5jdGlvbih0KXt2YXIgZT10W3RoaXMuX2ZpZWxkSWRdO2lmKHZvaWQgMD09ZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCB1cGRhdGUgaXRlbTogaXRlbSBoYXMgbm8gaWQgKGl0ZW06ICIrKDAsci5kZWZhdWx0KSh0KSsiKSIpO3ZhciBpPXRoaXMuX2RhdGFbZV07aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXBkYXRlIGl0ZW06IG5vIGl0ZW0gd2l0aCBpZCAiK2UrIiBmb3VuZCIpO2Zvcih2YXIgbz0oMCxsLmRlZmF1bHQpKHQpLG49MCxzPW8ubGVuZ3RoO248cztuKyspe3ZhciBhPW9bbl0saD10aGlzLl90eXBlW2FdO2lbYV09dS5jb252ZXJ0KHRbYV0saCl9cmV0dXJuIGV9LHQuZXhwb3J0cz1ufSxmdW5jdGlvbih0LGUsaSl7dC5leHBvcnRzPXtkZWZhdWx0OmkoOTEpLF9fZXNNb2R1bGU6ITB9fSxmdW5jdGlvbih0LGUsaSl7dmFyIG89aSgxNyksbj1vLkpTT058fChvLkpTT049e3N0cmluZ2lmeTpKU09OLnN0cmluZ2lmeX0pO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbi5zdHJpbmdpZnkuYXBwbHkobixhcmd1bWVudHMpfX0sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKHQpe3RoaXMuZGVsYXk9bnVsbCx0aGlzLm1heD0xLzAsdGhpcy5fcXVldWU9W10sdGhpcy5fdGltZW91dD1udWxsLHRoaXMuX2V4dGVuZGVkPW51bGwsdGhpcy5zZXRPcHRpb25zKHQpfWkucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7dCYmdm9pZCAwIT09dC5kZWxheSYmKHRoaXMuZGVsYXk9dC5kZWxheSksdCYmdm9pZCAwIT09dC5tYXgmJih0aGlzLm1heD10Lm1heCksdGhpcy5fZmx1c2hJZk5lZWRlZCgpfSxpLmV4dGVuZD1mdW5jdGlvbih0LGUpe3ZhciBvPW5ldyBpKGUpO2lmKHZvaWQgMCE9PXQuZmx1c2gpdGhyb3cgbmV3IEVycm9yKCJUYXJnZXQgb2JqZWN0IGFscmVhZHkgaGFzIGEgcHJvcGVydHkgZmx1c2giKTt0LmZsdXNoPWZ1bmN0aW9uKCl7by5mbHVzaCgpfTt2YXIgbj1be25hbWU6ImZsdXNoIixvcmlnaW5hbDp2b2lkIDB9XTtpZihlJiZlLnJlcGxhY2UpZm9yKHZhciBzPTA7czxlLnJlcGxhY2UubGVuZ3RoO3MrKyl7dmFyIHI9ZS5yZXBsYWNlW3NdO24ucHVzaCh7bmFtZTpyLG9yaWdpbmFsOnRbcl19KSxvLnJlcGxhY2UodCxyKX1yZXR1cm4gby5fZXh0ZW5kZWQ9e29iamVjdDp0LG1ldGhvZHM6bn0sb30saS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe2lmKHRoaXMuZmx1c2goKSx0aGlzLl9leHRlbmRlZCl7Zm9yKHZhciB0PXRoaXMuX2V4dGVuZGVkLm9iamVjdCxlPXRoaXMuX2V4dGVuZGVkLm1ldGhvZHMsaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1lW2ldO28ub3JpZ2luYWw/dFtvLm5hbWVdPW8ub3JpZ2luYWw6ZGVsZXRlIHRbby5uYW1lXX10aGlzLl9leHRlbmRlZD1udWxsfX0saS5wcm90b3R5cGUucmVwbGFjZT1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsbz10W2VdO2lmKCFvKXRocm93IG5ldyBFcnJvcigiTWV0aG9kICIrZSsiIHVuZGVmaW5lZCIpO3RbZV09ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07aS5xdWV1ZSh7YXJnczp0LGZuOm8sY29udGV4dDp0aGlzfSl9fSxpLnByb3RvdHlwZS5xdWV1ZT1mdW5jdGlvbih0KXsiZnVuY3Rpb24iPT10eXBlb2YgdD90aGlzLl9xdWV1ZS5wdXNoKHtmbjp0fSk6dGhpcy5fcXVldWUucHVzaCh0KSx0aGlzLl9mbHVzaElmTmVlZGVkKCl9LGkucHJvdG90eXBlLl9mbHVzaElmTmVlZGVkPWZ1bmN0aW9uKCl7aWYodGhpcy5fcXVldWUubGVuZ3RoPnRoaXMubWF4JiZ0aGlzLmZsdXNoKCksY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpLHRoaXMucXVldWUubGVuZ3RoPjAmJiJudW1iZXIiPT10eXBlb2YgdGhpcy5kZWxheSl7dmFyIHQ9dGhpczt0aGlzLl90aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LmZsdXNoKCl9LHRoaXMuZGVsYXkpfX0saS5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXtmb3IoO3RoaXMuX3F1ZXVlLmxlbmd0aD4wOyl7dmFyIHQ9dGhpcy5fcXVldWUuc2hpZnQoKTt0LmZuLmFwcGx5KHQuY29udGV4dHx8dC5mbix0LmFyZ3N8fFtdKX19LHQuZXhwb3J0cz1pfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUpe3RoaXMuX2RhdGE9bnVsbCx0aGlzLl9pZHM9e30sdGhpcy5sZW5ndGg9MCx0aGlzLl9vcHRpb25zPWV8fHt9LHRoaXMuX2ZpZWxkSWQ9ImlkIix0aGlzLl9zdWJzY3JpYmVycz17fTt2YXIgaT10aGlzO3RoaXMubGlzdGVuZXI9ZnVuY3Rpb24oKXtpLl9vbkV2ZW50LmFwcGx5KGksYXJndW1lbnRzKX0sdGhpcy5zZXREYXRhKHQpfXZhciBuPWkoNTgpLHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fShuKSxyPWkoMSksYT1pKDg5KTtvLnByb3RvdHlwZS5zZXREYXRhPWZ1bmN0aW9uKHQpe3ZhciBlLGksbyxuLHM7aWYodGhpcy5fZGF0YSl7Zm9yKHRoaXMuX2RhdGEub2ZmJiZ0aGlzLl9kYXRhLm9mZigiKiIsdGhpcy5saXN0ZW5lciksZT10aGlzLl9kYXRhLmdldElkcyh7ZmlsdGVyOnRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMuZmlsdGVyfSkscz1bXSxvPTAsbj1lLmxlbmd0aDtvPG47bysrKXMucHVzaCh0aGlzLl9kYXRhLl9kYXRhW2Vbb11dKTt0aGlzLl9pZHM9e30sdGhpcy5sZW5ndGg9MCx0aGlzLl90cmlnZ2VyKCJyZW1vdmUiLHtpdGVtczplLG9sZERhdGE6c30pfWlmKHRoaXMuX2RhdGE9dCx0aGlzLl9kYXRhKXtmb3IodGhpcy5fZmllbGRJZD10aGlzLl9vcHRpb25zLmZpZWxkSWR8fHRoaXMuX2RhdGEmJnRoaXMuX2RhdGEub3B0aW9ucyYmdGhpcy5fZGF0YS5vcHRpb25zLmZpZWxkSWR8fCJpZCIsZT10aGlzLl9kYXRhLmdldElkcyh7ZmlsdGVyOnRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMuZmlsdGVyfSksbz0wLG49ZS5sZW5ndGg7bzxuO28rKylpPWVbb10sdGhpcy5faWRzW2ldPSEwO3RoaXMubGVuZ3RoPWUubGVuZ3RoLA0KdGhpcy5fdHJpZ2dlcigiYWRkIix7aXRlbXM6ZX0pLHRoaXMuX2RhdGEub24mJnRoaXMuX2RhdGEub24oIioiLHRoaXMubGlzdGVuZXIpfX0sby5wcm90b3R5cGUucmVmcmVzaD1mdW5jdGlvbigpe3ZhciB0LGUsaSxvPXRoaXMuX2RhdGEuZ2V0SWRzKHtmaWx0ZXI6dGhpcy5fb3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5maWx0ZXJ9KSxuPSgwLHMuZGVmYXVsdCkodGhpcy5faWRzKSxyPXt9LGE9W10saD1bXSxkPVtdO2ZvcihlPTAsaT1vLmxlbmd0aDtlPGk7ZSsrKXQ9b1tlXSxyW3RdPSEwLHRoaXMuX2lkc1t0XXx8KGEucHVzaCh0KSx0aGlzLl9pZHNbdF09ITApO2ZvcihlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKXQ9bltlXSxyW3RdfHwoaC5wdXNoKHQpLGQucHVzaCh0aGlzLl9kYXRhLl9kYXRhW3RdKSxkZWxldGUgdGhpcy5faWRzW3RdKTt0aGlzLmxlbmd0aCs9YS5sZW5ndGgtaC5sZW5ndGgsYS5sZW5ndGgmJnRoaXMuX3RyaWdnZXIoImFkZCIse2l0ZW1zOmF9KSxoLmxlbmd0aCYmdGhpcy5fdHJpZ2dlcigicmVtb3ZlIix7aXRlbXM6aCxvbGREYXRhOmR9KX0sby5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlLGksbyxuPXRoaXMscz1yLmdldFR5cGUoYXJndW1lbnRzWzBdKTsiU3RyaW5nIj09c3x8Ik51bWJlciI9PXN8fCJBcnJheSI9PXM/KGU9YXJndW1lbnRzWzBdLGk9YXJndW1lbnRzWzFdLG89YXJndW1lbnRzWzJdKTooaT1hcmd1bWVudHNbMF0sbz1hcmd1bWVudHNbMV0pO3ZhciBhPXIuZXh0ZW5kKHt9LHRoaXMuX29wdGlvbnMsaSk7dGhpcy5fb3B0aW9ucy5maWx0ZXImJmkmJmkuZmlsdGVyJiYoYS5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG4uX29wdGlvbnMuZmlsdGVyKHQpJiZpLmZpbHRlcih0KX0pO3ZhciBoPVtdO3JldHVybiB2b2lkIDAhPWUmJmgucHVzaChlKSxoLnB1c2goYSksaC5wdXNoKG8pLHRoaXMuX2RhdGEmJnRoaXMuX2RhdGEuZ2V0LmFwcGx5KHRoaXMuX2RhdGEsaCl9LG8ucHJvdG90eXBlLmdldElkcz1mdW5jdGlvbih0KXt2YXIgZTtpZih0aGlzLl9kYXRhKXt2YXIgaSxvPXRoaXMuX29wdGlvbnMuZmlsdGVyO2k9dCYmdC5maWx0ZXI/bz9mdW5jdGlvbihlKXtyZXR1cm4gbyhlKSYmdC5maWx0ZXIoZSl9OnQuZmlsdGVyOm8sZT10aGlzLl9kYXRhLmdldElkcyh7ZmlsdGVyOmksb3JkZXI6dCYmdC5vcmRlcn0pfWVsc2UgZT1bXTtyZXR1cm4gZX0sby5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKHQsZSl7dmFyIGk9W107aWYodGhpcy5fZGF0YSl7dmFyIG8sbj10aGlzLl9vcHRpb25zLmZpbHRlcjtvPWUmJmUuZmlsdGVyP24/ZnVuY3Rpb24odCl7cmV0dXJuIG4odCkmJmUuZmlsdGVyKHQpfTplLmZpbHRlcjpuLGk9dGhpcy5fZGF0YS5tYXAodCx7ZmlsdGVyOm8sb3JkZXI6ZSYmZS5vcmRlcn0pfWVsc2UgaT1bXTtyZXR1cm4gaX0sby5wcm90b3R5cGUuZ2V0RGF0YVNldD1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzO3QgaW5zdGFuY2VvZiBvOyl0PXQuX2RhdGE7cmV0dXJuIHR8fG51bGx9LG8ucHJvdG90eXBlLl9vbkV2ZW50PWZ1bmN0aW9uKHQsZSxpKXt2YXIgbyxuLHMscixhPWUmJmUuaXRlbXMsaD1bXSxkPVtdLGw9W10sdT1bXSxjPVtdLHA9W107aWYoYSYmdGhpcy5fZGF0YSl7c3dpdGNoKHQpe2Nhc2UiYWRkIjpmb3Iobz0wLG49YS5sZW5ndGg7bzxuO28rKylzPWFbb10sKHI9dGhpcy5nZXQocykpJiYodGhpcy5faWRzW3NdPSEwLGgucHVzaChzKSk7YnJlYWs7Y2FzZSJ1cGRhdGUiOmZvcihvPTAsbj1hLmxlbmd0aDtvPG47bysrKXM9YVtvXSxyPXRoaXMuZ2V0KHMpLHI/dGhpcy5faWRzW3NdPyhkLnB1c2gocyksYy5wdXNoKGUuZGF0YVtvXSksdS5wdXNoKGUub2xkRGF0YVtvXSkpOih0aGlzLl9pZHNbc109ITAsaC5wdXNoKHMpKTp0aGlzLl9pZHNbc10mJihkZWxldGUgdGhpcy5faWRzW3NdLGwucHVzaChzKSxwLnB1c2goZS5vbGREYXRhW29dKSk7YnJlYWs7Y2FzZSJyZW1vdmUiOmZvcihvPTAsbj1hLmxlbmd0aDtvPG47bysrKXM9YVtvXSx0aGlzLl9pZHNbc10mJihkZWxldGUgdGhpcy5faWRzW3NdLGwucHVzaChzKSxwLnB1c2goZS5vbGREYXRhW29dKSl9dGhpcy5sZW5ndGgrPWgubGVuZ3RoLWwubGVuZ3RoLGgubGVuZ3RoJiZ0aGlzLl90cmlnZ2VyKCJhZGQiLHtpdGVtczpofSxpKSxkLmxlbmd0aCYmdGhpcy5fdHJpZ2dlcigidXBkYXRlIix7aXRlbXM6ZCxvbGREYXRhOnUsZGF0YTpjfSxpKSxsLmxlbmd0aCYmdGhpcy5fdHJpZ2dlcigicmVtb3ZlIix7aXRlbXM6bCxvbGREYXRhOnB9LGkpfX0sby5wcm90b3R5cGUub249YS5wcm90b3R5cGUub24sby5wcm90b3R5cGUub2ZmPWEucHJvdG90eXBlLm9mZixvLnByb3RvdHlwZS5fdHJpZ2dlcj1hLnByb3RvdHlwZS5fdHJpZ2dlcixvLnByb3RvdHlwZS5zdWJzY3JpYmU9by5wcm90b3R5cGUub24sby5wcm90b3R5cGUudW5zdWJzY3JpYmU9by5wcm90b3R5cGUub2ZmLHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUsaSl7aWYoISh0aGlzIGluc3RhbmNlb2YgbykpdGhyb3cgbmV3IFN5bnRheEVycm9yKCJDb25zdHJ1Y3RvciBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBuZXcgb3BlcmF0b3IiKTt0aGlzLmNvbnRhaW5lckVsZW1lbnQ9dCx0aGlzLmRhdGFHcm91cD1uZXcgdix0aGlzLmRhdGFQb2ludHM9bnVsbCx0aGlzLmNyZWF0ZSgpLG0uc2V0RGVmYXVsdHMoZyx0aGlzKSx0aGlzLmNvbFg9dm9pZCAwLHRoaXMuY29sWT12b2lkIDAsdGhpcy5jb2xaPXZvaWQgMCx0aGlzLmNvbFZhbHVlPXZvaWQgMCx0aGlzLmNvbEZpbHRlcj12b2lkIDAsdGhpcy5zZXRPcHRpb25zKGkpLGUmJnRoaXMuc2V0RGF0YShlKX1mdW5jdGlvbiBuKHQpe3JldHVybiJjbGllbnRYImluIHQ/dC5jbGllbnRYOnQudGFyZ2V0VG91Y2hlc1swXSYmdC50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFh8fDB9ZnVuY3Rpb24gcyh0KXtyZXR1cm4iY2xpZW50WSJpbiB0P3QuY2xpZW50WTp0LnRhcmdldFRvdWNoZXNbMF0mJnQudGFyZ2V0VG91Y2hlc1swXS5jbGllbnRZfHwwfXZhciByPWkoOTUpLGE9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fShyKSxoPWkoOTkpLGQ9KGkoODkpLGkoOTMpLGkoMSkpLGw9aSgxMDApLHU9aSgxMDEpLGM9KGkoMTAyKSxpKDEwNykpLHA9aSgxMDgpLGY9aSgxMDkpLG09KGkoMTEwKSxpKDExMSkpLHY9aSgxMTIpO28uU1RZTEU9bS5TVFlMRTt2YXIgZz17d2lkdGg6IjQwMHB4IixoZWlnaHQ6IjQwMHB4IixmaWx0ZXJMYWJlbDoidGltZSIsbGVnZW5kTGFiZWw6InZhbHVlIix4TGFiZWw6IngiLHlMYWJlbDoieSIsekxhYmVsOiJ6Iix4VmFsdWVMYWJlbDpmdW5jdGlvbih0KXtyZXR1cm4gdH0seVZhbHVlTGFiZWw6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHpWYWx1ZUxhYmVsOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxzaG93WEF4aXM6ITAsc2hvd1lBeGlzOiEwLHNob3daQXhpczohMCxzaG93R3JpZDohMCxzaG93UGVyc3BlY3RpdmU6ITAsc2hvd1NoYWRvdzohMSxrZWVwQXNwZWN0UmF0aW86ITAsdmVydGljYWxSYXRpbzouNSxkb3RTaXplUmF0aW86LjAyLGRvdFNpemVNaW5GcmFjdGlvbjouNSxkb3RTaXplTWF4RnJhY3Rpb246Mi41LHNob3dBbmltYXRpb25Db250cm9sczp2b2lkIDAsYW5pbWF0aW9uSW50ZXJ2YWw6MWUzLGFuaW1hdGlvblByZWxvYWQ6ITEsYW5pbWF0aW9uQXV0b1N0YXJ0OnZvaWQgMCxheGlzQ29sb3I6IiM0RDRENEQiLGdyaWRDb2xvcjoiI0QzRDNEMyIseENlbnRlcjoiNTUlIix5Q2VudGVyOiI1MCUiLHN0eWxlOm8uU1RZTEUuRE9ULHRvb2x0aXA6ITEsdG9vbHRpcFN0eWxlOntjb250ZW50OntwYWRkaW5nOiIxMHB4Iixib3JkZXI6IjFweCBzb2xpZCAjNGQ0ZDRkIixjb2xvcjoiIzFhMWExYSIsYmFja2dyb3VuZDoicmdiYSgyNTUsMjU1LDI1NSwwLjcpIixib3JkZXJSYWRpdXM6IjJweCIsYm94U2hhZG93OiI1cHggNXB4IDEwcHggcmdiYSgxMjgsMTI4LDEyOCwwLjUpIn0sbGluZTp7aGVpZ2h0OiI0MHB4Iix3aWR0aDoiMCIsYm9yZGVyTGVmdDoiMXB4IHNvbGlkICM0ZDRkNGQifSxkb3Q6e2hlaWdodDoiMCIsd2lkdGg6IjAiLGJvcmRlcjoiNXB4IHNvbGlkICM0ZDRkNGQiLGJvcmRlclJhZGl1czoiNXB4In19LHNob3dMZWdlbmQ6dm9pZCAwLGJhY2tncm91bmRDb2xvcjp2b2lkIDAsZGF0YUNvbG9yOntmaWxsOiIjN0RDMUZGIixzdHJva2U6IiMzMjY3RDIiLHN0cm9rZVdpZHRoOjF9LGNhbWVyYVBvc2l0aW9uOntob3Jpem9udGFsOjEsdmVydGljYWw6LjUsZGlzdGFuY2U6MS43fSx4QmFyV2lkdGg6dm9pZCAwLHlCYXJXaWR0aDp2b2lkIDAsdmFsdWVNaW46dm9pZCAwLHZhbHVlTWF4OnZvaWQgMCx4TWluOnZvaWQgMCx4TWF4OnZvaWQgMCx4U3RlcDp2b2lkIDAseU1pbjp2b2lkIDAseU1heDp2b2lkIDAseVN0ZXA6dm9pZCAwLHpNaW46dm9pZCAwLHpNYXg6dm9pZCAwLHpTdGVwOnZvaWQgMH07aChvLnByb3RvdHlwZSksby5wcm90b3R5cGUuX3NldFNjYWxlPWZ1bmN0aW9uKCl7dGhpcy5zY2FsZT1uZXcgbCgxL3RoaXMueFJhbmdlLnJhbmdlKCksMS90aGlzLnlSYW5nZS5yYW5nZSgpLDEvdGhpcy56UmFuZ2UucmFuZ2UoKSksdGhpcy5rZWVwQXNwZWN0UmF0aW8mJih0aGlzLnNjYWxlLng8dGhpcy5zY2FsZS55P3RoaXMuc2NhbGUueT10aGlzLnNjYWxlLng6dGhpcy5zY2FsZS54PXRoaXMuc2NhbGUueSksdGhpcy5zY2FsZS56Kj10aGlzLnZlcnRpY2FsUmF0aW8sdm9pZCAwIT09dGhpcy52YWx1ZVJhbmdlJiYodGhpcy5zY2FsZS52YWx1ZT0xL3RoaXMudmFsdWVSYW5nZS5yYW5nZSgpKTt2YXIgdD10aGlzLnhSYW5nZS5jZW50ZXIoKSp0aGlzLnNjYWxlLngsZT10aGlzLnlSYW5nZS5jZW50ZXIoKSp0aGlzLnNjYWxlLnksaT10aGlzLnpSYW5nZS5jZW50ZXIoKSp0aGlzLnNjYWxlLno7dGhpcy5jYW1lcmEuc2V0QXJtTG9jYXRpb24odCxlLGkpfSxvLnByb3RvdHlwZS5fY29udmVydDNEdG8yRD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9jb252ZXJ0UG9pbnRUb1RyYW5zbGF0aW9uKHQpO3JldHVybiB0aGlzLl9jb252ZXJ0VHJhbnNsYXRpb25Ub1NjcmVlbihlKX0sby5wcm90b3R5cGUuX2NvbnZlcnRQb2ludFRvVHJhbnNsYXRpb249ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jYW1lcmEuZ2V0Q2FtZXJhTG9jYXRpb24oKSxpPXRoaXMuY2FtZXJhLmdldENhbWVyYVJvdGF0aW9uKCksbz10LngqdGhpcy5zY2FsZS54LG49dC55KnRoaXMuc2NhbGUueSxzPXQueip0aGlzLnNjYWxlLnoscj1lLngsYT1lLnksaD1lLnosZD1NYXRoLnNpbihpLngpLHU9TWF0aC5jb3MoaS54KSxjPU1hdGguc2luKGkueSkscD1NYXRoLmNvcyhpLnkpLGY9TWF0aC5zaW4oaS56KSxtPU1hdGguY29zKGkueik7cmV0dXJuIG5ldyBsKHAqKGYqKG4tYSkrbSooby1yKSktYyoocy1oKSxkKihwKihzLWgpK2MqKGYqKG4tYSkrbSooby1yKSkpK3UqKG0qKG4tYSktZiooby1yKSksdSoocCoocy1oKStjKihmKihuLWEpK20qKG8tcikpKS1kKihtKihuLWEpLWYqKG8tcikpKX0sby5wcm90b3R5cGUuX2NvbnZlcnRUcmFuc2xhdGlvblRvU2NyZWVuPWZ1bmN0aW9uKHQpe3ZhciBlLGksbz10aGlzLmV5ZS54LG49dGhpcy5leWUueSxzPXRoaXMuZXllLnoscj10LngsYT10LnksaD10Lno7cmV0dXJuIHRoaXMuc2hvd1BlcnNwZWN0aXZlPyhlPXMvaCooci1vKSxpPXMvaCooYS1uKSk6KGU9ciooLXMvdGhpcy5jYW1lcmEuZ2V0QXJtTGVuZ3RoKCkpLGk9YSooLXMvdGhpcy5jYW1lcmEuZ2V0QXJtTGVuZ3RoKCkpKSxuZXcgdSh0aGlzLmN1cnJlbnRYQ2VudGVyK2UqdGhpcy5mcmFtZS5jYW52YXMuY2xpZW50V2lkdGgsdGhpcy5jdXJyZW50WUNlbnRlci1pKnRoaXMuZnJhbWUuY2FudmFzLmNsaWVudFdpZHRoKX0sby5wcm90b3R5cGUuX2NhbGNUcmFuc2xhdGlvbnM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBpPXRbZV07aS50cmFucz10aGlzLl9jb252ZXJ0UG9pbnRUb1RyYW5zbGF0aW9uKGkucG9pbnQpLGkuc2NyZWVuPXRoaXMuX2NvbnZlcnRUcmFuc2xhdGlvblRvU2NyZWVuKGkudHJhbnMpO3ZhciBvPXRoaXMuX2NvbnZlcnRQb2ludFRvVHJhbnNsYXRpb24oaS5ib3R0b20pO2kuZGlzdD10aGlzLnNob3dQZXJzcGVjdGl2ZT9vLmxlbmd0aCgpOi1vLnp9dmFyIG49ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5kaXN0LXQuZGlzdH07dC5zb3J0KG4pfSxvLnByb3RvdHlwZS5fY2hlY2tWYWx1ZUZpZWxkPWZ1bmN0aW9uKHQpe2lmKHRoaXMuc3R5bGU9PT1vLlNUWUxFLkJBUkNPTE9SfHx0aGlzLnN0eWxlPT09by5TVFlMRS5CQVJTSVpFfHx0aGlzLnN0eWxlPT09by5TVFlMRS5ET1RDT0xPUnx8dGhpcy5zdHlsZT09PW8uU1RZTEUuRE9UU0laRSl7aWYodm9pZCAwPT09dGhpcy5jb2xWYWx1ZSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGRhdGEgdG8gaGF2ZSAgZmllbGQgJ3N0eWxlJyAgZm9yIGdyYXBoIHN0eWxlICciK3RoaXMuc3R5bGUrIiciKTtpZih2b2lkIDA9PT10WzBdW3RoaXMuY29sVmFsdWVdKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgZGF0YSB0byBoYXZlICBmaWVsZCAnIit0aGlzLmNvbFZhbHVlKyInICBmb3IgZ3JhcGggc3R5bGUgJyIrdGhpcy5zdHlsZSsiJyIpfX0sby5wcm90b3R5cGUuX2luaXRpYWxpemVEYXRhPWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5kYXRhR3JvdXAuaW5pdGlhbGl6ZURhdGEodGhpcyx0LGUpLHRoaXMueFJhbmdlPXRoaXMuZGF0YUdyb3VwLnhSYW5nZSx0aGlzLnlSYW5nZT10aGlzLmRhdGFHcm91cC55UmFuZ2UsdGhpcy56UmFuZ2U9dGhpcy5kYXRhR3JvdXAuelJhbmdlLHRoaXMudmFsdWVSYW5nZT10aGlzLmRhdGFHcm91cC52YWx1ZVJhbmdlLHRoaXMueFN0ZXA9dGhpcy5kYXRhR3JvdXAueFN0ZXAsdGhpcy55U3RlcD10aGlzLmRhdGFHcm91cC55U3RlcCx0aGlzLnpTdGVwPXRoaXMuZGF0YUdyb3VwLnpTdGVwLHRoaXMueEJhcldpZHRoPXRoaXMuZGF0YUdyb3VwLnhCYXJXaWR0aCx0aGlzLnlCYXJXaWR0aD10aGlzLmRhdGFHcm91cC55QmFyV2lkdGgsdGhpcy5jb2xYPXRoaXMuZGF0YUdyb3VwLmNvbFgsdGhpcy5jb2xZPXRoaXMuZGF0YUdyb3VwLmNvbFksdGhpcy5jb2xaPXRoaXMuZGF0YUdyb3VwLmNvbFosdGhpcy5jb2xWYWx1ZT10aGlzLmRhdGFHcm91cC5jb2xWYWx1ZSx0aGlzLmRhdGFHcm91cC5nZXREYXRhVGFibGUoKVswXS5oYXNPd25Qcm9wZXJ0eSgiZmlsdGVyIikpe3RoaXMuY29sRmlsdGVyPSJmaWx0ZXIiO3ZhciBpPXRoaXM7dm9pZCAwPT09dGhpcy5kYXRhRmlsdGVyJiYodGhpcy5kYXRhRmlsdGVyPW5ldyBjKHRoaXMuZGF0YUdyb3VwLHRoaXMuY29sRmlsdGVyLHRoaXMpLHRoaXMuZGF0YUZpbHRlci5zZXRPbkxvYWRDYWxsYmFjayhmdW5jdGlvbigpe2kucmVkcmF3KCl9KSl9dGhpcy5fc2V0U2NhbGUoKX0sby5wcm90b3R5cGUuZ2V0RGF0YVBvaW50cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10saT0wO2k8dC5sZW5ndGg7aSsrKXt2YXIgbz1uZXcgbDtvLng9dFtpXVt0aGlzLmNvbFhdfHwwLG8ueT10W2ldW3RoaXMuY29sWV18fDAsby56PXRbaV1bdGhpcy5jb2xaXXx8MCxvLmRhdGE9dFtpXSx2b2lkIDAhPT10aGlzLmNvbFZhbHVlJiYoby52YWx1ZT10W2ldW3RoaXMuY29sVmFsdWVdfHwwKTt2YXIgbj17fTtuLnBvaW50PW8sbi5ib3R0b209bmV3IGwoby54LG8ueSx0aGlzLnpSYW5nZS5taW4pLG4udHJhbnM9dm9pZCAwLG4uc2NyZWVuPXZvaWQgMCxlLnB1c2gobil9cmV0dXJuIGV9LG8ucHJvdG90eXBlLl9nZXREYXRhUG9pbnRzPWZ1bmN0aW9uKHQpe3ZhciBlLGksbixzLHI9W107aWYodGhpcy5zdHlsZT09PW8uU1RZTEUuR1JJRHx8dGhpcy5zdHlsZT09PW8uU1RZTEUuU1VSRkFDRSl7dmFyIGE9dGhpcy5kYXRhR3JvdXAuZ2V0RGlzdGluY3RWYWx1ZXModGhpcy5jb2xYLHQpLGg9dGhpcy5kYXRhR3JvdXAuZ2V0RGlzdGluY3RWYWx1ZXModGhpcy5jb2xZLHQpO3I9dGhpcy5nZXREYXRhUG9pbnRzKHQpO3ZhciBkPVtdO2ZvcihuPTA7bjxyLmxlbmd0aDtuKyspe3M9cltuXTt2YXIgbD1hLmluZGV4T2Yocy5wb2ludC54KSx1PWguaW5kZXhPZihzLnBvaW50LnkpO3ZvaWQgMD09PWRbbF0mJihkW2xdPVtdKSxkW2xdW3VdPXN9Zm9yKGU9MDtlPGQubGVuZ3RoO2UrKylmb3IoaT0wO2k8ZFtlXS5sZW5ndGg7aSsrKWRbZV1baV0mJihkW2VdW2ldLnBvaW50UmlnaHQ9ZTxkLmxlbmd0aC0xP2RbZSsxXVtpXTp2b2lkIDAsZFtlXVtpXS5wb2ludFRvcD1pPGRbZV0ubGVuZ3RoLTE/ZFtlXVtpKzFdOnZvaWQgMCxkW2VdW2ldLnBvaW50Q3Jvc3M9ZTxkLmxlbmd0aC0xJiZpPGRbZV0ubGVuZ3RoLTE/ZFtlKzFdW2krMV06dm9pZCAwKX1lbHNlIGlmKHRoaXMuX2NoZWNrVmFsdWVGaWVsZCh0KSxyPXRoaXMuZ2V0RGF0YVBvaW50cyh0KSx0aGlzLnN0eWxlPT09by5TVFlMRS5MSU5FKWZvcihuPTA7bjxyLmxlbmd0aDtuKyspbj4wJiYocltuLTFdLnBvaW50TmV4dD1yW25dKTtyZXR1cm4gcn0sby5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmNvbnRhaW5lckVsZW1lbnQuaGFzQ2hpbGROb2RlcygpOyl0aGlzLmNvbnRhaW5lckVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5jb250YWluZXJFbGVtZW50LmZpcnN0Q2hpbGQpO3RoaXMuZnJhbWU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5mcmFtZS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLHRoaXMuZnJhbWUuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsdGhpcy5mcmFtZS5jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksdGhpcy5mcmFtZS5jYW52YXMuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIix0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMuZnJhbWUuY2FudmFzKTt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTt0LnN0eWxlLmNvbG9yPSJyZWQiLHQuc3R5bGUuZm9udFdlaWdodD0iYm9sZCIsdC5zdHlsZS5wYWRkaW5nPSIxMHB4Iix0LmlubmVySFRNTD0iRXJyb3I6IHlvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IEhUTUwgY2FudmFzIix0aGlzLmZyYW1lLmNhbnZhcy5hcHBlbmRDaGlsZCh0KSx0aGlzLmZyYW1lLmZpbHRlcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmZyYW1lLmZpbHRlci5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHRoaXMuZnJhbWUuZmlsdGVyLnN0eWxlLmJvdHRvbT0iMHB4Iix0aGlzLmZyYW1lLmZpbHRlci5zdHlsZS5sZWZ0PSIwcHgiLHRoaXMuZnJhbWUuZmlsdGVyLnN0eWxlLndpZHRoPSIxMDAlIix0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMuZnJhbWUuZmlsdGVyKTt2YXIgZT10aGlzLGk9ZnVuY3Rpb24odCl7ZS5fb25Nb3VzZURvd24odCl9LG89ZnVuY3Rpb24odCl7ZS5fb25Ub3VjaFN0YXJ0KHQpfSxuPWZ1bmN0aW9uKHQpe2UuX29uV2hlZWwodCl9LHM9ZnVuY3Rpb24odCl7ZS5fb25Ub29sdGlwKHQpfSxyPWZ1bmN0aW9uKHQpe2UuX29uQ2xpY2sodCl9O2QuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmZyYW1lLmNhbnZhcywibW91c2Vkb3duIixpKSxkLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5mcmFtZS5jYW52YXMsInRvdWNoc3RhcnQiLG8pLGQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmZyYW1lLmNhbnZhcywibW91c2V3aGVlbCIsbiksZC5hZGRFdmVudExpc3RlbmVyKHRoaXMuZnJhbWUuY2FudmFzLCJtb3VzZW1vdmUiLHMpLGQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmZyYW1lLmNhbnZhcywiY2xpY2siLHIpLHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmZyYW1lKX0sby5wcm90b3R5cGUuX3NldFNpemU9ZnVuY3Rpb24odCxlKXt0aGlzLmZyYW1lLnN0eWxlLndpZHRoPXQsdGhpcy5mcmFtZS5zdHlsZS5oZWlnaHQ9ZSx0aGlzLl9yZXNpemVDYW52YXMoKX0sby5wcm90b3R5cGUuX3Jlc2l6ZUNhbnZhcz1mdW5jdGlvbigpe3RoaXMuZnJhbWUuY2FudmFzLnN0eWxlLndpZHRoPSIxMDAlIix0aGlzLmZyYW1lLmNhbnZhcy5zdHlsZS5oZWlnaHQ9IjEwMCUiLHRoaXMuZnJhbWUuY2FudmFzLndpZHRoPXRoaXMuZnJhbWUuY2FudmFzLmNsaWVudFdpZHRoLHRoaXMuZnJhbWUuY2FudmFzLmhlaWdodD10aGlzLmZyYW1lLmNhbnZhcy5jbGllbnRIZWlnaHQsdGhpcy5mcmFtZS5maWx0ZXIuc3R5bGUud2lkdGg9dGhpcy5mcmFtZS5jYW52YXMuY2xpZW50V2lkdGgtMjArInB4In0sby5wcm90b3R5cGUuYW5pbWF0aW9uU3RhcnQ9ZnVuY3Rpb24oKXtpZighdGhpcy5mcmFtZS5maWx0ZXJ8fCF0aGlzLmZyYW1lLmZpbHRlci5zbGlkZXIpdGhyb3cgbmV3IEVycm9yKCJObyBhbmltYXRpb24gYXZhaWxhYmxlIik7dGhpcy5mcmFtZS5maWx0ZXIuc2xpZGVyLnBsYXkoKX0sby5wcm90b3R5cGUuYW5pbWF0aW9uU3RvcD1mdW5jdGlvbigpe3RoaXMuZnJhbWUuZmlsdGVyJiZ0aGlzLmZyYW1lLmZpbHRlci5zbGlkZXImJnRoaXMuZnJhbWUuZmlsdGVyLnNsaWRlci5zdG9wKCl9LG8ucHJvdG90eXBlLl9yZXNpemVDZW50ZXI9ZnVuY3Rpb24oKXsiJSI9PT10aGlzLnhDZW50ZXIuY2hhckF0KHRoaXMueENlbnRlci5sZW5ndGgtMSk/dGhpcy5jdXJyZW50WENlbnRlcj1wYXJzZUZsb2F0KHRoaXMueENlbnRlcikvMTAwKnRoaXMuZnJhbWUuY2FudmFzLmNsaWVudFdpZHRoOnRoaXMuY3VycmVudFhDZW50ZXI9cGFyc2VGbG9hdCh0aGlzLnhDZW50ZXIpLCIlIj09PXRoaXMueUNlbnRlci5jaGFyQXQodGhpcy55Q2VudGVyLmxlbmd0aC0xKT90aGlzLmN1cnJlbnRZQ2VudGVyPXBhcnNlRmxvYXQodGhpcy55Q2VudGVyKS8xMDAqKHRoaXMuZnJhbWUuY2FudmFzLmNsaWVudEhlaWdodC10aGlzLmZyYW1lLmZpbHRlci5jbGllbnRIZWlnaHQpOnRoaXMuY3VycmVudFlDZW50ZXI9cGFyc2VGbG9hdCh0aGlzLnlDZW50ZXIpfSxvLnByb3RvdHlwZS5nZXRDYW1lcmFQb3NpdGlvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuY2FtZXJhLmdldEFybVJvdGF0aW9uKCk7cmV0dXJuIHQuZGlzdGFuY2U9dGhpcy5jYW1lcmEuZ2V0QXJtTGVuZ3RoKCksdH0sby5wcm90b3R5cGUuX3JlYWREYXRhPWZ1bmN0aW9uKHQpe3RoaXMuX2luaXRpYWxpemVEYXRhKHQsdGhpcy5zdHlsZSksdGhpcy5kYXRhRmlsdGVyP3RoaXMuZGF0YVBvaW50cz10aGlzLmRhdGFGaWx0ZXIuX2dldERhdGFQb2ludHMoKTp0aGlzLmRhdGFQb2ludHM9dGhpcy5fZ2V0RGF0YVBvaW50cyh0aGlzLmRhdGFHcm91cC5nZXREYXRhVGFibGUoKSksdGhpcy5fcmVkcmF3RmlsdGVyKCl9LG8ucHJvdG90eXBlLnNldERhdGE9ZnVuY3Rpb24odCl7dGhpcy5fcmVhZERhdGEodCksdGhpcy5yZWRyYXcoKSx0aGlzLmFuaW1hdGlvbkF1dG9TdGFydCYmdGhpcy5kYXRhRmlsdGVyJiZ0aGlzLmFuaW1hdGlvblN0YXJ0KCl9LG8ucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7dGhpcy5hbmltYXRpb25TdG9wKCksbS5zZXRPcHRpb25zKHQsdGhpcyksdGhpcy5zZXRQb2ludERyYXdpbmdNZXRob2QoKSx0aGlzLl9zZXRTaXplKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLHRoaXMuZGF0YUdyb3VwLnJlbG9hZCgpLHRoaXMuYW5pbWF0aW9uQXV0b1N0YXJ0JiZ0aGlzLmRhdGFGaWx0ZXImJnRoaXMuYW5pbWF0aW9uU3RhcnQoKX0sby5wcm90b3R5cGUuc2V0UG9pbnREcmF3aW5nTWV0aG9kPWZ1bmN0aW9uKCl7dmFyIHQ9dm9pZCAwO3N3aXRjaCh0aGlzLnN0eWxlKXtjYXNlIG8uU1RZTEUuQkFSOnQ9by5wcm90b3R5cGUuX3JlZHJhd0JhckdyYXBoUG9pbnQ7YnJlYWs7Y2FzZSBvLlNUWUxFLkJBUkNPTE9SOnQ9by5wcm90b3R5cGUuX3JlZHJhd0JhckNvbG9yR3JhcGhQb2ludDticmVhaztjYXNlIG8uU1RZTEUuQkFSU0laRTp0PW8ucHJvdG90eXBlLl9yZWRyYXdCYXJTaXplR3JhcGhQb2ludDticmVhaztjYXNlIG8uU1RZTEUuRE9UOnQ9by5wcm90b3R5cGUuX3JlZHJhd0RvdEdyYXBoUG9pbnQ7YnJlYWs7Y2FzZSBvLlNUWUxFLkRPVExJTkU6dD1vLnByb3RvdHlwZS5fcmVkcmF3RG90TGluZUdyYXBoUG9pbnQ7YnJlYWs7Y2FzZSBvLlNUWUxFLkRPVENPTE9SOnQ9by5wcm90b3R5cGUuX3JlZHJhd0RvdENvbG9yR3JhcGhQb2ludDticmVhaztjYXNlIG8uU1RZTEUuRE9UU0laRTp0PW8ucHJvdG90eXBlLl9yZWRyYXdEb3RTaXplR3JhcGhQb2ludDticmVhaztjYXNlIG8uU1RZTEUuU1VSRkFDRTp0PW8ucHJvdG90eXBlLl9yZWRyYXdTdXJmYWNlR3JhcGhQb2ludDticmVhaztjYXNlIG8uU1RZTEUuR1JJRDp0PW8ucHJvdG90eXBlLl9yZWRyYXdHcmlkR3JhcGhQb2ludDticmVhaztjYXNlIG8uU1RZTEUuTElORTp0PW8ucHJvdG90eXBlLl9yZWRyYXdMaW5lR3JhcGhQb2ludDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiQ2FuIG5vdCBkZXRlcm1pbmUgcG9pbnQgZHJhd2luZyBtZXRob2QgZm9yIGdyYXBoIHN0eWxlICciK3RoaXMuc3R5bGUrIiciKX10aGlzLl9wb2ludERyYXdpbmdNZXRob2Q9dH0sby5wcm90b3R5cGUucmVkcmF3PWZ1bmN0aW9uKCl7aWYodm9pZCAwPT09dGhpcy5kYXRhUG9pbnRzKXRocm93IG5ldyBFcnJvcigiR3JhcGggZGF0YSBub3QgaW5pdGlhbGl6ZWQiKTt0aGlzLl9yZXNpemVDYW52YXMoKSx0aGlzLl9yZXNpemVDZW50ZXIoKSx0aGlzLl9yZWRyYXdTbGlkZXIoKSx0aGlzLl9yZWRyYXdDbGVhcigpLHRoaXMuX3JlZHJhd0F4aXMoKSx0aGlzLl9yZWRyYXdEYXRhR3JhcGgoKSx0aGlzLl9yZWRyYXdJbmZvKCksdGhpcy5fcmVkcmF3TGVnZW5kKCl9LG8ucHJvdG90eXBlLl9nZXRDb250ZXh0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5mcmFtZS5jYW52YXMsZT10LmdldENvbnRleHQoIjJkIik7cmV0dXJuIGUubGluZUpvaW49InJvdW5kIixlLmxpbmVDYXA9InJvdW5kIixlfSxvLnByb3RvdHlwZS5fcmVkcmF3Q2xlYXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmZyYW1lLmNhbnZhczt0LmdldENvbnRleHQoIjJkIikuY2xlYXJSZWN0KDAsMCx0LndpZHRoLHQuaGVpZ2h0KX0sby5wcm90b3R5cGUuX2RvdFNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mcmFtZS5jbGllbnRXaWR0aCp0aGlzLmRvdFNpemVSYXRpb30sby5wcm90b3R5cGUuX2dldExlZ2VuZFdpZHRoPWZ1bmN0aW9uKCl7dmFyIHQ7aWYodGhpcy5zdHlsZT09PW8uU1RZTEUuRE9UU0laRSl7dD10aGlzLl9kb3RTaXplKCkqdGhpcy5kb3RTaXplTWF4RnJhY3Rpb259ZWxzZSB0PXRoaXMuc3R5bGU9PT1vLlNUWUxFLkJBUlNJWkU/dGhpcy54QmFyV2lkdGg6MjA7cmV0dXJuIHR9LG8ucHJvdG90eXBlLl9yZWRyYXdMZWdlbmQ9ZnVuY3Rpb24oKXtpZighMD09PXRoaXMuc2hvd0xlZ2VuZCYmdGhpcy5zdHlsZSE9PW8uU1RZTEUuTElORSYmdGhpcy5zdHlsZSE9PW8uU1RZTEUuQkFSU0laRSl7dmFyIHQ9dGhpcy5zdHlsZT09PW8uU1RZTEUuQkFSU0laRXx8dGhpcy5zdHlsZT09PW8uU1RZTEUuRE9UU0laRSxlPXRoaXMuc3R5bGU9PT1vLlNUWUxFLkRPVFNJWkV8fHRoaXMuc3R5bGU9PT1vLlNUWUxFLkRPVENPTE9SfHx0aGlzLnN0eWxlPT09by5TVFlMRS5CQVJDT0xPUixpPU1hdGgubWF4KC4yNSp0aGlzLmZyYW1lLmNsaWVudEhlaWdodCwxMDApLG49dGhpcy5tYXJnaW4scz10aGlzLl9nZXRMZWdlbmRXaWR0aCgpLHI9dGhpcy5mcmFtZS5jbGllbnRXaWR0aC10aGlzLm1hcmdpbixhPXItcyxoPW4raSxkPXRoaXMuX2dldENvbnRleHQoKTtpZihkLmxpbmVXaWR0aD0xLGQuZm9udD0iMTRweCBhcmlhbCIsITE9PT10KXt2YXIgbCxjPWk7Zm9yKGw9MDtsPGM7bCsrKXt2YXIgcD0obC0wKS8oYy0wKSxtPTI0MCpwLHY9dGhpcy5faHN2MnJnYihtLDEsMSk7ZC5zdHJva2VTdHlsZT12LGQuYmVnaW5QYXRoKCksZC5tb3ZlVG8oYSxuK2wpLGQubGluZVRvKHIsbitsKSxkLnN0cm9rZSgpfWQuc3Ryb2tlU3R5bGU9dGhpcy5heGlzQ29sb3IsZC5zdHJva2VSZWN0KGEsbixzLGkpfWVsc2V7dmFyIGc7dGhpcy5zdHlsZT09PW8uU1RZTEUuRE9UU0laRT9nPXMqKHRoaXMuZG90U2l6ZU1pbkZyYWN0aW9uL3RoaXMuZG90U2l6ZU1heEZyYWN0aW9uKToodGhpcy5zdHlsZSxvLlNUWUxFLkJBUlNJWkUpLGQuc3Ryb2tlU3R5bGU9dGhpcy5heGlzQ29sb3IsZC5maWxsU3R5bGU9dGhpcy5kYXRhQ29sb3IuZmlsbCxkLmJlZ2luUGF0aCgpLGQubW92ZVRvKGEsbiksZC5saW5lVG8ocixuKSxkLmxpbmVUbyhhK2csaCksZC5saW5lVG8oYSxoKSxkLmNsb3NlUGF0aCgpLGQuZmlsbCgpLGQuc3Ryb2tlKCl9dmFyIHk9ZT90aGlzLnZhbHVlUmFuZ2UubWluOnRoaXMuelJhbmdlLm1pbixiPWU/dGhpcy52YWx1ZVJhbmdlLm1heDp0aGlzLnpSYW5nZS5tYXgsXz1uZXcgZih5LGIsKGIteSkvNSwhMCk7Xy5zdGFydCghMCk7Zm9yKHZhciBsLHcseDshXy5lbmQoKTspbD1oLShfLmdldEN1cnJlbnQoKS15KS8oYi15KSppLHc9bmV3IHUoYS01LGwpLHg9bmV3IHUoYSxsKSx0aGlzLl9saW5lKGQsdyx4KSxkLnRleHRBbGlnbj0icmlnaHQiLGQudGV4dEJhc2VsaW5lPSJtaWRkbGUiLGQuZmlsbFN0eWxlPXRoaXMuYXhpc0NvbG9yLGQuZmlsbFRleHQoXy5nZXRDdXJyZW50KCksYS0xMCxsKSxfLm5leHQoKTtkLnRleHRBbGlnbj0icmlnaHQiLGQudGV4dEJhc2VsaW5lPSJ0b3AiO3ZhciBrPXRoaXMubGVnZW5kTGFiZWw7ZC5maWxsVGV4dChrLHIsaCt0aGlzLm1hcmdpbil9fSxvLnByb3RvdHlwZS5fcmVkcmF3RmlsdGVyPWZ1bmN0aW9uKCl7aWYodGhpcy5mcmFtZS5maWx0ZXIuaW5uZXJIVE1MPSIiLHRoaXMuZGF0YUZpbHRlcil7dmFyIHQ9e3Zpc2libGU6dGhpcy5zaG93QW5pbWF0aW9uQ29udHJvbHN9LGU9bmV3IHAodGhpcy5mcmFtZS5maWx0ZXIsdCk7dGhpcy5mcmFtZS5maWx0ZXIuc2xpZGVyPWUsdGhpcy5mcmFtZS5maWx0ZXIuc3R5bGUucGFkZGluZz0iMTBweCIsZS5zZXRWYWx1ZXModGhpcy5kYXRhRmlsdGVyLnZhbHVlcyksZS5zZXRQbGF5SW50ZXJ2YWwodGhpcy5hbmltYXRpb25JbnRlcnZhbCk7dmFyIGk9dGhpcyxvPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5nZXRJbmRleCgpO2kuZGF0YUZpbHRlci5zZWxlY3RWYWx1ZSh0KSxpLmRhdGFQb2ludHM9aS5kYXRhRmlsdGVyLl9nZXREYXRhUG9pbnRzKCksaS5yZWRyYXcoKX07ZS5zZXRPbkNoYW5nZUNhbGxiYWNrKG8pfWVsc2UgdGhpcy5mcmFtZS5maWx0ZXIuc2xpZGVyPXZvaWQgMH0sby5wcm90b3R5cGUuX3JlZHJhd1NsaWRlcj1mdW5jdGlvbigpe3ZvaWQgMCE9PXRoaXMuZnJhbWUuZmlsdGVyLnNsaWRlciYmdGhpcy5mcmFtZS5maWx0ZXIuc2xpZGVyLnJlZHJhdygpfSxvLnByb3RvdHlwZS5fcmVkcmF3SW5mbz1mdW5jdGlvbigpe2lmKHRoaXMuZGF0YUZpbHRlcil7dmFyIHQ9dGhpcy5fZ2V0Q29udGV4dCgpO3QuZm9udD0iMTRweCBhcmlhbCIsdC5saW5lU3R5bGU9ImdyYXkiLHQuZmlsbFN0eWxlPSJncmF5Iix0LnRleHRBbGlnbj0ibGVmdCIsdC50ZXh0QmFzZWxpbmU9InRvcCI7dmFyIGU9dGhpcy5tYXJnaW4saT10aGlzLm1hcmdpbjt0LmZpbGxUZXh0KHRoaXMuZGF0YUZpbHRlci5nZXRMYWJlbCgpKyI6ICIrdGhpcy5kYXRhRmlsdGVyLmdldFNlbGVjdGVkVmFsdWUoKSxlLGkpfX0sby5wcm90b3R5cGUuX2xpbmU9ZnVuY3Rpb24odCxlLGksbyl7dm9pZCAwIT09byYmKHQuc3Ryb2tlU3R5bGU9byksdC5iZWdpblBhdGgoKSx0Lm1vdmVUbyhlLngsZS55KSx0LmxpbmVUbyhpLngsaS55KSx0LnN0cm9rZSgpfSxvLnByb3RvdHlwZS5kcmF3QXhpc0xhYmVsWD1mdW5jdGlvbih0LGUsaSxvLG4pe3ZvaWQgMD09PW4mJihuPTApO3ZhciBzPXRoaXMuX2NvbnZlcnQzRHRvMkQoZSk7TWF0aC5jb3MoMipvKT4wPyh0LnRleHRBbGlnbj0iY2VudGVyIix0LnRleHRCYXNlbGluZT0idG9wIixzLnkrPW4pOk1hdGguc2luKDIqbyk8MD8odC50ZXh0QWxpZ249InJpZ2h0Iix0LnRleHRCYXNlbGluZT0ibWlkZGxlIik6KHQudGV4dEFsaWduPSJsZWZ0Iix0LnRleHRCYXNlbGluZT0ibWlkZGxlIiksdC5maWxsU3R5bGU9dGhpcy5heGlzQ29sb3IsdC5maWxsVGV4dChpLHMueCxzLnkpfSxvLnByb3RvdHlwZS5kcmF3QXhpc0xhYmVsWT1mdW5jdGlvbih0LGUsaSxvLG4pe3ZvaWQgMD09PW4mJihuPTApO3ZhciBzPXRoaXMuX2NvbnZlcnQzRHRvMkQoZSk7TWF0aC5jb3MoMipvKTwwPyh0LnRleHRBbGlnbj0iY2VudGVyIix0LnRleHRCYXNlbGluZT0idG9wIixzLnkrPW4pOk1hdGguc2luKDIqbyk+MD8odC50ZXh0QWxpZ249InJpZ2h0Iix0LnRleHRCYXNlbGluZT0ibWlkZGxlIik6KHQudGV4dEFsaWduPSJsZWZ0Iix0LnRleHRCYXNlbGluZT0ibWlkZGxlIiksdC5maWxsU3R5bGU9dGhpcy5heGlzQ29sb3IsdC5maWxsVGV4dChpLHMueCxzLnkpfSxvLnByb3RvdHlwZS5kcmF3QXhpc0xhYmVsWj1mdW5jdGlvbih0LGUsaSxvKXt2b2lkIDA9PT1vJiYobz0wKTt2YXIgbj10aGlzLl9jb252ZXJ0M0R0bzJEKGUpO3QudGV4dEFsaWduPSJyaWdodCIsdC50ZXh0QmFzZWxpbmU9Im1pZGRsZSIsdC5maWxsU3R5bGU9dGhpcy5heGlzQ29sb3IsdC5maWxsVGV4dChpLG4ueC1vLG4ueSl9LG8ucHJvdG90eXBlLl9saW5lM2Q9ZnVuY3Rpb24odCxlLGksbyl7dmFyIG49dGhpcy5fY29udmVydDNEdG8yRChlKSxzPXRoaXMuX2NvbnZlcnQzRHRvMkQoaSk7dGhpcy5fbGluZSh0LG4scyxvKX0sby5wcm90b3R5cGUuX3JlZHJhd0F4aXM9ZnVuY3Rpb24oKXt2YXIgdCxlLGksbyxuLHMscixhLGgsZCxjLHA9dGhpcy5fZ2V0Q29udGV4dCgpO3AuZm9udD0yNC90aGlzLmNhbWVyYS5nZXRBcm1MZW5ndGgoKSsicHggYXJpYWwiO3ZhciBtPS4wMjUvdGhpcy5zY2FsZS54LHY9LjAyNS90aGlzLnNjYWxlLnksZz01L3RoaXMuY2FtZXJhLmdldEFybUxlbmd0aCgpLHk9dGhpcy5jYW1lcmEuZ2V0QXJtUm90YXRpb24oKS5ob3Jpem9udGFsLGI9bmV3IHUoTWF0aC5jb3MoeSksTWF0aC5zaW4oeSkpLF89dGhpcy54UmFuZ2Usdz10aGlzLnlSYW5nZSx4PXRoaXMuelJhbmdlO2ZvcihwLmxpbmVXaWR0aD0xLG89dm9pZCAwPT09dGhpcy5kZWZhdWx0WFN0ZXAsaT1uZXcgZihfLm1pbixfLm1heCx0aGlzLnhTdGVwLG8pLGkuc3RhcnQoITApOyFpLmVuZCgpOyl7dmFyIGs9aS5nZXRDdXJyZW50KCk7aWYodGhpcy5zaG93R3JpZD8odD1uZXcgbChrLHcubWluLHgubWluKSxlPW5ldyBsKGssdy5tYXgseC5taW4pLHRoaXMuX2xpbmUzZChwLHQsZSx0aGlzLmdyaWRDb2xvcikpOnRoaXMuc2hvd1hBeGlzJiYodD1uZXcgbChrLHcubWluLHgubWluKSxlPW5ldyBsKGssdy5taW4rbSx4Lm1pbiksdGhpcy5fbGluZTNkKHAsdCxlLHRoaXMuYXhpc0NvbG9yKSx0PW5ldyBsKGssdy5tYXgseC5taW4pLGU9bmV3IGwoayx3Lm1heC1tLHgubWluKSx0aGlzLl9saW5lM2QocCx0LGUsdGhpcy5heGlzQ29sb3IpKSx0aGlzLnNob3dYQXhpcyl7cj1iLng+MD93Lm1pbjp3Lm1heDt2YXIgRD1uZXcgbChrLHIseC5taW4pLE09IiAgIit0aGlzLnhWYWx1ZUxhYmVsKGspKyIgICI7dGhpcy5kcmF3QXhpc0xhYmVsWChwLEQsTSx5LGcpfWkubmV4dCgpfWZvcihwLmxpbmVXaWR0aD0xLG89dm9pZCAwPT09dGhpcy5kZWZhdWx0WVN0ZXAsaT1uZXcgZih3Lm1pbix3Lm1heCx0aGlzLnlTdGVwLG8pLGkuc3RhcnQoITApOyFpLmVuZCgpOyl7dmFyIFM9aS5nZXRDdXJyZW50KCk7aWYodGhpcy5zaG93R3JpZD8odD1uZXcgbChfLm1pbixTLHgubWluKSxlPW5ldyBsKF8ubWF4LFMseC5taW4pLHRoaXMuX2xpbmUzZChwLHQsZSx0aGlzLmdyaWRDb2xvcikpOnRoaXMuc2hvd1lBeGlzJiYodD1uZXcgbChfLm1pbixTLHgubWluKSxlPW5ldyBsKF8ubWluK3YsUyx4Lm1pbiksdGhpcy5fbGluZTNkKHAsdCxlLHRoaXMuYXhpc0NvbG9yKSx0PW5ldyBsKF8ubWF4LFMseC5taW4pLGU9bmV3IGwoXy5tYXgtdixTLHgubWluKSx0aGlzLl9saW5lM2QocCx0LGUsdGhpcy5heGlzQ29sb3IpKSx0aGlzLnNob3dZQXhpcyl7cz1iLnk+MD9fLm1pbjpfLm1heCxEPW5ldyBsKHMsUyx4Lm1pbik7dmFyIE09IiAgIit0aGlzLnlWYWx1ZUxhYmVsKFMpKyIgICI7dGhpcy5kcmF3QXhpc0xhYmVsWShwLEQsTSx5LGcpfWkubmV4dCgpfWlmKHRoaXMuc2hvd1pBeGlzKXtmb3IocC5saW5lV2lkdGg9MSxvPXZvaWQgMD09PXRoaXMuZGVmYXVsdFpTdGVwLGk9bmV3IGYoeC5taW4seC5tYXgsdGhpcy56U3RlcCxvKSxpLnN0YXJ0KCEwKSxzPWIueD4wP18ubWluOl8ubWF4LHI9Yi55PDA/dy5taW46dy5tYXg7IWkuZW5kKCk7KXt2YXIgTz1pLmdldEN1cnJlbnQoKSxDPW5ldyBsKHMscixPKSxUPXRoaXMuX2NvbnZlcnQzRHRvMkQoQyk7ZT1uZXcgdShULngtZyxULnkpLHRoaXMuX2xpbmUocCxULGUsdGhpcy5heGlzQ29sb3IpO3ZhciBNPXRoaXMuelZhbHVlTGFiZWwoTykrIiAiO3RoaXMuZHJhd0F4aXNMYWJlbFoocCxDLE0sNSksaS5uZXh0KCl9cC5saW5lV2lkdGg9MSx0PW5ldyBsKHMscix4Lm1pbiksZT1uZXcgbChzLHIseC5tYXgpLHRoaXMuX2xpbmUzZChwLHQsZSx0aGlzLmF4aXNDb2xvcil9aWYodGhpcy5zaG93WEF4aXMpe3ZhciBFLFA7cC5saW5lV2lkdGg9MSxFPW5ldyBsKF8ubWluLHcubWluLHgubWluKSxQPW5ldyBsKF8ubWF4LHcubWluLHgubWluKSx0aGlzLl9saW5lM2QocCxFLFAsdGhpcy5heGlzQ29sb3IpLEU9bmV3IGwoXy5taW4sdy5tYXgseC5taW4pLFA9bmV3IGwoXy5tYXgsdy5tYXgseC5taW4pLHRoaXMuX2xpbmUzZChwLEUsUCx0aGlzLmF4aXNDb2xvcil9dGhpcy5zaG93WUF4aXMmJihwLmxpbmVXaWR0aD0xLHQ9bmV3IGwoXy5taW4sdy5taW4seC5taW4pLGU9bmV3IGwoXy5taW4sdy5tYXgseC5taW4pLHRoaXMuX2xpbmUzZChwLHQsZSx0aGlzLmF4aXNDb2xvciksdD1uZXcgbChfLm1heCx3Lm1pbix4Lm1pbiksZT1uZXcgbChfLm1heCx3Lm1heCx4Lm1pbiksdGhpcy5fbGluZTNkKHAsdCxlLHRoaXMuYXhpc0NvbG9yKSk7dmFyIEk9dGhpcy54TGFiZWw7SS5sZW5ndGg+MCYmdGhpcy5zaG93WEF4aXMmJihjPS4xL3RoaXMuc2NhbGUueSxzPShfLm1heCszKl8ubWluKS80LHI9Yi54PjA/dy5taW4tYzp3Lm1heCtjLG49bmV3IGwocyxyLHgubWluKSx0aGlzLmRyYXdBeGlzTGFiZWxYKHAsbixJLHkpKTt2YXIgTj10aGlzLnlMYWJlbDtOLmxlbmd0aD4wJiZ0aGlzLnNob3dZQXhpcyYmKGQ9LjEvdGhpcy5zY2FsZS54LHM9Yi55PjA/Xy5taW4tZDpfLm1heCtkLHI9KHcubWF4KzMqdy5taW4pLzQsbj1uZXcgbChzLHIseC5taW4pLHRoaXMuZHJhd0F4aXNMYWJlbFkocCxuLE4seSkpO3ZhciBBPXRoaXMuekxhYmVsO0EubGVuZ3RoPjAmJnRoaXMuc2hvd1pBeGlzJiYoaD0zMCxzPWIueD4wP18ubWluOl8ubWF4LHI9Yi55PDA/dy5taW46dy5tYXgsYT0oeC5tYXgrMyp4Lm1pbikvNCxuPW5ldyBsKHMscixhKSx0aGlzLmRyYXdBeGlzTGFiZWxaKHAsbixBLGgpKX0sby5wcm90b3R5cGUuX2hzdjJyZ2I9ZnVuY3Rpb24odCxlLGkpe3ZhciBvLG4scyxyLGEsaDtzd2l0Y2gocj1pKmUsYT1NYXRoLmZsb29yKHQvNjApLGg9ciooMS1NYXRoLmFicyh0LzYwJTItMSkpLGEpe2Nhc2UgMDpvPXIsbj1oLHM9MDticmVhaztjYXNlIDE6bz1oLG49cixzPTA7YnJlYWs7Y2FzZSAyOm89MCxuPXIscz1oO2JyZWFrO2Nhc2UgMzpvPTAsbj1oLHM9cjticmVhaztjYXNlIDQ6bz1oLG49MCxzPXI7YnJlYWs7Y2FzZSA1Om89cixuPTAscz1oO2JyZWFrO2RlZmF1bHQ6bz0wLG49MCxzPTB9cmV0dXJuIlJHQigiK3BhcnNlSW50KDI1NSpvKSsiLCIrcGFyc2VJbnQoMjU1Km4pKyIsIitwYXJzZUludCgyNTUqcykrIikifSxvLnByb3RvdHlwZS5fZ2V0U3Ryb2tlV2lkdGg9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQ/dGhpcy5zaG93UGVyc3BlY3RpdmU/MS8tdC50cmFucy56KnRoaXMuZGF0YUNvbG9yLnN0cm9rZVdpZHRoOi10aGlzLmV5ZS56L3RoaXMuY2FtZXJhLmdldEFybUxlbmd0aCgpKnRoaXMuZGF0YUNvbG9yLnN0cm9rZVdpZHRoOnRoaXMuZGF0YUNvbG9yLnN0cm9rZVdpZHRofSxvLnByb3RvdHlwZS5fcmVkcmF3QmFyPWZ1bmN0aW9uKHQsZSxpLG8sbixzKXt2YXIgcixhLGg9dGhpcyxkPWUucG9pbnQsdT10aGlzLnpSYW5nZS5taW4sYz1be3BvaW50Om5ldyBsKGQueC1pLGQueS1vLGQueil9LHtwb2ludDpuZXcgbChkLngraSxkLnktbyxkLnopfSx7cG9pbnQ6bmV3IGwoZC54K2ksZC55K28sZC56KX0se3BvaW50Om5ldyBsKGQueC1pLGQueStvLGQueil9XSxwPVt7cG9pbnQ6bmV3IGwoZC54LWksZC55LW8sdSl9LHtwb2ludDpuZXcgbChkLngraSxkLnktbyx1KX0se3BvaW50Om5ldyBsKGQueCtpLGQueStvLHUpfSx7cG9pbnQ6bmV3IGwoZC54LWksZC55K28sdSl9XTtjLmZvckVhY2goZnVuY3Rpb24odCl7dC5zY3JlZW49aC5fY29udmVydDNEdG8yRCh0LnBvaW50KX0pLHAuZm9yRWFjaChmdW5jdGlvbih0KXt0LnNjcmVlbj1oLl9jb252ZXJ0M0R0bzJEKHQucG9pbnQpfSk7dmFyIGY9W3tjb3JuZXJzOmMsY2VudGVyOmwuYXZnKHBbMF0ucG9pbnQscFsyXS5wb2ludCl9LHtjb3JuZXJzOltjWzBdLGNbMV0scFsxXSxwWzBdXSxjZW50ZXI6bC5hdmcocFsxXS5wb2ludCxwWzBdLnBvaW50KX0se2Nvcm5lcnM6W2NbMV0sY1syXSxwWzJdLHBbMV1dLGNlbnRlcjpsLmF2ZyhwWzJdLnBvaW50LHBbMV0ucG9pbnQpfSx7Y29ybmVyczpbY1syXSxjWzNdLHBbM10scFsyXV0sY2VudGVyOmwuYXZnKHBbM10ucG9pbnQscFsyXS5wb2ludCl9LHtjb3JuZXJzOltjWzNdLGNbMF0scFswXSxwWzNdXSxjZW50ZXI6bC5hdmcocFswXS5wb2ludCxwWzNdLnBvaW50KX1dO2ZvcihlLnN1cmZhY2VzPWYscj0wO3I8Zi5sZW5ndGg7cisrKXthPWZbcl07dmFyIG09dGhpcy5fY29udmVydFBvaW50VG9UcmFuc2xhdGlvbihhLmNlbnRlcik7YS5kaXN0PXRoaXMuc2hvd1BlcnNwZWN0aXZlP20ubGVuZ3RoKCk6LW0uen1mb3IoZi5zb3J0KGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5kaXN0LXQuZGlzdDtyZXR1cm4gaXx8KHQuY29ybmVycz09PWM/MTplLmNvcm5lcnM9PT1jPy0xOjApfSksdC5saW5lV2lkdGg9dGhpcy5fZ2V0U3Ryb2tlV2lkdGgoZSksdC5zdHJva2VTdHlsZT1zLHQuZmlsbFN0eWxlPW4scj0yO3I8Zi5sZW5ndGg7cisrKWE9ZltyXSx0aGlzLl9wb2x5Z29uKHQsYS5jb3JuZXJzKX0sby5wcm90b3R5cGUuX3BvbHlnb249ZnVuY3Rpb24odCxlLGksbyl7aWYoIShlLmxlbmd0aDwyKSl7dm9pZCAwIT09aSYmKHQuZmlsbFN0eWxlPWkpLHZvaWQgMCE9PW8mJih0LnN0cm9rZVN0eWxlPW8pLHQuYmVnaW5QYXRoKCksdC5tb3ZlVG8oZVswXS5zY3JlZW4ueCxlWzBdLnNjcmVlbi55KTtmb3IodmFyIG49MTtuPGUubGVuZ3RoOysrbil7dmFyIHM9ZVtuXTt0LmxpbmVUbyhzLnNjcmVlbi54LHMuc2NyZWVuLnkpfXQuY2xvc2VQYXRoKCksdC5maWxsKCksdC5zdHJva2UoKX19LG8ucHJvdG90eXBlLl9kcmF3Q2lyY2xlPWZ1bmN0aW9uKHQsZSxpLG8sbil7dmFyIHM9dGhpcy5fY2FsY1JhZGl1cyhlLG4pO3QubGluZVdpZHRoPXRoaXMuX2dldFN0cm9rZVdpZHRoKGUpLHQuc3Ryb2tlU3R5bGU9byx0LmZpbGxTdHlsZT1pLHQuYmVnaW5QYXRoKCksdC5hcmMoZS5zY3JlZW4ueCxlLnNjcmVlbi55LHMsMCwyKk1hdGguUEksITApLHQuZmlsbCgpLHQuc3Ryb2tlKCl9LG8ucHJvdG90eXBlLl9nZXRDb2xvcnNSZWd1bGFyPWZ1bmN0aW9uKHQpe3ZhciBlPTI0MCooMS0odC5wb2ludC56LXRoaXMuelJhbmdlLm1pbikqdGhpcy5zY2FsZS56L3RoaXMudmVydGljYWxSYXRpbyk7cmV0dXJue2ZpbGw6dGhpcy5faHN2MnJnYihlLDEsMSksYm9yZGVyOnRoaXMuX2hzdjJyZ2IoZSwxLC44KX19LG8ucHJvdG90eXBlLl9nZXRDb2xvcnNDb2xvcj1mdW5jdGlvbih0KXt2YXIgZSxpO2lmKCJzdHJpbmciPT10eXBlb2YgdC5wb2ludC52YWx1ZSllPXQucG9pbnQudmFsdWUsaT10LnBvaW50LnZhbHVlO2Vsc2V7dmFyIG89MjQwKigxLSh0LnBvaW50LnZhbHVlLXRoaXMudmFsdWVSYW5nZS5taW4pKnRoaXMuc2NhbGUudmFsdWUpO2U9dGhpcy5faHN2MnJnYihvLDEsMSksaT10aGlzLl9oc3YycmdiKG8sMSwuOCl9cmV0dXJue2ZpbGw6ZSxib3JkZXI6aX19LG8ucHJvdG90eXBlLl9nZXRDb2xvcnNTaXplPWZ1bmN0aW9uKCl7cmV0dXJue2ZpbGw6dGhpcy5kYXRhQ29sb3IuZmlsbCxib3JkZXI6dGhpcy5kYXRhQ29sb3Iuc3Ryb2tlfX0sby5wcm90b3R5cGUuX2NhbGNSYWRpdXM9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT10aGlzLl9kb3RTaXplKCkpO3ZhciBpO3JldHVybiBpPXRoaXMuc2hvd1BlcnNwZWN0aXZlP2UvLXQudHJhbnMuejplKigtdGhpcy5leWUuei90aGlzLmNhbWVyYS5nZXRBcm1MZW5ndGgoKSksaTwwJiYoaT0wKSxpfSxvLnByb3RvdHlwZS5fcmVkcmF3QmFyR3JhcGhQb2ludD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMueEJhcldpZHRoLzIsbz10aGlzLnlCYXJXaWR0aC8yLG49dGhpcy5fZ2V0Q29sb3JzUmVndWxhcihlKTt0aGlzLl9yZWRyYXdCYXIodCxlLGksbyxuLmZpbGwsbi5ib3JkZXIpfSxvLnByb3RvdHlwZS5fcmVkcmF3QmFyQ29sb3JHcmFwaFBvaW50PWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy54QmFyV2lkdGgvMixvPXRoaXMueUJhcldpZHRoLzIsbj10aGlzLl9nZXRDb2xvcnNDb2xvcihlKTt0aGlzLl9yZWRyYXdCYXIodCxlLGksbyxuLmZpbGwsbi5ib3JkZXIpfSxvLnByb3RvdHlwZS5fcmVkcmF3QmFyU2l6ZUdyYXBoUG9pbnQ9ZnVuY3Rpb24odCxlKXt2YXIgaT0oZS5wb2ludC52YWx1ZS10aGlzLnZhbHVlUmFuZ2UubWluKS90aGlzLnZhbHVlUmFuZ2UucmFuZ2UoKSxvPXRoaXMueEJhcldpZHRoLzIqKC44KmkrLjIpLG49dGhpcy55QmFyV2lkdGgvMiooLjgqaSsuMikscz10aGlzLl9nZXRDb2xvcnNTaXplKCk7dGhpcy5fcmVkcmF3QmFyKHQsZSxvLG4scy5maWxsLHMuYm9yZGVyKX0sby5wcm90b3R5cGUuX3JlZHJhd0RvdEdyYXBoUG9pbnQ9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9nZXRDb2xvcnNSZWd1bGFyKGUpO3RoaXMuX2RyYXdDaXJjbGUodCxlLGkuZmlsbCxpLmJvcmRlcil9LG8ucHJvdG90eXBlLl9yZWRyYXdEb3RMaW5lR3JhcGhQb2ludD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2NvbnZlcnQzRHRvMkQoZS5ib3R0b20pO3QubGluZVdpZHRoPTEsdGhpcy5fbGluZSh0LGksZS5zY3JlZW4sdGhpcy5ncmlkQ29sb3IpLHRoaXMuX3JlZHJhd0RvdEdyYXBoUG9pbnQodCxlKX0sby5wcm90b3R5cGUuX3JlZHJhd0RvdENvbG9yR3JhcGhQb2ludD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2dldENvbG9yc0NvbG9yKGUpO3RoaXMuX2RyYXdDaXJjbGUodCxlLGkuZmlsbCxpLmJvcmRlcil9LG8ucHJvdG90eXBlLl9yZWRyYXdEb3RTaXplR3JhcGhQb2ludD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2RvdFNpemUoKSxvPShlLnBvaW50LnZhbHVlLXRoaXMudmFsdWVSYW5nZS5taW4pL3RoaXMudmFsdWVSYW5nZS5yYW5nZSgpLG49aSp0aGlzLmRvdFNpemVNaW5GcmFjdGlvbixzPWkqdGhpcy5kb3RTaXplTWF4RnJhY3Rpb24tbixyPW4rcypvLGE9dGhpcy5fZ2V0Q29sb3JzU2l6ZSgpO3RoaXMuX2RyYXdDaXJjbGUodCxlLGEuZmlsbCxhLmJvcmRlcixyKX0sby5wcm90b3R5cGUuX3JlZHJhd1N1cmZhY2VHcmFwaFBvaW50PWZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5wb2ludFJpZ2h0LG89ZS5wb2ludFRvcCxuPWUucG9pbnRDcm9zcztpZih2b2lkIDAhPT1lJiZ2b2lkIDAhPT1pJiZ2b2lkIDAhPT1vJiZ2b2lkIDAhPT1uKXt2YXIgcyxyLGE9ITA7aWYodGhpcy5zaG93R3JheUJvdHRvbXx8dGhpcy5zaG93U2hhZG93KXt2YXIgaD1sLnN1YnRyYWN0KG4udHJhbnMsZS50cmFucyksZD1sLnN1YnRyYWN0KG8udHJhbnMsaS50cmFucyksdT1sLmNyb3NzUHJvZHVjdChoLGQpLGM9dS5sZW5ndGgoKTthPXUuej4wfWlmKGEpe3ZhciBwLGY9KGUucG9pbnQueitpLnBvaW50Lnorby5wb2ludC56K24ucG9pbnQueikvNCxtPTI0MCooMS0oZi10aGlzLnpSYW5nZS5taW4pKnRoaXMuc2NhbGUuei90aGlzLnZlcnRpY2FsUmF0aW8pO3RoaXMuc2hvd1NoYWRvdz8ocD1NYXRoLm1pbigxK3UueC9jLzIsMSkscz10aGlzLl9oc3YycmdiKG0sMSxwKSxyPXMpOihwPTEscz10aGlzLl9oc3YycmdiKG0sMSxwKSxyPXRoaXMuYXhpc0NvbG9yKX1lbHNlIHM9ImdyYXkiLHI9dGhpcy5heGlzQ29sb3I7dC5saW5lV2lkdGg9dGhpcy5fZ2V0U3Ryb2tlV2lkdGgoZSk7dmFyIHY9W2UsaSxuLG9dO3RoaXMuX3BvbHlnb24odCx2LHMscil9fSxvLnByb3RvdHlwZS5fZHJhd0dyaWRMaW5lPWZ1bmN0aW9uKHQsZSxpKXtpZih2b2lkIDAhPT1lJiZ2b2lkIDAhPT1pKXt2YXIgbz0oZS5wb2ludC56K2kucG9pbnQueikvMixuPTI0MCooMS0oby10aGlzLnpSYW5nZS5taW4pKnRoaXMuc2NhbGUuei90aGlzLnZlcnRpY2FsUmF0aW8pO3QubGluZVdpZHRoPTIqdGhpcy5fZ2V0U3Ryb2tlV2lkdGgoZSksdC5zdHJva2VTdHlsZT10aGlzLl9oc3YycmdiKG4sMSwxKSx0aGlzLl9saW5lKHQsZS5zY3JlZW4saS5zY3JlZW4pfX0sby5wcm90b3R5cGUuX3JlZHJhd0dyaWRHcmFwaFBvaW50PWZ1bmN0aW9uKHQsZSl7dGhpcy5fZHJhd0dyaWRMaW5lKHQsZSxlLnBvaW50UmlnaHQpLHRoaXMuX2RyYXdHcmlkTGluZSh0LGUsZS5wb2ludFRvcCl9LG8ucHJvdG90eXBlLl9yZWRyYXdMaW5lR3JhcGhQb2ludD1mdW5jdGlvbih0LGUpe3ZvaWQgMCE9PWUucG9pbnROZXh0JiYodC5saW5lV2lkdGg9dGhpcy5fZ2V0U3Ryb2tlV2lkdGgoZSksdC5zdHJva2VTdHlsZT10aGlzLmRhdGFDb2xvci5zdHJva2UsdGhpcy5fbGluZSh0LGUuc2NyZWVuLGUucG9pbnROZXh0LnNjcmVlbikpfSxvLnByb3RvdHlwZS5fcmVkcmF3RGF0YUdyYXBoPWZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLl9nZXRDb250ZXh0KCk7aWYoISh2b2lkIDA9PT10aGlzLmRhdGFQb2ludHN8fHRoaXMuZGF0YVBvaW50cy5sZW5ndGg8PTApKWZvcih0aGlzLl9jYWxjVHJhbnNsYXRpb25zKHRoaXMuZGF0YVBvaW50cyksdD0wO3Q8dGhpcy5kYXRhUG9pbnRzLmxlbmd0aDt0Kyspe3ZhciBpPXRoaXMuZGF0YVBvaW50c1t0XTt0aGlzLl9wb2ludERyYXdpbmdNZXRob2QuY2FsbCh0aGlzLGUsaSl9fSxvLnByb3RvdHlwZS5fc3RvcmVNb3VzZVBvc2l0aW9uPWZ1bmN0aW9uKHQpe3RoaXMuc3RhcnRNb3VzZVg9bih0KSx0aGlzLnN0YXJ0TW91c2VZPXModCksdGhpcy5fc3RhcnRDYW1lcmFPZmZzZXQ9dGhpcy5jYW1lcmEuZ2V0T2Zmc2V0KCl9LG8ucHJvdG90eXBlLl9vbk1vdXNlRG93bj1mdW5jdGlvbih0KXtpZih0PXR8fHdpbmRvdy5ldmVudCx0aGlzLmxlZnRCdXR0b25Eb3duJiZ0aGlzLl9vbk1vdXNlVXAodCksdGhpcy5sZWZ0QnV0dG9uRG93bj10LndoaWNoPzE9PT10LndoaWNoOjE9PT10LmJ1dHRvbix0aGlzLmxlZnRCdXR0b25Eb3dufHx0aGlzLnRvdWNoRG93bil7dGhpcy5fc3RvcmVNb3VzZVBvc2l0aW9uKHQpLHRoaXMuc3RhcnRTdGFydD1uZXcgRGF0ZSh0aGlzLnN0YXJ0KSx0aGlzLnN0YXJ0RW5kPW5ldyBEYXRlKHRoaXMuZW5kKSx0aGlzLnN0YXJ0QXJtUm90YXRpb249dGhpcy5jYW1lcmEuZ2V0QXJtUm90YXRpb24oKSx0aGlzLmZyYW1lLnN0eWxlLmN1cnNvcj0ibW92ZSI7dmFyIGU9dGhpczt0aGlzLm9ubW91c2Vtb3ZlPWZ1bmN0aW9uKHQpe2UuX29uTW91c2VNb3ZlKHQpfSx0aGlzLm9ubW91c2V1cD1mdW5jdGlvbih0KXtlLl9vbk1vdXNlVXAodCl9LGQuYWRkRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwibW91c2Vtb3ZlIixlLm9ubW91c2Vtb3ZlKSxkLmFkZEV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIm1vdXNldXAiLGUub25tb3VzZXVwKSxkLnByZXZlbnREZWZhdWx0KHQpfX0sby5wcm90b3R5cGUuX29uTW91c2VNb3ZlPWZ1bmN0aW9uKHQpe3RoaXMubW92aW5nPSEwLHQ9dHx8d2luZG93LmV2ZW50O3ZhciBlPXBhcnNlRmxvYXQobih0KSktdGhpcy5zdGFydE1vdXNlWCxpPXBhcnNlRmxvYXQocyh0KSktdGhpcy5zdGFydE1vdXNlWTtpZih0JiYhMD09PXQuY3RybEtleSl7dmFyIG89LjUqdGhpcy5mcmFtZS5jbGllbnRXaWR0aCxyPS41KnRoaXMuZnJhbWUuY2xpZW50SGVpZ2h0LGE9KHRoaXMuX3N0YXJ0Q2FtZXJhT2Zmc2V0Lnh8fDApLWUvbyp0aGlzLmNhbWVyYS5hcm1MZW5ndGgqLjgsaD0odGhpcy5fc3RhcnRDYW1lcmFPZmZzZXQueXx8MCkraS9yKnRoaXMuY2FtZXJhLmFybUxlbmd0aCouODt0aGlzLmNhbWVyYS5zZXRPZmZzZXQoYSxoKSx0aGlzLl9zdG9yZU1vdXNlUG9zaXRpb24odCl9ZWxzZXt2YXIgbD10aGlzLnN0YXJ0QXJtUm90YXRpb24uaG9yaXpvbnRhbCtlLzIwMCx1PXRoaXMuc3RhcnRBcm1Sb3RhdGlvbi52ZXJ0aWNhbCtpLzIwMCxjPU1hdGguc2luKDQvMzYwKjIqTWF0aC5QSSk7TWF0aC5hYnMoTWF0aC5zaW4obCkpPGMmJihsPU1hdGgucm91bmQobC9NYXRoLlBJKSpNYXRoLlBJLS4wMDEpLE1hdGguYWJzKE1hdGguY29zKGwpKTxjJiYobD0oTWF0aC5yb3VuZChsL01hdGguUEktLjUpKy41KSpNYXRoLlBJLS4wMDEpLE1hdGguYWJzKE1hdGguc2luKHUpKTxjJiYodT1NYXRoLnJvdW5kKHUvTWF0aC5QSSkqTWF0aC5QSSksTWF0aC5hYnMoTWF0aC5jb3ModSkpPGMmJih1PShNYXRoLnJvdW5kKHUvTWF0aC5QSS0uNSkrLjUpKk1hdGguUEkpLHRoaXMuY2FtZXJhLnNldEFybVJvdGF0aW9uKGwsdSl9dGhpcy5yZWRyYXcoKTt2YXIgcD10aGlzLmdldENhbWVyYVBvc2l0aW9uKCk7dGhpcy5lbWl0KCJjYW1lcmFQb3NpdGlvbkNoYW5nZSIscCksZC5wcmV2ZW50RGVmYXVsdCh0KX0sby5wcm90b3R5cGUuX29uTW91c2VVcD1mdW5jdGlvbih0KXt0aGlzLmZyYW1lLnN0eWxlLmN1cnNvcj0iYXV0byIsdGhpcy5sZWZ0QnV0dG9uRG93bj0hMSxkLnJlbW92ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIm1vdXNlbW92ZSIsdGhpcy5vbm1vdXNlbW92ZSksZC5yZW1vdmVFdmVudExpc3RlbmVyKGRvY3VtZW50LCJtb3VzZXVwIix0aGlzLm9ubW91c2V1cCksZC5wcmV2ZW50RGVmYXVsdCh0KX0sby5wcm90b3R5cGUuX29uQ2xpY2s9ZnVuY3Rpb24odCl7aWYodGhpcy5vbmNsaWNrX2NhbGxiYWNrKXtpZih0aGlzLm1vdmluZyl0aGlzLm1vdmluZz0hMTtlbHNle3ZhciBlPXRoaXMuZnJhbWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT1uKHQpLWUubGVmdCxvPXModCktZS50b3Ascj10aGlzLl9kYXRhUG9pbnRGcm9tWFkoaSxvKTtyJiZ0aGlzLm9uY2xpY2tfY2FsbGJhY2soci5wb2ludC5kYXRhKX1kLnByZXZlbnREZWZhdWx0KHQpfX0sby5wcm90b3R5cGUuX29uVG9vbHRpcD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9bih0KS1lLmxlZnQsbz1zKHQpLWUudG9wO2lmKHRoaXMuc2hvd1Rvb2x0aXApe2lmKHRoaXMudG9vbHRpcFRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLnRvb2x0aXBUaW1lb3V0KSx0aGlzLmxlZnRCdXR0b25Eb3duKXJldHVybiB2b2lkIHRoaXMuX2hpZGVUb29sdGlwKCk7aWYodGhpcy50b29sdGlwJiZ0aGlzLnRvb2x0aXAuZGF0YVBvaW50KXt2YXIgcj10aGlzLl9kYXRhUG9pbnRGcm9tWFkoaSxvKTtyIT09dGhpcy50b29sdGlwLmRhdGFQb2ludCYmKHI/dGhpcy5fc2hvd1Rvb2x0aXAocik6dGhpcy5faGlkZVRvb2x0aXAoKSl9ZWxzZXt2YXIgYT10aGlzO3RoaXMudG9vbHRpcFRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2EudG9vbHRpcFRpbWVvdXQ9bnVsbDt2YXIgdD1hLl9kYXRhUG9pbnRGcm9tWFkoaSxvKTt0JiZhLl9zaG93VG9vbHRpcCh0KX0sMzAwKX19fSxvLnByb3RvdHlwZS5fb25Ub3VjaFN0YXJ0PWZ1bmN0aW9uKHQpe3RoaXMudG91Y2hEb3duPSEwO3ZhciBlPXRoaXM7dGhpcy5vbnRvdWNobW92ZT1mdW5jdGlvbih0KXtlLl9vblRvdWNoTW92ZSh0KX0sdGhpcy5vbnRvdWNoZW5kPWZ1bmN0aW9uKHQpe2UuX29uVG91Y2hFbmQodCl9LGQuYWRkRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwidG91Y2htb3ZlIixlLm9udG91Y2htb3ZlKSxkLmFkZEV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsInRvdWNoZW5kIixlLm9udG91Y2hlbmQpLHRoaXMuX29uTW91c2VEb3duKHQpfSxvLnByb3RvdHlwZS5fb25Ub3VjaE1vdmU9ZnVuY3Rpb24odCl7dGhpcy5fb25Nb3VzZU1vdmUodCl9LG8ucHJvdG90eXBlLl9vblRvdWNoRW5kPWZ1bmN0aW9uKHQpe3RoaXMudG91Y2hEb3duPSExLGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwidG91Y2htb3ZlIix0aGlzLm9udG91Y2htb3ZlKSxkLnJlbW92ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsInRvdWNoZW5kIix0aGlzLm9udG91Y2hlbmQpLHRoaXMuX29uTW91c2VVcCh0KX0sby5wcm90b3R5cGUuX29uV2hlZWw9ZnVuY3Rpb24odCl7dHx8KHQ9d2luZG93LmV2ZW50KTt2YXIgZT0wO2lmKHQud2hlZWxEZWx0YT9lPXQud2hlZWxEZWx0YS8xMjA6dC5kZXRhaWwmJihlPS10LmRldGFpbC8zKSxlKXt2YXIgaT10aGlzLmNhbWVyYS5nZXRBcm1MZW5ndGgoKSxvPWkqKDEtZS8xMCk7dGhpcy5jYW1lcmEuc2V0QXJtTGVuZ3RoKG8pLHRoaXMucmVkcmF3KCksdGhpcy5faGlkZVRvb2x0aXAoKX12YXIgbj10aGlzLmdldENhbWVyYVBvc2l0aW9uKCk7dGhpcy5lbWl0KCJjYW1lcmFQb3NpdGlvbkNoYW5nZSIsbiksZC5wcmV2ZW50RGVmYXVsdCh0KX0sby5wcm90b3R5cGUuX2luc2lkZVRyaWFuZ2xlPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9dmFyIG89ZVswXSxuPWVbMV0scz1lWzJdLHI9aSgobi54LW8ueCkqKHQueS1vLnkpLShuLnktby55KSoodC54LW8ueCkpLGE9aSgocy54LW4ueCkqKHQueS1uLnkpLShzLnktbi55KSoodC54LW4ueCkpLGg9aSgoby54LXMueCkqKHQueS1zLnkpLShvLnktcy55KSoodC54LXMueCkpO3JldHVybiEoMCE9ciYmMCE9YSYmciE9YXx8MCE9YSYmMCE9aCYmYSE9aHx8MCE9ciYmMCE9aCYmciE9aCl9LG8ucHJvdG90eXBlLl9kYXRhUG9pbnRGcm9tWFk9ZnVuY3Rpb24odCxlKXt2YXIgaSxuPW51bGwscz1udWxsLHI9bnVsbCxhPW5ldyB1KHQsZSk7aWYodGhpcy5zdHlsZT09PW8uU1RZTEUuQkFSfHx0aGlzLnN0eWxlPT09by5TVFlMRS5CQVJDT0xPUnx8dGhpcy5zdHlsZT09PW8uU1RZTEUuQkFSU0laRSlmb3IoaT10aGlzLmRhdGFQb2ludHMubGVuZ3RoLTE7aT49MDtpLS0pe249dGhpcy5kYXRhUG9pbnRzW2ldO3ZhciBoPW4uc3VyZmFjZXM7aWYoaClmb3IodmFyIGQ9aC5sZW5ndGgtMTtkPj0wO2QtLSl7dmFyIGw9aFtkXSxjPWwuY29ybmVycyxwPVtjWzBdLnNjcmVlbixjWzFdLnNjcmVlbixjWzJdLnNjcmVlbl0sZj1bY1syXS5zY3JlZW4sY1szXS5zY3JlZW4sY1swXS5zY3JlZW5dO2lmKHRoaXMuX2luc2lkZVRyaWFuZ2xlKGEscCl8fHRoaXMuX2luc2lkZVRyaWFuZ2xlKGEsZikpcmV0dXJuIG59fWVsc2UgZm9yKGk9MDtpPHRoaXMuZGF0YVBvaW50cy5sZW5ndGg7aSsrKXtuPXRoaXMuZGF0YVBvaW50c1tpXTt2YXIgbT1uLnNjcmVlbjtpZihtKXt2YXIgdj1NYXRoLmFicyh0LW0ueCksZz1NYXRoLmFicyhlLW0ueSkseT1NYXRoLnNxcnQodip2K2cqZyk7KG51bGw9PT1yfHx5PHIpJiZ5PDEwMCYmKHI9eSxzPW4pfX1yZXR1cm4gc30sby5wcm90b3R5cGUuaGFzQmFycz1mdW5jdGlvbih0KXtyZXR1cm4gdD09by5TVFlMRS5CQVJ8fHQ9PW8uU1RZTEUuQkFSQ09MT1J8fHQ9PW8uU1RZTEUuQkFSU0laRX0sby5wcm90b3R5cGUuX3Nob3dUb29sdGlwPWZ1bmN0aW9uKHQpe3ZhciBlLGksbzt0aGlzLnRvb2x0aXA/KGU9dGhpcy50b29sdGlwLmRvbS5jb250ZW50LGk9dGhpcy50b29sdGlwLmRvbS5saW5lLG89dGhpcy50b29sdGlwLmRvbS5kb3QpOihlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLCgwLGEuZGVmYXVsdCkoZS5zdHlsZSx7fSx0aGlzLnRvb2x0aXBTdHlsZS5jb250ZW50KSxlLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSwoMCxhLmRlZmF1bHQpKGkuc3R5bGUse30sdGhpcy50b29sdGlwU3R5bGUubGluZSksaS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksKDAsYS5kZWZhdWx0KShvLnN0eWxlLHt9LHRoaXMudG9vbHRpcFN0eWxlLmRvdCksby5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHRoaXMudG9vbHRpcD17ZGF0YVBvaW50Om51bGwsZG9tOntjb250ZW50OmUsbGluZTppLGRvdDpvfX0pLHRoaXMuX2hpZGVUb29sdGlwKCksdGhpcy50b29sdGlwLmRhdGFQb2ludD10LCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnNob3dUb29sdGlwP2UuaW5uZXJIVE1MPXRoaXMuc2hvd1Rvb2x0aXAodC5wb2ludCk6ZS5pbm5lckhUTUw9Ijx0YWJsZT48dHI+PHRkPiIrdGhpcy54TGFiZWwrIjo8L3RkPjx0ZD4iK3QucG9pbnQueCsiPC90ZD48L3RyPjx0cj48dGQ+Iit0aGlzLnlMYWJlbCsiOjwvdGQ+PHRkPiIrdC5wb2ludC55KyI8L3RkPjwvdHI+PHRyPjx0ZD4iK3RoaXMuekxhYmVsKyI6PC90ZD48dGQ+Iit0LnBvaW50LnorIjwvdGQ+PC90cj48L3RhYmxlPiIsZS5zdHlsZS5sZWZ0PSIwIixlLnN0eWxlLnRvcD0iMCIsdGhpcy5mcmFtZS5hcHBlbmRDaGlsZChlKSx0aGlzLmZyYW1lLmFwcGVuZENoaWxkKGkpLHRoaXMuZnJhbWUuYXBwZW5kQ2hpbGQobyk7dmFyIG49ZS5vZmZzZXRXaWR0aCxzPWUub2Zmc2V0SGVpZ2h0LHI9aS5vZmZzZXRIZWlnaHQsaD1vLm9mZnNldFdpZHRoLGQ9by5vZmZzZXRIZWlnaHQsbD10LnNjcmVlbi54LW4vMjtsPU1hdGgubWluKE1hdGgubWF4KGwsMTApLHRoaXMuZnJhbWUuY2xpZW50V2lkdGgtMTAtbiksaS5zdHlsZS5sZWZ0PXQuc2NyZWVuLngrInB4IixpLnN0eWxlLnRvcD10LnNjcmVlbi55LXIrInB4IixlLnN0eWxlLmxlZnQ9bCsicHgiLGUuc3R5bGUudG9wPXQuc2NyZWVuLnktci1zKyJweCIsby5zdHlsZS5sZWZ0PXQuc2NyZWVuLngtaC8yKyJweCIsby5zdHlsZS50b3A9dC5zY3JlZW4ueS1kLzIrInB4In0sby5wcm90b3R5cGUuX2hpZGVUb29sdGlwPWZ1bmN0aW9uKCl7aWYodGhpcy50b29sdGlwKXt0aGlzLnRvb2x0aXAuZGF0YVBvaW50PW51bGw7Zm9yKHZhciB0IGluIHRoaXMudG9vbHRpcC5kb20paWYodGhpcy50b29sdGlwLmRvbS5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIGU9dGhpcy50b29sdGlwLmRvbVt0XTtlJiZlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX19fSxvLnByb3RvdHlwZS5zZXRDYW1lcmFQb3NpdGlvbj1mdW5jdGlvbih0KXttLnNldENhbWVyYVBvc2l0aW9uKHQsdGhpcyksdGhpcy5yZWRyYXcoKX0sby5wcm90b3R5cGUuc2V0U2l6ZT1mdW5jdGlvbih0LGUpe3RoaXMuX3NldFNpemUodCxlKSx0aGlzLnJlZHJhdygpfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLGkpe3QuZXhwb3J0cz17ZGVmYXVsdDppKDk2KSxfX2VzTW9kdWxlOiEwfX0sZnVuY3Rpb24odCxlLGkpe2koOTcpLHQuZXhwb3J0cz1pKDE3KS5PYmplY3QuYXNzaWdufSxmdW5jdGlvbih0LGUsaSl7dmFyIG89aSgxNSk7byhvLlMrby5GLCJPYmplY3QiLHthc3NpZ246aSg5OCl9KX0sZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkoMzUpLG49aSg3Mykscz1pKDc0KSxyPWkoNDkpLGE9aSgxMCksaD1PYmplY3QuYXNzaWduO3QuZXhwb3J0cz0haHx8aSgyNikoZnVuY3Rpb24oKXt2YXIgdD17fSxlPXt9LGk9U3ltYm9sKCksbz0iYWJjZGVmZ2hpamtsbW5vcHFyc3QiO3JldHVybiB0W2ldPTcsby5zcGxpdCgiIikuZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPXR9KSw3IT1oKHt9LHQpW2ldfHxPYmplY3Qua2V5cyhoKHt9LGUpKS5qb2luKCIiKSE9b30pP2Z1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXIodCksaD1hcmd1bWVudHMubGVuZ3RoLGQ9MSxsPW4uZix1PXMuZjtoPmQ7KWZvcih2YXIgYyxwPWEoYXJndW1lbnRzW2QrK10pLGY9bD9vKHApLmNvbmNhdChsKHApKTpvKHApLG09Zi5sZW5ndGgsdj0wO20+djspdS5jYWxsKHAsYz1mW3YrK10pJiYoaVtjXT1wW2NdKTtyZXR1cm4gaX06aH0sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKHQpe2lmKHQpcmV0dXJuIG8odCl9ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGUgaW4gaS5wcm90b3R5cGUpdFtlXT1pLnByb3RvdHlwZVtlXTtyZXR1cm4gdH10LmV4cG9ydHM9aSxpLnByb3RvdHlwZS5vbj1pLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7DQpyZXR1cm4gdGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrc3x8e30sKHRoaXMuX2NhbGxiYWNrc1t0XT10aGlzLl9jYWxsYmFja3NbdF18fFtdKS5wdXNoKGUpLHRoaXN9LGkucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKCl7by5vZmYodCxpKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgbz10aGlzO3JldHVybiB0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzfHx7fSxpLmZuPWUsdGhpcy5vbih0LGkpLHRoaXN9LGkucHJvdG90eXBlLm9mZj1pLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1pLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9aS5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe2lmKHRoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9LDA9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuX2NhbGxiYWNrcz17fSx0aGlzO3ZhciBpPXRoaXMuX2NhbGxiYWNrc1t0XTtpZighaSlyZXR1cm4gdGhpcztpZigxPT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkZWxldGUgdGhpcy5fY2FsbGJhY2tzW3RdLHRoaXM7Zm9yKHZhciBvLG49MDtuPGkubGVuZ3RoO24rKylpZigobz1pW25dKT09PWV8fG8uZm49PT1lKXtpLnNwbGljZShuLDEpO2JyZWFrfXJldHVybiB0aGlzfSxpLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKHQpe3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9O3ZhciBlPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLGk9dGhpcy5fY2FsbGJhY2tzW3RdO2lmKGkpe2k9aS5zbGljZSgwKTtmb3IodmFyIG89MCxuPWkubGVuZ3RoO288bjsrK28paVtvXS5hcHBseSh0aGlzLGUpfXJldHVybiB0aGlzfSxpLnByb3RvdHlwZS5saXN0ZW5lcnM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9LHRoaXMuX2NhbGxiYWNrc1t0XXx8W119LGkucHJvdG90eXBlLmhhc0xpc3RlbmVycz1mdW5jdGlvbih0KXtyZXR1cm4hIXRoaXMubGlzdGVuZXJzKHQpLmxlbmd0aH19LGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSh0LGUsaSl7dGhpcy54PXZvaWQgMCE9PXQ/dDowLHRoaXMueT12b2lkIDAhPT1lP2U6MCx0aGlzLno9dm9pZCAwIT09aT9pOjB9aS5zdWJ0cmFjdD1mdW5jdGlvbih0LGUpe3ZhciBvPW5ldyBpO3JldHVybiBvLng9dC54LWUueCxvLnk9dC55LWUueSxvLno9dC56LWUueixvfSxpLmFkZD1mdW5jdGlvbih0LGUpe3ZhciBvPW5ldyBpO3JldHVybiBvLng9dC54K2UueCxvLnk9dC55K2UueSxvLno9dC56K2UueixvfSxpLmF2Zz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgaSgodC54K2UueCkvMiwodC55K2UueSkvMiwodC56K2UueikvMil9LGkuY3Jvc3NQcm9kdWN0PWZ1bmN0aW9uKHQsZSl7dmFyIG89bmV3IGk7cmV0dXJuIG8ueD10LnkqZS56LXQueiplLnksby55PXQueiplLngtdC54KmUueixvLno9dC54KmUueS10LnkqZS54LG99LGkucHJvdG90eXBlLmxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnopfSx0LmV4cG9ydHM9aX0sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKHQsZSl7dGhpcy54PXZvaWQgMCE9PXQ/dDowLHRoaXMueT12b2lkIDAhPT1lP2U6MH10LmV4cG9ydHM9aX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8oKXt0aGlzLmFybUxvY2F0aW9uPW5ldyByLHRoaXMuYXJtUm90YXRpb249e30sdGhpcy5hcm1Sb3RhdGlvbi5ob3Jpem9udGFsPTAsdGhpcy5hcm1Sb3RhdGlvbi52ZXJ0aWNhbD0wLHRoaXMuYXJtTGVuZ3RoPTEuNyx0aGlzLmNhbWVyYU9mZnNldD1uZXcgcix0aGlzLm9mZnNldE11bHRpcGxpZXI9LjYsdGhpcy5jYW1lcmFMb2NhdGlvbj1uZXcgcix0aGlzLmNhbWVyYVJvdGF0aW9uPW5ldyByKC41Kk1hdGguUEksMCwwKSx0aGlzLmNhbGN1bGF0ZUNhbWVyYU9yaWVudGF0aW9uKCl9dmFyIG49aSgxMDMpLHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fShuKSxyPWkoMTAwKTtvLnByb3RvdHlwZS5zZXRPZmZzZXQ9ZnVuY3Rpb24odCxlKXt2YXIgaT1NYXRoLmFicyxvPXMuZGVmYXVsdCxuPXRoaXMub2Zmc2V0TXVsdGlwbGllcixyPXRoaXMuYXJtTGVuZ3RoKm47aSh0KT5yJiYodD1vKHQpKnIpLGkoZSk+ciYmKGU9byhlKSpyKSx0aGlzLmNhbWVyYU9mZnNldC54PXQsdGhpcy5jYW1lcmFPZmZzZXQueT1lLHRoaXMuY2FsY3VsYXRlQ2FtZXJhT3JpZW50YXRpb24oKX0sby5wcm90b3R5cGUuZ2V0T2Zmc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY2FtZXJhT2Zmc2V0fSxvLnByb3RvdHlwZS5zZXRBcm1Mb2NhdGlvbj1mdW5jdGlvbih0LGUsaSl7dGhpcy5hcm1Mb2NhdGlvbi54PXQsdGhpcy5hcm1Mb2NhdGlvbi55PWUsdGhpcy5hcm1Mb2NhdGlvbi56PWksdGhpcy5jYWxjdWxhdGVDYW1lcmFPcmllbnRhdGlvbigpfSxvLnByb3RvdHlwZS5zZXRBcm1Sb3RhdGlvbj1mdW5jdGlvbih0LGUpe3ZvaWQgMCE9PXQmJih0aGlzLmFybVJvdGF0aW9uLmhvcml6b250YWw9dCksdm9pZCAwIT09ZSYmKHRoaXMuYXJtUm90YXRpb24udmVydGljYWw9ZSx0aGlzLmFybVJvdGF0aW9uLnZlcnRpY2FsPDAmJih0aGlzLmFybVJvdGF0aW9uLnZlcnRpY2FsPTApLHRoaXMuYXJtUm90YXRpb24udmVydGljYWw+LjUqTWF0aC5QSSYmKHRoaXMuYXJtUm90YXRpb24udmVydGljYWw9LjUqTWF0aC5QSSkpLHZvaWQgMD09PXQmJnZvaWQgMD09PWV8fHRoaXMuY2FsY3VsYXRlQ2FtZXJhT3JpZW50YXRpb24oKX0sby5wcm90b3R5cGUuZ2V0QXJtUm90YXRpb249ZnVuY3Rpb24oKXt2YXIgdD17fTtyZXR1cm4gdC5ob3Jpem9udGFsPXRoaXMuYXJtUm90YXRpb24uaG9yaXpvbnRhbCx0LnZlcnRpY2FsPXRoaXMuYXJtUm90YXRpb24udmVydGljYWwsdH0sby5wcm90b3R5cGUuc2V0QXJtTGVuZ3RoPWZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXQmJih0aGlzLmFybUxlbmd0aD10LHRoaXMuYXJtTGVuZ3RoPC43MSYmKHRoaXMuYXJtTGVuZ3RoPS43MSksdGhpcy5hcm1MZW5ndGg+NSYmKHRoaXMuYXJtTGVuZ3RoPTUpLHRoaXMuc2V0T2Zmc2V0KHRoaXMuY2FtZXJhT2Zmc2V0LngsdGhpcy5jYW1lcmFPZmZzZXQueSksdGhpcy5jYWxjdWxhdGVDYW1lcmFPcmllbnRhdGlvbigpKX0sby5wcm90b3R5cGUuZ2V0QXJtTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXJtTGVuZ3RofSxvLnByb3RvdHlwZS5nZXRDYW1lcmFMb2NhdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbWVyYUxvY2F0aW9ufSxvLnByb3RvdHlwZS5nZXRDYW1lcmFSb3RhdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbWVyYVJvdGF0aW9ufSxvLnByb3RvdHlwZS5jYWxjdWxhdGVDYW1lcmFPcmllbnRhdGlvbj1mdW5jdGlvbigpe3RoaXMuY2FtZXJhTG9jYXRpb24ueD10aGlzLmFybUxvY2F0aW9uLngtdGhpcy5hcm1MZW5ndGgqTWF0aC5zaW4odGhpcy5hcm1Sb3RhdGlvbi5ob3Jpem9udGFsKSpNYXRoLmNvcyh0aGlzLmFybVJvdGF0aW9uLnZlcnRpY2FsKSx0aGlzLmNhbWVyYUxvY2F0aW9uLnk9dGhpcy5hcm1Mb2NhdGlvbi55LXRoaXMuYXJtTGVuZ3RoKk1hdGguY29zKHRoaXMuYXJtUm90YXRpb24uaG9yaXpvbnRhbCkqTWF0aC5jb3ModGhpcy5hcm1Sb3RhdGlvbi52ZXJ0aWNhbCksdGhpcy5jYW1lcmFMb2NhdGlvbi56PXRoaXMuYXJtTG9jYXRpb24ueit0aGlzLmFybUxlbmd0aCpNYXRoLnNpbih0aGlzLmFybVJvdGF0aW9uLnZlcnRpY2FsKSx0aGlzLmNhbWVyYVJvdGF0aW9uLng9TWF0aC5QSS8yLXRoaXMuYXJtUm90YXRpb24udmVydGljYWwsdGhpcy5jYW1lcmFSb3RhdGlvbi55PTAsdGhpcy5jYW1lcmFSb3RhdGlvbi56PS10aGlzLmFybVJvdGF0aW9uLmhvcml6b250YWw7dmFyIHQ9dGhpcy5jYW1lcmFSb3RhdGlvbi54LGU9KHRoaXMuY2FtZXJhUm90YXRpb24ueSx0aGlzLmNhbWVyYVJvdGF0aW9uLnopLGk9dGhpcy5jYW1lcmFPZmZzZXQueCxvPXRoaXMuY2FtZXJhT2Zmc2V0Lnksbj1NYXRoLnNpbixzPU1hdGguY29zO3RoaXMuY2FtZXJhTG9jYXRpb24ueD10aGlzLmNhbWVyYUxvY2F0aW9uLngraSpzKGUpK28qLW4oZSkqcyh0KSx0aGlzLmNhbWVyYUxvY2F0aW9uLnk9dGhpcy5jYW1lcmFMb2NhdGlvbi55K2kqbihlKStvKnMoZSkqcyh0KSx0aGlzLmNhbWVyYUxvY2F0aW9uLno9dGhpcy5jYW1lcmFMb2NhdGlvbi56K28qbih0KX0sdC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSxpKXt0LmV4cG9ydHM9e2RlZmF1bHQ6aSgxMDQpLF9fZXNNb2R1bGU6ITB9fSxmdW5jdGlvbih0LGUsaSl7aSgxMDUpLHQuZXhwb3J0cz1pKDE3KS5NYXRoLnNpZ259LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDE1KTtvKG8uUywiTWF0aCIse3NpZ246aSgxMDYpfSl9LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPU1hdGguc2lnbnx8ZnVuY3Rpb24odCl7cmV0dXJuIDA9PSh0PSt0KXx8dCE9dD90OnQ8MD8tMToxfX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlLGkpe3RoaXMuZGF0YT10LmdldERhdGFTZXQoKSx0aGlzLmNvbHVtbj1lLHRoaXMuZ3JhcGg9aSx0aGlzLmluZGV4PXZvaWQgMCx0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLnZhbHVlcz10LmdldERpc3RpbmN0VmFsdWVzKHRoaXMuY29sdW1uKSx0aGlzLnZhbHVlcy5sZW5ndGg+MCYmdGhpcy5zZWxlY3RWYWx1ZSgwKSx0aGlzLmRhdGFQb2ludHM9W10sdGhpcy5sb2FkZWQ9ITEsdGhpcy5vbkxvYWRDYWxsYmFjaz12b2lkIDAsaS5hbmltYXRpb25QcmVsb2FkPyh0aGlzLmxvYWRlZD0hMSx0aGlzLmxvYWRJbkJhY2tncm91bmQoKSk6dGhpcy5sb2FkZWQ9ITB9dmFyIG49aSg5Myk7by5wcm90b3R5cGUuaXNMb2FkZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2FkZWR9LG8ucHJvdG90eXBlLmdldExvYWRlZFByb2dyZXNzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudmFsdWVzLmxlbmd0aCxlPTA7dGhpcy5kYXRhUG9pbnRzW2VdOyllKys7cmV0dXJuIE1hdGgucm91bmQoZS90KjEwMCl9LG8ucHJvdG90eXBlLmdldExhYmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ3JhcGguZmlsdGVyTGFiZWx9LG8ucHJvdG90eXBlLmdldENvbHVtbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbHVtbn0sby5wcm90b3R5cGUuZ2V0U2VsZWN0ZWRWYWx1ZT1mdW5jdGlvbigpe2lmKHZvaWQgMCE9PXRoaXMuaW5kZXgpcmV0dXJuIHRoaXMudmFsdWVzW3RoaXMuaW5kZXhdfSxvLnByb3RvdHlwZS5nZXRWYWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZXN9LG8ucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQpe2lmKHQ+PXRoaXMudmFsdWVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO3JldHVybiB0aGlzLnZhbHVlc1t0XX0sby5wcm90b3R5cGUuX2dldERhdGFQb2ludHM9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dCYmKHQ9dGhpcy5pbmRleCksdm9pZCAwPT09dClyZXR1cm5bXTt2YXIgZTtpZih0aGlzLmRhdGFQb2ludHNbdF0pZT10aGlzLmRhdGFQb2ludHNbdF07ZWxzZXt2YXIgaT17fTtpLmNvbHVtbj10aGlzLmNvbHVtbixpLnZhbHVlPXRoaXMudmFsdWVzW3RdO3ZhciBvPW5ldyBuKHRoaXMuZGF0YSx7ZmlsdGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0W2kuY29sdW1uXT09aS52YWx1ZX19KS5nZXQoKTtlPXRoaXMuZ3JhcGguX2dldERhdGFQb2ludHMobyksdGhpcy5kYXRhUG9pbnRzW3RdPWV9cmV0dXJuIGV9LG8ucHJvdG90eXBlLnNldE9uTG9hZENhbGxiYWNrPWZ1bmN0aW9uKHQpe3RoaXMub25Mb2FkQ2FsbGJhY2s9dH0sby5wcm90b3R5cGUuc2VsZWN0VmFsdWU9ZnVuY3Rpb24odCl7aWYodD49dGhpcy52YWx1ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7dGhpcy5pbmRleD10LHRoaXMudmFsdWU9dGhpcy52YWx1ZXNbdF19LG8ucHJvdG90eXBlLmxvYWRJbkJhY2tncm91bmQ9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9MCk7dmFyIGU9dGhpcy5ncmFwaC5mcmFtZTtpZih0PHRoaXMudmFsdWVzLmxlbmd0aCl7dGhpcy5fZ2V0RGF0YVBvaW50cyh0KTt2b2lkIDA9PT1lLnByb2dyZXNzJiYoZS5wcm9ncmVzcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSxlLnByb2dyZXNzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsZS5wcm9ncmVzcy5zdHlsZS5jb2xvcj0iZ3JheSIsZS5hcHBlbmRDaGlsZChlLnByb2dyZXNzKSk7dmFyIGk9dGhpcy5nZXRMb2FkZWRQcm9ncmVzcygpO2UucHJvZ3Jlc3MuaW5uZXJIVE1MPSJMb2FkaW5nIGFuaW1hdGlvbi4uLiAiK2krIiUiLGUucHJvZ3Jlc3Muc3R5bGUuYm90dG9tPSI2MHB4IixlLnByb2dyZXNzLnN0eWxlLmxlZnQ9IjEwcHgiO3ZhciBvPXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe28ubG9hZEluQmFja2dyb3VuZCh0KzEpfSwxMCksdGhpcy5sb2FkZWQ9ITF9ZWxzZSB0aGlzLmxvYWRlZD0hMCx2b2lkIDAhPT1lLnByb2dyZXNzJiYoZS5yZW1vdmVDaGlsZChlLnByb2dyZXNzKSxlLnByb2dyZXNzPXZvaWQgMCksdGhpcy5vbkxvYWRDYWxsYmFjayYmdGhpcy5vbkxvYWRDYWxsYmFjaygpfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlKXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBFcnJvcigiTm8gY29udGFpbmVyIGVsZW1lbnQgZGVmaW5lZCIpO2lmKHRoaXMuY29udGFpbmVyPXQsdGhpcy52aXNpYmxlPSFlfHx2b2lkIDA9PWUudmlzaWJsZXx8ZS52aXNpYmxlLHRoaXMudmlzaWJsZSl7dGhpcy5mcmFtZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSx0aGlzLmZyYW1lLnN0eWxlLndpZHRoPSIxMDAlIix0aGlzLmZyYW1lLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5mcmFtZSksdGhpcy5mcmFtZS5wcmV2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIklOUFVUIiksdGhpcy5mcmFtZS5wcmV2LnR5cGU9IkJVVFRPTiIsdGhpcy5mcmFtZS5wcmV2LnZhbHVlPSJQcmV2Iix0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMuZnJhbWUucHJldiksdGhpcy5mcmFtZS5wbGF5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIklOUFVUIiksdGhpcy5mcmFtZS5wbGF5LnR5cGU9IkJVVFRPTiIsdGhpcy5mcmFtZS5wbGF5LnZhbHVlPSJQbGF5Iix0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMuZnJhbWUucGxheSksdGhpcy5mcmFtZS5uZXh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIklOUFVUIiksdGhpcy5mcmFtZS5uZXh0LnR5cGU9IkJVVFRPTiIsdGhpcy5mcmFtZS5uZXh0LnZhbHVlPSJOZXh0Iix0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMuZnJhbWUubmV4dCksdGhpcy5mcmFtZS5iYXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiSU5QVVQiKSx0aGlzLmZyYW1lLmJhci50eXBlPSJCVVRUT04iLHRoaXMuZnJhbWUuYmFyLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdGhpcy5mcmFtZS5iYXIuc3R5bGUuYm9yZGVyPSIxcHggc29saWQgcmVkIix0aGlzLmZyYW1lLmJhci5zdHlsZS53aWR0aD0iMTAwcHgiLHRoaXMuZnJhbWUuYmFyLnN0eWxlLmhlaWdodD0iNnB4Iix0aGlzLmZyYW1lLmJhci5zdHlsZS5ib3JkZXJSYWRpdXM9IjJweCIsdGhpcy5mcmFtZS5iYXIuc3R5bGUuTW96Qm9yZGVyUmFkaXVzPSIycHgiLHRoaXMuZnJhbWUuYmFyLnN0eWxlLmJvcmRlcj0iMXB4IHNvbGlkICM3RjdGN0YiLHRoaXMuZnJhbWUuYmFyLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iI0U1RTVFNSIsdGhpcy5mcmFtZS5hcHBlbmRDaGlsZCh0aGlzLmZyYW1lLmJhciksdGhpcy5mcmFtZS5zbGlkZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJJTlBVVCIpLHRoaXMuZnJhbWUuc2xpZGUudHlwZT0iQlVUVE9OIix0aGlzLmZyYW1lLnNsaWRlLnN0eWxlLm1hcmdpbj0iMHB4Iix0aGlzLmZyYW1lLnNsaWRlLnZhbHVlPSIgIix0aGlzLmZyYW1lLnNsaWRlLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsdGhpcy5mcmFtZS5zbGlkZS5zdHlsZS5sZWZ0PSItMTAwcHgiLHRoaXMuZnJhbWUuYXBwZW5kQ2hpbGQodGhpcy5mcmFtZS5zbGlkZSk7dmFyIGk9dGhpczt0aGlzLmZyYW1lLnNsaWRlLm9ubW91c2Vkb3duPWZ1bmN0aW9uKHQpe2kuX29uTW91c2VEb3duKHQpfSx0aGlzLmZyYW1lLnByZXYub25jbGljaz1mdW5jdGlvbih0KXtpLnByZXYodCl9LHRoaXMuZnJhbWUucGxheS5vbmNsaWNrPWZ1bmN0aW9uKHQpe2kudG9nZ2xlUGxheSh0KX0sdGhpcy5mcmFtZS5uZXh0Lm9uY2xpY2s9ZnVuY3Rpb24odCl7aS5uZXh0KHQpfX10aGlzLm9uQ2hhbmdlQ2FsbGJhY2s9dm9pZCAwLHRoaXMudmFsdWVzPVtdLHRoaXMuaW5kZXg9dm9pZCAwLHRoaXMucGxheVRpbWVvdXQ9dm9pZCAwLHRoaXMucGxheUludGVydmFsPTFlMyx0aGlzLnBsYXlMb29wPSEwfXZhciBuPWkoMSk7by5wcm90b3R5cGUucHJldj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0SW5kZXgoKTt0PjAmJih0LS0sdGhpcy5zZXRJbmRleCh0KSl9LG8ucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldEluZGV4KCk7dDx0aGlzLnZhbHVlcy5sZW5ndGgtMSYmKHQrKyx0aGlzLnNldEluZGV4KHQpKX0sby5wcm90b3R5cGUucGxheU5leHQ9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgRGF0ZSxlPXRoaXMuZ2V0SW5kZXgoKTtlPHRoaXMudmFsdWVzLmxlbmd0aC0xPyhlKyssdGhpcy5zZXRJbmRleChlKSk6dGhpcy5wbGF5TG9vcCYmKGU9MCx0aGlzLnNldEluZGV4KGUpKTt2YXIgaT1uZXcgRGF0ZSxvPWktdCxuPU1hdGgubWF4KHRoaXMucGxheUludGVydmFsLW8sMCkscz10aGlzO3RoaXMucGxheVRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3MucGxheU5leHQoKX0sbil9LG8ucHJvdG90eXBlLnRvZ2dsZVBsYXk9ZnVuY3Rpb24oKXt2b2lkIDA9PT10aGlzLnBsYXlUaW1lb3V0P3RoaXMucGxheSgpOnRoaXMuc3RvcCgpfSxvLnByb3RvdHlwZS5wbGF5PWZ1bmN0aW9uKCl7dGhpcy5wbGF5VGltZW91dHx8KHRoaXMucGxheU5leHQoKSx0aGlzLmZyYW1lJiYodGhpcy5mcmFtZS5wbGF5LnZhbHVlPSJTdG9wIikpfSxvLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbCh0aGlzLnBsYXlUaW1lb3V0KSx0aGlzLnBsYXlUaW1lb3V0PXZvaWQgMCx0aGlzLmZyYW1lJiYodGhpcy5mcmFtZS5wbGF5LnZhbHVlPSJQbGF5Iil9LG8ucHJvdG90eXBlLnNldE9uQ2hhbmdlQ2FsbGJhY2s9ZnVuY3Rpb24odCl7dGhpcy5vbkNoYW5nZUNhbGxiYWNrPXR9LG8ucHJvdG90eXBlLnNldFBsYXlJbnRlcnZhbD1mdW5jdGlvbih0KXt0aGlzLnBsYXlJbnRlcnZhbD10fSxvLnByb3RvdHlwZS5nZXRQbGF5SW50ZXJ2YWw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGxheUludGVydmFsfSxvLnByb3RvdHlwZS5zZXRQbGF5TG9vcD1mdW5jdGlvbih0KXt0aGlzLnBsYXlMb29wPXR9LG8ucHJvdG90eXBlLm9uQ2hhbmdlPWZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5vbkNoYW5nZUNhbGxiYWNrJiZ0aGlzLm9uQ2hhbmdlQ2FsbGJhY2soKX0sby5wcm90b3R5cGUucmVkcmF3PWZ1bmN0aW9uKCl7aWYodGhpcy5mcmFtZSl7dGhpcy5mcmFtZS5iYXIuc3R5bGUudG9wPXRoaXMuZnJhbWUuY2xpZW50SGVpZ2h0LzItdGhpcy5mcmFtZS5iYXIub2Zmc2V0SGVpZ2h0LzIrInB4Iix0aGlzLmZyYW1lLmJhci5zdHlsZS53aWR0aD10aGlzLmZyYW1lLmNsaWVudFdpZHRoLXRoaXMuZnJhbWUucHJldi5jbGllbnRXaWR0aC10aGlzLmZyYW1lLnBsYXkuY2xpZW50V2lkdGgtdGhpcy5mcmFtZS5uZXh0LmNsaWVudFdpZHRoLTMwKyJweCI7dmFyIHQ9dGhpcy5pbmRleFRvTGVmdCh0aGlzLmluZGV4KTt0aGlzLmZyYW1lLnNsaWRlLnN0eWxlLmxlZnQ9dCsicHgifX0sby5wcm90b3R5cGUuc2V0VmFsdWVzPWZ1bmN0aW9uKHQpe3RoaXMudmFsdWVzPXQsdGhpcy52YWx1ZXMubGVuZ3RoPjA/dGhpcy5zZXRJbmRleCgwKTp0aGlzLmluZGV4PXZvaWQgMH0sby5wcm90b3R5cGUuc2V0SW5kZXg9ZnVuY3Rpb24odCl7aWYoISh0PHRoaXMudmFsdWVzLmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTt0aGlzLmluZGV4PXQsdGhpcy5yZWRyYXcoKSx0aGlzLm9uQ2hhbmdlKCl9LG8ucHJvdG90eXBlLmdldEluZGV4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXh9LG8ucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlc1t0aGlzLmluZGV4XX0sby5wcm90b3R5cGUuX29uTW91c2VEb3duPWZ1bmN0aW9uKHQpe2lmKHQud2hpY2g/MT09PXQud2hpY2g6MT09PXQuYnV0dG9uKXt0aGlzLnN0YXJ0Q2xpZW50WD10LmNsaWVudFgsdGhpcy5zdGFydFNsaWRlWD1wYXJzZUZsb2F0KHRoaXMuZnJhbWUuc2xpZGUuc3R5bGUubGVmdCksdGhpcy5mcmFtZS5zdHlsZS5jdXJzb3I9Im1vdmUiO3ZhciBlPXRoaXM7dGhpcy5vbm1vdXNlbW92ZT1mdW5jdGlvbih0KXtlLl9vbk1vdXNlTW92ZSh0KX0sdGhpcy5vbm1vdXNldXA9ZnVuY3Rpb24odCl7ZS5fb25Nb3VzZVVwKHQpfSxuLmFkZEV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIm1vdXNlbW92ZSIsdGhpcy5vbm1vdXNlbW92ZSksbi5hZGRFdmVudExpc3RlbmVyKGRvY3VtZW50LCJtb3VzZXVwIix0aGlzLm9ubW91c2V1cCksbi5wcmV2ZW50RGVmYXVsdCh0KX19LG8ucHJvdG90eXBlLmxlZnRUb0luZGV4PWZ1bmN0aW9uKHQpe3ZhciBlPXBhcnNlRmxvYXQodGhpcy5mcmFtZS5iYXIuc3R5bGUud2lkdGgpLXRoaXMuZnJhbWUuc2xpZGUuY2xpZW50V2lkdGgtMTAsaT10LTMsbz1NYXRoLnJvdW5kKGkvZSoodGhpcy52YWx1ZXMubGVuZ3RoLTEpKTtyZXR1cm4gbzwwJiYobz0wKSxvPnRoaXMudmFsdWVzLmxlbmd0aC0xJiYobz10aGlzLnZhbHVlcy5sZW5ndGgtMSksb30sby5wcm90b3R5cGUuaW5kZXhUb0xlZnQ9ZnVuY3Rpb24odCl7dmFyIGU9cGFyc2VGbG9hdCh0aGlzLmZyYW1lLmJhci5zdHlsZS53aWR0aCktdGhpcy5mcmFtZS5zbGlkZS5jbGllbnRXaWR0aC0xMDtyZXR1cm4gdC8odGhpcy52YWx1ZXMubGVuZ3RoLTEpKmUrM30sby5wcm90b3R5cGUuX29uTW91c2VNb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXQuY2xpZW50WC10aGlzLnN0YXJ0Q2xpZW50WCxpPXRoaXMuc3RhcnRTbGlkZVgrZSxvPXRoaXMubGVmdFRvSW5kZXgoaSk7dGhpcy5zZXRJbmRleChvKSxuLnByZXZlbnREZWZhdWx0KCl9LG8ucHJvdG90eXBlLl9vbk1vdXNlVXA9ZnVuY3Rpb24odCl7dGhpcy5mcmFtZS5zdHlsZS5jdXJzb3I9ImF1dG8iLG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwibW91c2Vtb3ZlIix0aGlzLm9ubW91c2Vtb3ZlKSxuLnJlbW92ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIm1vdXNldXAiLHRoaXMub25tb3VzZXVwKSxuLnByZXZlbnREZWZhdWx0KCl9LHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkodCxlLGksbyl7dGhpcy5fc3RhcnQ9MCx0aGlzLl9lbmQ9MCx0aGlzLl9zdGVwPTEsdGhpcy5wcmV0dHlTdGVwPSEwLHRoaXMucHJlY2lzaW9uPTUsdGhpcy5fY3VycmVudD0wLHRoaXMuc2V0UmFuZ2UodCxlLGksbyl9aS5wcm90b3R5cGUuaXNOdW1lcmljPWZ1bmN0aW9uKHQpe3JldHVybiFpc05hTihwYXJzZUZsb2F0KHQpKSYmaXNGaW5pdGUodCl9LGkucHJvdG90eXBlLnNldFJhbmdlPWZ1bmN0aW9uKHQsZSxpLG8pe2lmKCF0aGlzLmlzTnVtZXJpYyh0KSl0aHJvdyBuZXcgRXJyb3IoIlBhcmFtZXRlciAnc3RhcnQnIGlzIG5vdCBudW1lcmljOyB2YWx1ZTogIit0KTtpZighdGhpcy5pc051bWVyaWMoZSkpdGhyb3cgbmV3IEVycm9yKCJQYXJhbWV0ZXIgJ2VuZCcgaXMgbm90IG51bWVyaWM7IHZhbHVlOiAiK3QpO2lmKCF0aGlzLmlzTnVtZXJpYyhpKSl0aHJvdyBuZXcgRXJyb3IoIlBhcmFtZXRlciAnc3RlcCcgaXMgbm90IG51bWVyaWM7IHZhbHVlOiAiK3QpO3RoaXMuX3N0YXJ0PXR8fDAsdGhpcy5fZW5kPWV8fDAsdGhpcy5zZXRTdGVwKGksbyl9LGkucHJvdG90eXBlLnNldFN0ZXA9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10fHx0PD0wfHwodm9pZCAwIT09ZSYmKHRoaXMucHJldHR5U3RlcD1lKSwhMD09PXRoaXMucHJldHR5U3RlcD90aGlzLl9zdGVwPWkuY2FsY3VsYXRlUHJldHR5U3RlcCh0KTp0aGlzLl9zdGVwPXQpfSxpLmNhbGN1bGF0ZVByZXR0eVN0ZXA9ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubG9nKHQpL01hdGguTE4xMH0saT1NYXRoLnBvdygxMCxNYXRoLnJvdW5kKGUodCkpKSxvPTIqTWF0aC5wb3coMTAsTWF0aC5yb3VuZChlKHQvMikpKSxuPTUqTWF0aC5wb3coMTAsTWF0aC5yb3VuZChlKHQvNSkpKSxzPWk7cmV0dXJuIE1hdGguYWJzKG8tdCk8PU1hdGguYWJzKHMtdCkmJihzPW8pLE1hdGguYWJzKG4tdCk8PU1hdGguYWJzKHMtdCkmJihzPW4pLHM8PTAmJihzPTEpLHN9LGkucHJvdG90eXBlLmdldEN1cnJlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gcGFyc2VGbG9hdCh0aGlzLl9jdXJyZW50LnRvUHJlY2lzaW9uKHRoaXMucHJlY2lzaW9uKSl9LGkucHJvdG90eXBlLmdldFN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RlcH0saS5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ITEpLHRoaXMuX2N1cnJlbnQ9dGhpcy5fc3RhcnQtdGhpcy5fc3RhcnQldGhpcy5fc3RlcCx0JiZ0aGlzLmdldEN1cnJlbnQoKTx0aGlzLl9zdGFydCYmdGhpcy5uZXh0KCl9LGkucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt0aGlzLl9jdXJyZW50Kz10aGlzLl9zdGVwfSxpLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3VycmVudD50aGlzLl9lbmR9LHQuZXhwb3J0cz1pfSxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkoKXt0aGlzLm1pbj12b2lkIDAsdGhpcy5tYXg9dm9pZCAwfWkucHJvdG90eXBlLmFkanVzdD1mdW5jdGlvbih0KXt2b2lkIDAhPT10JiYoKHZvaWQgMD09PXRoaXMubWlufHx0aGlzLm1pbj50KSYmKHRoaXMubWluPXQpLCh2b2lkIDA9PT10aGlzLm1heHx8dGhpcy5tYXg8dCkmJih0aGlzLm1heD10KSl9LGkucHJvdG90eXBlLmNvbWJpbmU9ZnVuY3Rpb24odCl7dGhpcy5hZGQodC5taW4pLHRoaXMuYWRkKHQubWF4KX0saS5wcm90b3R5cGUuZXhwYW5kPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQpe3ZhciBlPXRoaXMubWluLXQsaT10aGlzLm1heCt0O2lmKGU+aSl0aHJvdyBuZXcgRXJyb3IoIlBhc3NlZCBleHBhbnNpb24gdmFsdWUgbWFrZXMgcmFuZ2UgaW52YWxpZCIpO3RoaXMubWluPWUsdGhpcy5tYXg9aX19LGkucHJvdG90eXBlLnJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF4LXRoaXMubWlufSxpLnByb3RvdHlwZS5jZW50ZXI9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5taW4rdGhpcy5tYXgpLzJ9LHQuZXhwb3J0cz1pfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGUgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGUpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIG4odCl7cmV0dXJuIHZvaWQgMD09PXR8fCIiPT09dHx8InN0cmluZyIhPXR5cGVvZiB0P3Q6dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gdm9pZCAwPT09dHx8IiI9PT10P2U6dCtuKGUpfWZ1bmN0aW9uIHIodCxlLGksbyl7dmFyIG4scjtmb3IodmFyIGEgaW4gaSluPWlbYV0scj1zKG8sbiksZVtyXT10W25dfWZ1bmN0aW9uIGEodCxlLGksbyl7dmFyIG4scjtmb3IodmFyIGEgaW4gaSluPWlbYV0sdm9pZCAwIT09dFtuXSYmKHI9cyhvLG4pLGVbcl09dFtuXSl9ZnVuY3Rpb24gaCh0LGUpe2lmKHZvaWQgMD09PXR8fG8odCkpdGhyb3cgbmV3IEVycm9yKCJObyBERUZBVUxUUyBwYXNzZWQiKTtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcigiTm8gZHN0IHBhc3NlZCIpO089dCxyKHQsZSxNKSxyKHQsZSxTLCJkZWZhdWx0IiksbCh0LGUpLGUubWFyZ2luPTEwLGUuc2hvd0dyYXlCb3R0b209ITEsZS5zaG93VG9vbHRpcD0hMSxlLm9uY2xpY2tfY2FsbGJhY2s9bnVsbCxlLmV5ZT1uZXcgeCgwLDAsLTEpfWZ1bmN0aW9uIGQodCxlKXtpZih2b2lkIDAhPT10KXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcigiTm8gZHN0IHBhc3NlZCIpO2lmKHZvaWQgMD09PU98fG8oTykpdGhyb3cgbmV3IEVycm9yKCJERUZBVUxUUyBub3Qgc2V0IGZvciBtb2R1bGUgU2V0dGluZ3MiKTthKHQsZSxNKSxhKHQsZSxTLCJkZWZhdWx0IiksbCh0LGUpfX1mdW5jdGlvbiBsKHQsZSl7dm9pZCAwIT09dC5iYWNrZ3JvdW5kQ29sb3ImJm0odC5iYWNrZ3JvdW5kQ29sb3IsZSksdih0LmRhdGFDb2xvcixlKSxmKHQuc3R5bGUsZSksdSh0LnNob3dMZWdlbmQsZSksZyh0LmNhbWVyYVBvc2l0aW9uLGUpLHZvaWQgMCE9PXQudG9vbHRpcCYmKGUuc2hvd1Rvb2x0aXA9dC50b29sdGlwKSx2b2lkIDAhPXQub25jbGljayYmKGUub25jbGlja19jYWxsYmFjaz10Lm9uY2xpY2spLHZvaWQgMCE9PXQudG9vbHRpcFN0eWxlJiZfLnNlbGVjdGl2ZURlZXBFeHRlbmQoWyJ0b29sdGlwU3R5bGUiXSxlLHQpfWZ1bmN0aW9uIHUodCxlKXtpZih2b2lkIDA9PT10KXtpZih2b2lkIDA9PT1PLnNob3dMZWdlbmQpe3ZhciBpPWUuc3R5bGU9PT1rLkRPVENPTE9SfHxlLnN0eWxlPT09ay5ET1RTSVpFO2Uuc2hvd0xlZ2VuZD1pfX1lbHNlIGUuc2hvd0xlZ2VuZD10fWZ1bmN0aW9uIGModCl7dmFyIGU9RFt0XTtyZXR1cm4gdm9pZCAwPT09ZT8tMTplfWZ1bmN0aW9uIHAodCl7dmFyIGU9ITE7Zm9yKHZhciBpIGluIGspaWYoa1tpXT09PXQpe2U9ITA7YnJlYWt9cmV0dXJuIGV9ZnVuY3Rpb24gZih0LGUpe2lmKHZvaWQgMCE9PXQpe3ZhciBpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7aWYoLTE9PT0oaT1jKHQpKSl0aHJvdyBuZXcgRXJyb3IoIlN0eWxlICciK3QrIicgaXMgaW52YWxpZCIpfWVsc2V7aWYoIXAodCkpdGhyb3cgbmV3IEVycm9yKCJTdHlsZSAnIit0KyInIGlzIGludmFsaWQiKTtpPXR9ZS5zdHlsZT1pfX1mdW5jdGlvbiBtKHQsZSl7dmFyIGk9IndoaXRlIixvPSJncmF5IixuPTE7aWYoInN0cmluZyI9PXR5cGVvZiB0KWk9dCxvPSJub25lIixuPTA7ZWxzZXtpZigib2JqZWN0IiE9PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOigwLGIuZGVmYXVsdCkodCkpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgdHlwZSBvZiBiYWNrZ3JvdW5kQ29sb3IiKTt2b2lkIDAhPT10LmZpbGwmJihpPXQuZmlsbCksdm9pZCAwIT09dC5zdHJva2UmJihvPXQuc3Ryb2tlKSx2b2lkIDAhPT10LnN0cm9rZVdpZHRoJiYobj10LnN0cm9rZVdpZHRoKX1lLmZyYW1lLnN0eWxlLmJhY2tncm91bmRDb2xvcj1pLGUuZnJhbWUuc3R5bGUuYm9yZGVyQ29sb3I9byxlLmZyYW1lLnN0eWxlLmJvcmRlcldpZHRoPW4rInB4IixlLmZyYW1lLnN0eWxlLmJvcmRlclN0eWxlPSJzb2xpZCJ9ZnVuY3Rpb24gdih0LGUpe3ZvaWQgMCE9PXQmJih2b2lkIDA9PT1lLmRhdGFDb2xvciYmKGUuZGF0YUNvbG9yPXt9KSwic3RyaW5nIj09dHlwZW9mIHQ/KGUuZGF0YUNvbG9yLmZpbGw9dCxlLmRhdGFDb2xvci5zdHJva2U9dCk6KHQuZmlsbCYmKGUuZGF0YUNvbG9yLmZpbGw9dC5maWxsKSx0LnN0cm9rZSYmKGUuZGF0YUNvbG9yLnN0cm9rZT10LnN0cm9rZSksdm9pZCAwIT09dC5zdHJva2VXaWR0aCYmKGUuZGF0YUNvbG9yLnN0cm9rZVdpZHRoPXQuc3Ryb2tlV2lkdGgpKSl9ZnVuY3Rpb24gZyh0LGUpe3ZhciBpPXQ7dm9pZCAwIT09aSYmKHZvaWQgMD09PWUuY2FtZXJhJiYoZS5jYW1lcmE9bmV3IHcpLGUuY2FtZXJhLnNldEFybVJvdGF0aW9uKGkuaG9yaXpvbnRhbCxpLnZlcnRpY2FsKSxlLmNhbWVyYS5zZXRBcm1MZW5ndGgoaS5kaXN0YW5jZSkpfXZhciB5PWkoNjIpLGI9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fSh5KSxfPWkoMSksdz1pKDEwMikseD1pKDEwMCksaz17QkFSOjAsQkFSQ09MT1I6MSxCQVJTSVpFOjIsRE9UOjMsRE9UTElORTo0LERPVENPTE9SOjUsRE9UU0laRTo2LEdSSUQ6NyxMSU5FOjgsU1VSRkFDRTo5fSxEPXtkb3Q6ay5ET1QsImRvdC1saW5lIjprLkRPVExJTkUsImRvdC1jb2xvciI6ay5ET1RDT0xPUiwiZG90LXNpemUiOmsuRE9UU0laRSxsaW5lOmsuTElORSxncmlkOmsuR1JJRCxzdXJmYWNlOmsuU1VSRkFDRSxiYXI6ay5CQVIsImJhci1jb2xvciI6ay5CQVJDT0xPUiwiYmFyLXNpemUiOmsuQkFSU0laRX0sTT1bIndpZHRoIiwiaGVpZ2h0IiwiZmlsdGVyTGFiZWwiLCJsZWdlbmRMYWJlbCIsInhMYWJlbCIsInlMYWJlbCIsInpMYWJlbCIsInhWYWx1ZUxhYmVsIiwieVZhbHVlTGFiZWwiLCJ6VmFsdWVMYWJlbCIsInNob3dYQXhpcyIsInNob3dZQXhpcyIsInNob3daQXhpcyIsInNob3dHcmlkIiwic2hvd1BlcnNwZWN0aXZlIiwic2hvd1NoYWRvdyIsImtlZXBBc3BlY3RSYXRpbyIsInZlcnRpY2FsUmF0aW8iLCJkb3RTaXplUmF0aW8iLCJkb3RTaXplTWluRnJhY3Rpb24iLCJkb3RTaXplTWF4RnJhY3Rpb24iLCJzaG93QW5pbWF0aW9uQ29udHJvbHMiLCJhbmltYXRpb25JbnRlcnZhbCIsImFuaW1hdGlvblByZWxvYWQiLCJhbmltYXRpb25BdXRvU3RhcnQiLCJheGlzQ29sb3IiLCJncmlkQ29sb3IiLCJ4Q2VudGVyIiwieUNlbnRlciJdLFM9WyJ4QmFyV2lkdGgiLCJ5QmFyV2lkdGgiLCJ2YWx1ZU1pbiIsInZhbHVlTWF4IiwieE1pbiIsInhNYXgiLCJ4U3RlcCIsInlNaW4iLCJ5TWF4IiwieVN0ZXAiLCJ6TWluIiwiek1heCIsInpTdGVwIl0sTz12b2lkIDA7dC5leHBvcnRzLlNUWUxFPWssdC5leHBvcnRzLnNldERlZmF1bHRzPWgsdC5leHBvcnRzLnNldE9wdGlvbnM9ZCx0LmV4cG9ydHMuc2V0Q2FtZXJhUG9zaXRpb249Z30sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8oKXt0aGlzLmRhdGFUYWJsZT1udWxsfXZhciBuPWkoODkpLHM9aSg5Mykscj0oaSgxMDApLGkoMTEwKSk7by5wcm90b3R5cGUuaW5pdGlhbGl6ZURhdGE9ZnVuY3Rpb24odCxlLGkpe2lmKHRoaXMuZGF0YVNldCYmdGhpcy5kYXRhU2V0Lm9mZigiKiIsdGhpcy5fb25DaGFuZ2UpLHZvaWQgMCE9PWUpe0FycmF5LmlzQXJyYXkoZSkmJihlPW5ldyBuKGUpKTt2YXIgbztpZighKGUgaW5zdGFuY2VvZiBufHxlIGluc3RhbmNlb2YgcykpdGhyb3cgbmV3IEVycm9yKCJBcnJheSwgRGF0YVNldCwgb3IgRGF0YVZpZXcgZXhwZWN0ZWQiKTtpZihvPWUuZ2V0KCksMCE9by5sZW5ndGgpe3RoaXMuZGF0YVNldD1lLHRoaXMuZGF0YVRhYmxlPW87dmFyIHI9dGhpczt0aGlzLl9vbkNoYW5nZT1mdW5jdGlvbigpe3Quc2V0RGF0YShyLmRhdGFTZXQpfSx0aGlzLmRhdGFTZXQub24oIioiLHRoaXMuX29uQ2hhbmdlKSx0aGlzLmNvbFg9IngiLHRoaXMuY29sWT0ieSIsdGhpcy5jb2xaPSJ6Ijt2YXIgYT10Lmhhc0JhcnMoaSk7aWYoYSYmKHZvaWQgMCE9PXQuZGVmYXVsdFhCYXJXaWR0aD90aGlzLnhCYXJXaWR0aD10LmRlZmF1bHRYQmFyV2lkdGg6dGhpcy54QmFyV2lkdGg9dGhpcy5nZXRTbWFsbGVzdERpZmZlcmVuY2Uobyx0aGlzLmNvbFgpfHwxLHZvaWQgMCE9PXQuZGVmYXVsdFlCYXJXaWR0aD90aGlzLnlCYXJXaWR0aD10LmRlZmF1bHRZQmFyV2lkdGg6dGhpcy55QmFyV2lkdGg9dGhpcy5nZXRTbWFsbGVzdERpZmZlcmVuY2Uobyx0aGlzLmNvbFkpfHwxKSx0aGlzLl9pbml0aWFsaXplUmFuZ2Uobyx0aGlzLmNvbFgsdCxhKSx0aGlzLl9pbml0aWFsaXplUmFuZ2Uobyx0aGlzLmNvbFksdCxhKSx0aGlzLl9pbml0aWFsaXplUmFuZ2Uobyx0aGlzLmNvbFosdCwhMSksb1swXS5oYXNPd25Qcm9wZXJ0eSgic3R5bGUiKSl7dGhpcy5jb2xWYWx1ZT0ic3R5bGUiO3ZhciBoPXRoaXMuZ2V0Q29sdW1uUmFuZ2Uobyx0aGlzLmNvbFZhbHVlKTt0aGlzLl9zZXRSYW5nZURlZmF1bHRzKGgsdC5kZWZhdWx0VmFsdWVNaW4sdC5kZWZhdWx0VmFsdWVNYXgpLHRoaXMudmFsdWVSYW5nZT1ofX19fSxvLnByb3RvdHlwZS5fY29sbGVjdFJhbmdlU2V0dGluZ3M9ZnVuY3Rpb24odCxlKXtpZigtMT09WyJ4IiwieSIsInoiXS5pbmRleE9mKHQpKXRocm93IG5ldyBFcnJvcigiQ29sdW1uICciK3QrIicgaW52YWxpZCIpO3ZhciBpPXQudG9VcHBlckNhc2UoKTtyZXR1cm57YmFyV2lkdGg6dGhpc1t0KyJCYXJXaWR0aCJdLG1pbjplWyJkZWZhdWx0IitpKyJNaW4iXSxtYXg6ZVsiZGVmYXVsdCIraSsiTWF4Il0sc3RlcDplWyJkZWZhdWx0IitpKyJTdGVwIl0scmFuZ2VfbGFiZWw6dCsiUmFuZ2UiLHN0ZXBfbGFiZWw6dCsiU3RlcCJ9fSxvLnByb3RvdHlwZS5faW5pdGlhbGl6ZVJhbmdlPWZ1bmN0aW9uKHQsZSxpLG8pe3ZhciBuPXRoaXMuX2NvbGxlY3RSYW5nZVNldHRpbmdzKGUsaSkscz10aGlzLmdldENvbHVtblJhbmdlKHQsZSk7byYmInoiIT1lJiZzLmV4cGFuZChuLmJhcldpZHRoLzIpLHRoaXMuX3NldFJhbmdlRGVmYXVsdHMocyxuLm1pbixuLm1heCksdGhpc1tuLnJhbmdlX2xhYmVsXT1zLHRoaXNbbi5zdGVwX2xhYmVsXT12b2lkIDAhPT1uLnN0ZXA/bi5zdGVwOnMucmFuZ2UoKS81fSxvLnByb3RvdHlwZS5nZXREaXN0aW5jdFZhbHVlcz1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPXRoaXMuZGF0YVRhYmxlKTtmb3IodmFyIGk9W10sbz0wO288ZS5sZW5ndGg7bysrKXt2YXIgbj1lW29dW3RdfHwwOy0xPT09aS5pbmRleE9mKG4pJiZpLnB1c2gobil9cmV0dXJuIGkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KX0sby5wcm90b3R5cGUuZ2V0U21hbGxlc3REaWZmZXJlbmNlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXRoaXMuZ2V0RGlzdGluY3RWYWx1ZXModCxlKSxvPW51bGwsbj0xO248aS5sZW5ndGg7bisrKXt2YXIgcz1pW25dLWlbbi0xXTsobnVsbD09b3x8bz5zKSYmKG89cyl9cmV0dXJuIG99LG8ucHJvdG90eXBlLmdldENvbHVtblJhbmdlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPW5ldyByLG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIG49dFtvXVtlXTtpLmFkanVzdChuKX1yZXR1cm4gaX0sby5wcm90b3R5cGUuZ2V0TnVtYmVyT2ZSb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YVRhYmxlLmxlbmd0aH0sby5wcm90b3R5cGUuX3NldFJhbmdlRGVmYXVsdHM9ZnVuY3Rpb24odCxlLGkpe3ZvaWQgMCE9PWUmJih0Lm1pbj1lKSx2b2lkIDAhPT1pJiYodC5tYXg9aSksdC5tYXg8PXQubWluJiYodC5tYXg9dC5taW4rMSl9LG8ucHJvdG90eXBlLmdldERhdGFUYWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGFUYWJsZX0sby5wcm90b3R5cGUuZ2V0RGF0YVNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGFTZXR9LG8ucHJvdG90eXBlLnJlbG9hZD1mdW5jdGlvbigpe3RoaXMuZGF0YVRhYmxlJiZ0aGlzLnNldERhdGEodGhpcy5kYXRhVGFibGUpfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLGkpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93KXt2YXIgbz1pKDExNCksbj13aW5kb3cuSGFtbWVyfHxpKDExNSk7dC5leHBvcnRzPW8obix7cHJldmVudERlZmF1bHQ6Im1vdXNlIn0pfWVsc2UgdC5leHBvcnRzPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoImhhbW1lci5qcyBpcyBvbmx5IGF2YWlsYWJsZSBpbiBhIGJyb3dzZXIsIG5vdCBpbiBub2RlLmpzLiIpfX0sZnVuY3Rpb24odCxlLGkpe3ZhciBvLG4sczshZnVuY3Rpb24oaSl7bj1bXSxvPWksdm9pZCAwIT09KHM9ImZ1bmN0aW9uIj09dHlwZW9mIG8/by5hcHBseShlLG4pOm8pJiYodC5leHBvcnRzPXMpfShmdW5jdGlvbigpe3ZhciB0PW51bGw7cmV0dXJuIGZ1bmN0aW9uIGUoaSxvKXtmdW5jdGlvbiBuKHQpe3JldHVybiB0Lm1hdGNoKC9bXiBdKy9nKX1mdW5jdGlvbiBzKGUpe2lmKCJoYW1tZXIuaW5wdXQiIT09ZS50eXBlKXtpZihlLnNyY0V2ZW50Ll9oYW5kbGVkfHwoZS5zcmNFdmVudC5faGFuZGxlZD17fSksZS5zcmNFdmVudC5faGFuZGxlZFtlLnR5cGVdKXJldHVybjtlLnNyY0V2ZW50Ll9oYW5kbGVkW2UudHlwZV09ITB9dmFyIGk9ITE7ZS5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oKXtpPSEwfTt2YXIgbz1lLnNyY0V2ZW50LnN0b3BQcm9wYWdhdGlvbi5iaW5kKGUuc3JjRXZlbnQpOyJmdW5jdGlvbiI9PXR5cGVvZiBvJiYoZS5zcmNFdmVudC5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oKXtvKCksZS5zdG9wUHJvcGFnYXRpb24oKX0pLGUuZmlyc3RUYXJnZXQ9dDtmb3IodmFyIG49dDtuJiYhaTspe3ZhciBzPW4uaGFtbWVyO2lmKHMpZm9yKHZhciByLGE9MDthPHMubGVuZ3RoO2ErKylpZihyPXNbYV0uX2hhbmRsZXJzW2UudHlwZV0pZm9yKHZhciBoPTA7aDxyLmxlbmd0aCYmIWk7aCsrKXJbaF0oZSk7bj1uLnBhcmVudE5vZGV9fXZhciByPW98fHtwcmV2ZW50RGVmYXVsdDohMX07aWYoaS5NYW5hZ2VyKXt2YXIgYT1pLGg9ZnVuY3Rpb24odCxpKXt2YXIgbz1PYmplY3QuY3JlYXRlKHIpO3JldHVybiBpJiZhLmFzc2lnbihvLGkpLGUobmV3IGEodCxvKSxvKX07cmV0dXJuIGEuYXNzaWduKGgsYSksaC5NYW5hZ2VyPWZ1bmN0aW9uKHQsaSl7dmFyIG89T2JqZWN0LmNyZWF0ZShyKTtyZXR1cm4gaSYmYS5hc3NpZ24obyxpKSxlKG5ldyBhLk1hbmFnZXIodCxvKSxvKX0saH12YXIgZD1PYmplY3QuY3JlYXRlKGkpLGw9aS5lbGVtZW50O3JldHVybiBsLmhhbW1lcnx8KGwuaGFtbWVyPVtdKSxsLmhhbW1lci5wdXNoKGQpLGkub24oImhhbW1lci5pbnB1dCIsZnVuY3Rpb24oZSl7ITAhPT1yLnByZXZlbnREZWZhdWx0JiZyLnByZXZlbnREZWZhdWx0IT09ZS5wb2ludGVyVHlwZXx8ZS5wcmV2ZW50RGVmYXVsdCgpLGUuaXNGaXJzdCYmKHQ9ZS50YXJnZXQpfSksZC5faGFuZGxlcnM9e30sZC5vbj1mdW5jdGlvbih0LGUpe3JldHVybiBuKHQpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG89ZC5faGFuZGxlcnNbdF07b3x8KGQuX2hhbmRsZXJzW3RdPW89W10saS5vbih0LHMpKSxvLnB1c2goZSl9KSxkfSxkLm9mZj1mdW5jdGlvbih0LGUpe3JldHVybiBuKHQpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG89ZC5faGFuZGxlcnNbdF07byYmKG89ZT9vLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdCE9PWV9KTpbXSxvLmxlbmd0aD4wP2QuX2hhbmRsZXJzW3RdPW86KGkub2ZmKHQscyksZGVsZXRlIGQuX2hhbmRsZXJzW3RdKSl9KSxkfSxkLmVtaXQ9ZnVuY3Rpb24oZSxvKXt0PW8udGFyZ2V0LGkuZW1pdChlLG8pfSxkLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgdD1pLmVsZW1lbnQuaGFtbWVyLGU9dC5pbmRleE9mKGQpOy0xIT09ZSYmdC5zcGxpY2UoZSwxKSx0Lmxlbmd0aHx8ZGVsZXRlIGkuZWxlbWVudC5oYW1tZXIsZC5faGFuZGxlcnM9e30saS5kZXN0cm95KCl9LGR9fSl9LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbzshZnVuY3Rpb24obixzLHIsYSl7ZnVuY3Rpb24gaCh0LGUsaSl7cmV0dXJuIHNldFRpbWVvdXQocCh0LGkpLGUpfWZ1bmN0aW9uIGQodCxlLGkpe3JldHVybiEhQXJyYXkuaXNBcnJheSh0KSYmKGwodCxpW2VdLGkpLCEwKX1mdW5jdGlvbiBsKHQsZSxpKXt2YXIgbztpZih0KWlmKHQuZm9yRWFjaCl0LmZvckVhY2goZSxpKTtlbHNlIGlmKHQubGVuZ3RoIT09YSlmb3Iobz0wO288dC5sZW5ndGg7KWUuY2FsbChpLHRbb10sbyx0KSxvKys7ZWxzZSBmb3IobyBpbiB0KXQuaGFzT3duUHJvcGVydHkobykmJmUuY2FsbChpLHRbb10sbyx0KX1mdW5jdGlvbiB1KHQsZSxpKXt2YXIgbz0iREVQUkVDQVRFRCBNRVRIT0Q6ICIrZSsiXG4iK2krIiBBVCBcbiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9bmV3IEVycm9yKCJnZXQtc3RhY2stdHJhY2UiKSxpPWUmJmUuc3RhY2s/ZS5zdGFjay5yZXBsYWNlKC9eW15cKF0rP1tcbiRdL2dtLCIiKS5yZXBsYWNlKC9eXHMrYXRccysvZ20sIiIpLnJlcGxhY2UoL15PYmplY3QuPGFub255bW91cz5ccypcKC9nbSwie2Fub255bW91c30oKUAiKToiVW5rbm93biBTdGFjayBUcmFjZSIscz1uLmNvbnNvbGUmJihuLmNvbnNvbGUud2Fybnx8bi5jb25zb2xlLmxvZyk7cmV0dXJuIHMmJnMuY2FsbChuLmNvbnNvbGUsbyxpKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gYyh0LGUsaSl7dmFyIG8sbj1lLnByb3RvdHlwZTtvPXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobiksby5jb25zdHJ1Y3Rvcj10LG8uX3N1cGVyPW4saSYmZnQobyxpKX1mdW5jdGlvbiBwKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX1mdW5jdGlvbiBmKHQsZSl7cmV0dXJuIHR5cGVvZiB0PT1ndD90LmFwcGx5KGU/ZVswXXx8YTphLGUpOnR9ZnVuY3Rpb24gbSh0LGUpe3JldHVybiB0PT09YT9lOnR9ZnVuY3Rpb24gdih0LGUsaSl7bChfKGUpLGZ1bmN0aW9uKGUpe3QuYWRkRXZlbnRMaXN0ZW5lcihlLGksITEpfSl9ZnVuY3Rpb24gZyh0LGUsaSl7bChfKGUpLGZ1bmN0aW9uKGUpe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLGksITEpfSl9ZnVuY3Rpb24geSh0LGUpe2Zvcig7dDspe2lmKHQ9PWUpcmV0dXJuITA7dD10LnBhcmVudE5vZGV9cmV0dXJuITF9ZnVuY3Rpb24gYih0LGUpe3JldHVybiB0LmluZGV4T2YoZSk+LTF9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL1xzKy9nKX1mdW5jdGlvbiB3KHQsZSxpKXtpZih0LmluZGV4T2YmJiFpKXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDspe2lmKGkmJnRbb11baV09PWV8fCFpJiZ0W29dPT09ZSlyZXR1cm4gbztvKyt9cmV0dXJuLTF9ZnVuY3Rpb24geCh0KXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwKX1mdW5jdGlvbiBrKHQsZSxpKXtmb3IodmFyIG89W10sbj1bXSxzPTA7czx0Lmxlbmd0aDspe3ZhciByPWU/dFtzXVtlXTp0W3NdO3cobixyKTwwJiZvLnB1c2godFtzXSksbltzXT1yLHMrK31yZXR1cm4gaSYmKG89ZT9vLnNvcnQoZnVuY3Rpb24odCxpKXtyZXR1cm4gdFtlXT5pW2VdfSk6by5zb3J0KCkpLG99ZnVuY3Rpb24gRCh0LGUpe2Zvcih2YXIgaSxvLG49ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSkscz0wO3M8bXQubGVuZ3RoOyl7aWYoaT1tdFtzXSwobz1pP2krbjplKWluIHQpcmV0dXJuIG87cysrfXJldHVybiBhfWZ1bmN0aW9uIE0oKXtyZXR1cm4ga3QrK31mdW5jdGlvbiBTKHQpe3ZhciBlPXQub3duZXJEb2N1bWVudHx8dDtyZXR1cm4gZS5kZWZhdWx0Vmlld3x8ZS5wYXJlbnRXaW5kb3d8fG59ZnVuY3Rpb24gTyh0LGUpe3ZhciBpPXRoaXM7dGhpcy5tYW5hZ2VyPXQsdGhpcy5jYWxsYmFjaz1lLHRoaXMuZWxlbWVudD10LmVsZW1lbnQsdGhpcy50YXJnZXQ9dC5vcHRpb25zLmlucHV0VGFyZ2V0LHRoaXMuZG9tSGFuZGxlcj1mdW5jdGlvbihlKXtmKHQub3B0aW9ucy5lbmFibGUsW3RdKSYmaS5oYW5kbGVyKGUpfSx0aGlzLmluaXQoKX1mdW5jdGlvbiBDKHQpe3ZhciBlPXQub3B0aW9ucy5pbnB1dENsYXNzO3JldHVybiBuZXcoZXx8KFN0P1c6T3Q/VjpNdD9xOkgpKSh0LFQpfWZ1bmN0aW9uIFQodCxlLGkpe3ZhciBvPWkucG9pbnRlcnMubGVuZ3RoLG49aS5jaGFuZ2VkUG9pbnRlcnMubGVuZ3RoLHM9ZSZUdCYmby1uPT0wLHI9ZSYoUHR8SXQpJiZvLW49PTA7aS5pc0ZpcnN0PSEhcyxpLmlzRmluYWw9ISFyLHMmJih0LnNlc3Npb249e30pLGkuZXZlbnRUeXBlPWUsRSh0LGkpLHQuZW1pdCgiaGFtbWVyLmlucHV0IixpKSx0LnJlY29nbml6ZShpKSx0LnNlc3Npb24ucHJldklucHV0PWl9ZnVuY3Rpb24gRSh0LGUpe3ZhciBpPXQuc2Vzc2lvbixvPWUucG9pbnRlcnMsbj1vLmxlbmd0aDtpLmZpcnN0SW5wdXR8fChpLmZpcnN0SW5wdXQ9TihlKSksbj4xJiYhaS5maXJzdE11bHRpcGxlP2kuZmlyc3RNdWx0aXBsZT1OKGUpOjE9PT1uJiYoaS5maXJzdE11bHRpcGxlPSExKTt2YXIgcz1pLmZpcnN0SW5wdXQscj1pLmZpcnN0TXVsdGlwbGUsYT1yP3IuY2VudGVyOnMuY2VudGVyLGg9ZS5jZW50ZXI9QShvKTtlLnRpbWVTdGFtcD1fdCgpLGUuZGVsdGFUaW1lPWUudGltZVN0YW1wLXMudGltZVN0YW1wLGUuYW5nbGU9RihhLGgpLGUuZGlzdGFuY2U9TChhLGgpLFAoaSxlKSxlLm9mZnNldERpcmVjdGlvbj16KGUuZGVsdGFYLGUuZGVsdGFZKTt2YXIgZD1SKGUuZGVsdGFUaW1lLGUuZGVsdGFYLGUuZGVsdGFZKTtlLm92ZXJhbGxWZWxvY2l0eVg9ZC54LGUub3ZlcmFsbFZlbG9jaXR5WT1kLnksZS5vdmVyYWxsVmVsb2NpdHk9YnQoZC54KT5idChkLnkpP2QueDpkLnksZS5zY2FsZT1yP2ooci5wb2ludGVycyxvKToxLGUucm90YXRpb249cj9CKHIucG9pbnRlcnMsbyk6MCxlLm1heFBvaW50ZXJzPWkucHJldklucHV0P2UucG9pbnRlcnMubGVuZ3RoPmkucHJldklucHV0Lm1heFBvaW50ZXJzP2UucG9pbnRlcnMubGVuZ3RoOmkucHJldklucHV0Lm1heFBvaW50ZXJzOmUucG9pbnRlcnMubGVuZ3RoLEkoaSxlKTt2YXIgbD10LmVsZW1lbnQ7eShlLnNyY0V2ZW50LnRhcmdldCxsKSYmKGw9ZS5zcmNFdmVudC50YXJnZXQpLGUudGFyZ2V0PWx9ZnVuY3Rpb24gUCh0LGUpe3ZhciBpPWUuY2VudGVyLG89dC5vZmZzZXREZWx0YXx8e30sbj10LnByZXZEZWx0YXx8e30scz10LnByZXZJbnB1dHx8e307ZS5ldmVudFR5cGUhPT1UdCYmcy5ldmVudFR5cGUhPT1QdHx8KG49dC5wcmV2RGVsdGE9e3g6cy5kZWx0YVh8fDAseTpzLmRlbHRhWXx8MH0sbz10Lm9mZnNldERlbHRhPXt4OmkueCx5OmkueX0pLGUuZGVsdGFYPW4ueCsoaS54LW8ueCksZS5kZWx0YVk9bi55KyhpLnktby55KX1mdW5jdGlvbiBJKHQsZSl7dmFyIGksbyxuLHMscj10Lmxhc3RJbnRlcnZhbHx8ZSxoPWUudGltZVN0YW1wLXIudGltZVN0YW1wO2lmKGUuZXZlbnRUeXBlIT1JdCYmKGg+Q3R8fHIudmVsb2NpdHk9PT1hKSl7dmFyIGQ9ZS5kZWx0YVgtci5kZWx0YVgsbD1lLmRlbHRhWS1yLmRlbHRhWSx1PVIoaCxkLGwpO289dS54LG49dS55LGk9YnQodS54KT5idCh1LnkpP3UueDp1Lnkscz16KGQsbCksdC5sYXN0SW50ZXJ2YWw9ZX1lbHNlIGk9ci52ZWxvY2l0eSxvPXIudmVsb2NpdHlYLG49ci52ZWxvY2l0eVkscz1yLmRpcmVjdGlvbjtlLnZlbG9jaXR5PWksZS52ZWxvY2l0eVg9byxlLnZlbG9jaXR5WT1uLGUuZGlyZWN0aW9uPXN9ZnVuY3Rpb24gTih0KXtmb3IodmFyIGU9W10saT0wO2k8dC5wb2ludGVycy5sZW5ndGg7KWVbaV09e2NsaWVudFg6eXQodC5wb2ludGVyc1tpXS5jbGllbnRYKSxjbGllbnRZOnl0KHQucG9pbnRlcnNbaV0uY2xpZW50WSl9LGkrKztyZXR1cm57dGltZVN0YW1wOl90KCkscG9pbnRlcnM6ZSxjZW50ZXI6QShlKSxkZWx0YVg6dC5kZWx0YVgsZGVsdGFZOnQuZGVsdGFZfX1mdW5jdGlvbiBBKHQpe3ZhciBlPXQubGVuZ3RoO2lmKDE9PT1lKXJldHVybnt4Onl0KHRbMF0uY2xpZW50WCkseTp5dCh0WzBdLmNsaWVudFkpfTtmb3IodmFyIGk9MCxvPTAsbj0wO248ZTspaSs9dFtuXS5jbGllbnRYLG8rPXRbbl0uY2xpZW50WSxuKys7cmV0dXJue3g6eXQoaS9lKSx5Onl0KG8vZSl9fWZ1bmN0aW9uIFIodCxlLGkpe3JldHVybnt4OmUvdHx8MCx5OmkvdHx8MH19ZnVuY3Rpb24geih0LGUpe3JldHVybiB0PT09ZT9OdDpidCh0KT49YnQoZSk/dDwwP0F0OlJ0OmU8MD96dDpMdH1mdW5jdGlvbiBMKHQsZSxpKXtpfHwoaT1IdCk7dmFyIG89ZVtpWzBdXS10W2lbMF1dLG49ZVtpWzFdXS10W2lbMV1dO3JldHVybiBNYXRoLnNxcnQobypvK24qbil9ZnVuY3Rpb24gRih0LGUsaSl7aXx8KGk9SHQpO3ZhciBvPWVbaVswXV0tdFtpWzBdXSxuPWVbaVsxXV0tdFtpWzFdXTtyZXR1cm4gMTgwKk1hdGguYXRhbjIobixvKS9NYXRoLlBJfWZ1bmN0aW9uIEIodCxlKXtyZXR1cm4gRihlWzFdLGVbMF0sV3QpK0YodFsxXSx0WzBdLFd0KX1mdW5jdGlvbiBqKHQsZSl7cmV0dXJuIEwoZVswXSxlWzFdLFd0KS9MKHRbMF0sdFsxXSxXdCl9ZnVuY3Rpb24gSCgpe3RoaXMuZXZFbD1HdCx0aGlzLmV2V2luPVZ0LHRoaXMucHJlc3NlZD0hMSxPLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBXKCl7dGhpcy5ldkVsPVh0LHRoaXMuZXZXaW49WnQsTy5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5zdG9yZT10aGlzLm1hbmFnZXIuc2Vzc2lvbi5wb2ludGVyRXZlbnRzPVtdfWZ1bmN0aW9uIFkoKXt0aGlzLmV2VGFyZ2V0PUp0LHRoaXMuZXZXaW49UXQsdGhpcy5zdGFydGVkPSExLE8uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEcodCxlKXt2YXIgaT14KHQudG91Y2hlcyksbz14KHQuY2hhbmdlZFRvdWNoZXMpO3JldHVybiBlJihQdHxJdCkmJihpPWsoaS5jb25jYXQobyksImlkZW50aWZpZXIiLCEwKSksW2ksb119ZnVuY3Rpb24gVigpe3RoaXMuZXZUYXJnZXQ9dGUsdGhpcy50YXJnZXRJZHM9e30sTy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gVSh0LGUpe3ZhciBpPXgodC50b3VjaGVzKSxvPXRoaXMudGFyZ2V0SWRzO2lmKGUmKFR0fEV0KSYmMT09PWkubGVuZ3RoKXJldHVybiBvW2lbMF0uaWRlbnRpZmllcl09ITAsW2ksaV07dmFyIG4scyxyPXgodC5jaGFuZ2VkVG91Y2hlcyksYT1bXSxoPXRoaXMudGFyZ2V0O2lmKHM9aS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHkodC50YXJnZXQsaCl9KSxlPT09VHQpZm9yKG49MDtuPHMubGVuZ3RoOylvW3Nbbl0uaWRlbnRpZmllcl09ITAsbisrO2ZvcihuPTA7bjxyLmxlbmd0aDspb1tyW25dLmlkZW50aWZpZXJdJiZhLnB1c2gocltuXSksZSYoUHR8SXQpJiZkZWxldGUgb1tyW25dLmlkZW50aWZpZXJdLG4rKztyZXR1cm4gYS5sZW5ndGg/W2socy5jb25jYXQoYSksImlkZW50aWZpZXIiLCEwKSxhXTp2b2lkIDB9ZnVuY3Rpb24gcSgpe08uYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciB0PXAodGhpcy5oYW5kbGVyLHRoaXMpO3RoaXMudG91Y2g9bmV3IFYodGhpcy5tYW5hZ2VyLHQpLHRoaXMubW91c2U9bmV3IEgodGhpcy5tYW5hZ2VyLHQpLHRoaXMucHJpbWFyeVRvdWNoPW51bGwsdGhpcy5sYXN0VG91Y2hlcz1bXX1mdW5jdGlvbiBYKHQsZSl7dCZUdD8odGhpcy5wcmltYXJ5VG91Y2g9ZS5jaGFuZ2VkUG9pbnRlcnNbMF0uaWRlbnRpZmllcixaLmNhbGwodGhpcyxlKSk6dCYoUHR8SXQpJiZaLmNhbGwodGhpcyxlKX1mdW5jdGlvbiBaKHQpe3ZhciBlPXQuY2hhbmdlZFBvaW50ZXJzWzBdO2lmKGUuaWRlbnRpZmllcj09PXRoaXMucHJpbWFyeVRvdWNoKXt2YXIgaT17eDplLmNsaWVudFgseTplLmNsaWVudFl9O3RoaXMubGFzdFRvdWNoZXMucHVzaChpKTt2YXIgbz10aGlzLmxhc3RUb3VjaGVzLG49ZnVuY3Rpb24oKXt2YXIgdD1vLmluZGV4T2YoaSk7dD4tMSYmby5zcGxpY2UodCwxKX07c2V0VGltZW91dChuLGVlKX19ZnVuY3Rpb24gSyh0KXtmb3IodmFyIGU9dC5zcmNFdmVudC5jbGllbnRYLGk9dC5zcmNFdmVudC5jbGllbnRZLG89MDtvPHRoaXMubGFzdFRvdWNoZXMubGVuZ3RoO28rKyl7dmFyIG49dGhpcy5sYXN0VG91Y2hlc1tvXSxzPU1hdGguYWJzKGUtbi54KSxyPU1hdGguYWJzKGktbi55KTtpZihzPD1pZSYmcjw9aWUpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gSih0LGUpe3RoaXMubWFuYWdlcj10LHRoaXMuc2V0KGUpfWZ1bmN0aW9uIFEodCl7aWYoYih0LGFlKSlyZXR1cm4gYWU7dmFyIGU9Yih0LGhlKSxpPWIodCxkZSk7cmV0dXJuIGUmJmk/YWU6ZXx8aT9lP2hlOmRlOmIodCxyZSk/cmU6c2V9ZnVuY3Rpb24gJCh0KXt0aGlzLm9wdGlvbnM9ZnQoe30sdGhpcy5kZWZhdWx0cyx0fHx7fSksdGhpcy5pZD1NKCksdGhpcy5tYW5hZ2VyPW51bGwsdGhpcy5vcHRpb25zLmVuYWJsZT1tKHRoaXMub3B0aW9ucy5lbmFibGUsITApLHRoaXMuc3RhdGU9dWUsdGhpcy5zaW11bHRhbmVvdXM9e30sdGhpcy5yZXF1aXJlRmFpbD1bXX1mdW5jdGlvbiB0dCh0KXtyZXR1cm4gdCZ2ZT8iY2FuY2VsIjp0JmZlPyJlbmQiOnQmcGU/Im1vdmUiOnQmY2U/InN0YXJ0IjoiIn1mdW5jdGlvbiBldCh0KXtyZXR1cm4gdD09THQ/ImRvd24iOnQ9PXp0PyJ1cCI6dD09QXQ/ImxlZnQiOnQ9PVJ0PyJyaWdodCI6IiJ9ZnVuY3Rpb24gaXQodCxlKXt2YXIgaT1lLm1hbmFnZXI7cmV0dXJuIGk/aS5nZXQodCk6dH1mdW5jdGlvbiBvdCgpeyQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIG50KCl7b3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMucFg9bnVsbCx0aGlzLnBZPW51bGx9ZnVuY3Rpb24gc3QoKXtvdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcnQoKXskLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl90aW1lcj1udWxsLHRoaXMuX2lucHV0PW51bGx9ZnVuY3Rpb24gYXQoKXtvdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gaHQoKXtvdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gZHQoKXskLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLnBUaW1lPSExLHRoaXMucENlbnRlcj0hMSx0aGlzLl90aW1lcj1udWxsLHRoaXMuX2lucHV0PW51bGwsdGhpcy5jb3VudD0wfWZ1bmN0aW9uIGx0KHQsZSl7cmV0dXJuIGU9ZXx8e30sZS5yZWNvZ25pemVycz1tKGUucmVjb2duaXplcnMsbHQuZGVmYXVsdHMucHJlc2V0KSxuZXcgdXQodCxlKX1mdW5jdGlvbiB1dCh0LGUpe3RoaXMub3B0aW9ucz1mdCh7fSxsdC5kZWZhdWx0cyxlfHx7fSksdGhpcy5vcHRpb25zLmlucHV0VGFyZ2V0PXRoaXMub3B0aW9ucy5pbnB1dFRhcmdldHx8dCx0aGlzLmhhbmRsZXJzPXt9LHRoaXMuc2Vzc2lvbj17fSx0aGlzLnJlY29nbml6ZXJzPVtdLHRoaXMub2xkQ3NzUHJvcHM9e30sdGhpcy5lbGVtZW50PXQsdGhpcy5pbnB1dD1DKHRoaXMpLHRoaXMudG91Y2hBY3Rpb249bmV3IEoodGhpcyx0aGlzLm9wdGlvbnMudG91Y2hBY3Rpb24pLGN0KHRoaXMsITApLGwodGhpcy5vcHRpb25zLnJlY29nbml6ZXJzLGZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYWRkKG5ldyB0WzBdKHRbMV0pKTt0WzJdJiZlLnJlY29nbml6ZVdpdGgodFsyXSksdFszXSYmZS5yZXF1aXJlRmFpbHVyZSh0WzNdKX0sdGhpcyl9ZnVuY3Rpb24gY3QodCxlKXt2YXIgaT10LmVsZW1lbnQ7aWYoaS5zdHlsZSl7dmFyIG87bCh0Lm9wdGlvbnMuY3NzUHJvcHMsZnVuY3Rpb24obixzKXtvPUQoaS5zdHlsZSxzKSxlPyh0Lm9sZENzc1Byb3BzW29dPWkuc3R5bGVbb10saS5zdHlsZVtvXT1uKTppLnN0eWxlW29dPXQub2xkQ3NzUHJvcHNbb118fCIifSksZXx8KHQub2xkQ3NzUHJvcHM9e30pfX1mdW5jdGlvbiBwdCh0LGUpe3ZhciBpPXMuY3JlYXRlRXZlbnQoIkV2ZW50Iik7aS5pbml0RXZlbnQodCwhMCwhMCksaS5nZXN0dXJlPWUsZS50YXJnZXQuZGlzcGF0Y2hFdmVudChpKX12YXIgZnQsbXQ9WyIiLCJ3ZWJraXQiLCJNb3oiLCJNUyIsIm1zIiwibyJdLHZ0PXMuY3JlYXRlRWxlbWVudCgiZGl2IiksZ3Q9ImZ1bmN0aW9uIix5dD1NYXRoLnJvdW5kLGJ0PU1hdGguYWJzLF90PURhdGUubm93O2Z0PSJmdW5jdGlvbiIhPXR5cGVvZiBPYmplY3QuYXNzaWduP2Z1bmN0aW9uKHQpe2lmKHQ9PT1hfHxudWxsPT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QiKTtmb3IodmFyIGU9T2JqZWN0KHQpLGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXt2YXIgbz1hcmd1bWVudHNbaV07aWYobyE9PWEmJm51bGwhPT1vKWZvcih2YXIgbiBpbiBvKW8uaGFzT3duUHJvcGVydHkobikmJihlW25dPW9bbl0pfXJldHVybiBlfTpPYmplY3QuYXNzaWduO3ZhciB3dD11KGZ1bmN0aW9uKHQsZSxpKXtmb3IodmFyIG89T2JqZWN0LmtleXMoZSksbj0wO248by5sZW5ndGg7KSghaXx8aSYmdFtvW25dXT09PWEpJiYodFtvW25dXT1lW29bbl1dKSxuKys7cmV0dXJuIHR9LCJleHRlbmQiLCJVc2UgYGFzc2lnbmAuIikseHQ9dShmdW5jdGlvbih0LGUpe3JldHVybiB3dCh0LGUsITApfSwibWVyZ2UiLCJVc2UgYGFzc2lnbmAuIiksa3Q9MSxEdD0vbW9iaWxlfHRhYmxldHxpcChhZHxob25lfG9kKXxhbmRyb2lkL2ksTXQ9Im9udG91Y2hzdGFydCJpbiBuLFN0PUQobiwiUG9pbnRlckV2ZW50IikhPT1hLE90PU10JiZEdC50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLEN0PTI1LFR0PTEsRXQ9MixQdD00LEl0PTgsTnQ9MSxBdD0yLFJ0PTQsenQ9OCxMdD0xNixGdD1BdHxSdCxCdD16dHxMdCxqdD1GdHxCdCxIdD1bIngiLCJ5Il0sV3Q9WyJjbGllbnRYIiwiY2xpZW50WSJdO08ucHJvdG90eXBlPXtoYW5kbGVyOmZ1bmN0aW9uKCl7fSxpbml0OmZ1bmN0aW9uKCl7dGhpcy5ldkVsJiZ2KHRoaXMuZWxlbWVudCx0aGlzLmV2RWwsdGhpcy5kb21IYW5kbGVyKSx0aGlzLmV2VGFyZ2V0JiZ2KHRoaXMudGFyZ2V0LHRoaXMuZXZUYXJnZXQsdGhpcy5kb21IYW5kbGVyKSx0aGlzLmV2V2luJiZ2KFModGhpcy5lbGVtZW50KSx0aGlzLmV2V2luLHRoaXMuZG9tSGFuZGxlcil9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmV2RWwmJmcodGhpcy5lbGVtZW50LHRoaXMuZXZFbCx0aGlzLmRvbUhhbmRsZXIpLHRoaXMuZXZUYXJnZXQmJmcodGhpcy50YXJnZXQsdGhpcy5ldlRhcmdldCx0aGlzLmRvbUhhbmRsZXIpLHRoaXMuZXZXaW4mJmcoUyh0aGlzLmVsZW1lbnQpLHRoaXMuZXZXaW4sdGhpcy5kb21IYW5kbGVyKX19O3ZhciBZdD17bW91c2Vkb3duOlR0LG1vdXNlbW92ZTpFdCxtb3VzZXVwOlB0fSxHdD0ibW91c2Vkb3duIixWdD0ibW91c2Vtb3ZlIG1vdXNldXAiO2MoSCxPLHtoYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBlPVl0W3QudHlwZV07ZSZUdCYmMD09PXQuYnV0dG9uJiYodGhpcy5wcmVzc2VkPSEwKSxlJkV0JiYxIT09dC53aGljaCYmKGU9UHQpLHRoaXMucHJlc3NlZCYmKGUmUHQmJih0aGlzLnByZXNzZWQ9ITEpLHRoaXMuY2FsbGJhY2sodGhpcy5tYW5hZ2VyLGUse3BvaW50ZXJzOlt0XSxjaGFuZ2VkUG9pbnRlcnM6W3RdLHBvaW50ZXJUeXBlOiJtb3VzZSIsc3JjRXZlbnQ6dH0pKX19KTt2YXIgVXQ9e3BvaW50ZXJkb3duOlR0LHBvaW50ZXJtb3ZlOkV0LHBvaW50ZXJ1cDpQdCxwb2ludGVyY2FuY2VsOkl0LHBvaW50ZXJvdXQ6SXR9LHF0PXsyOiJ0b3VjaCIsMzoicGVuIiw0OiJtb3VzZSIsNToia2luZWN0In0sWHQ9InBvaW50ZXJkb3duIixadD0icG9pbnRlcm1vdmUgcG9pbnRlcnVwIHBvaW50ZXJjYW5jZWwiO24uTVNQb2ludGVyRXZlbnQmJiFuLlBvaW50ZXJFdmVudCYmKFh0PSJNU1BvaW50ZXJEb3duIixadD0iTVNQb2ludGVyTW92ZSBNU1BvaW50ZXJVcCBNU1BvaW50ZXJDYW5jZWwiKSxjKFcsTyx7aGFuZGxlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnN0b3JlLGk9ITEsbz10LnR5cGUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCJtcyIsIiIpLG49VXRbb10scz1xdFt0LnBvaW50ZXJUeXBlXXx8dC5wb2ludGVyVHlwZSxyPSJ0b3VjaCI9PXMsYT13KGUsdC5wb2ludGVySWQsInBvaW50ZXJJZCIpO24mVHQmJigwPT09dC5idXR0b258fHIpP2E8MCYmKGUucHVzaCh0KSxhPWUubGVuZ3RoLTEpOm4mKFB0fEl0KSYmKGk9ITApLGE8MHx8KGVbYV09dCx0aGlzLmNhbGxiYWNrKHRoaXMubWFuYWdlcixuLHtwb2ludGVyczplLGNoYW5nZWRQb2ludGVyczpbdF0scG9pbnRlclR5cGU6cyxzcmNFdmVudDp0fSksaSYmZS5zcGxpY2UoYSwxKSl9fSk7dmFyIEt0PXt0b3VjaHN0YXJ0OlR0LHRvdWNobW92ZTpFdCx0b3VjaGVuZDpQdCx0b3VjaGNhbmNlbDpJdH0sSnQ9InRvdWNoc3RhcnQiLFF0PSJ0b3VjaHN0YXJ0IHRvdWNobW92ZSB0b3VjaGVuZCB0b3VjaGNhbmNlbCI7YyhZLE8se2hhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGU9S3RbdC50eXBlXTtpZihlPT09VHQmJih0aGlzLnN0YXJ0ZWQ9ITApLHRoaXMuc3RhcnRlZCl7dmFyIGk9Ry5jYWxsKHRoaXMsdCxlKTtlJihQdHxJdCkmJmlbMF0ubGVuZ3RoLWlbMV0ubGVuZ3RoPT0wJiYodGhpcy5zdGFydGVkPSExKSx0aGlzLmNhbGxiYWNrKHRoaXMubWFuYWdlcixlLHtwb2ludGVyczppWzBdLGNoYW5nZWRQb2ludGVyczppWzFdLHBvaW50ZXJUeXBlOiJ0b3VjaCIsc3JjRXZlbnQ6dH0pfX19KTt2YXIgJHQ9e3RvdWNoc3RhcnQ6VHQsdG91Y2htb3ZlOkV0LHRvdWNoZW5kOlB0LHRvdWNoY2FuY2VsOkl0fSx0ZT0idG91Y2hzdGFydCB0b3VjaG1vdmUgdG91Y2hlbmQgdG91Y2hjYW5jZWwiO2MoVixPLHtoYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBlPSR0W3QudHlwZV0saT1VLmNhbGwodGhpcyx0LGUpO2kmJnRoaXMuY2FsbGJhY2sodGhpcy5tYW5hZ2VyLGUse3BvaW50ZXJzOmlbMF0sDQpjaGFuZ2VkUG9pbnRlcnM6aVsxXSxwb2ludGVyVHlwZToidG91Y2giLHNyY0V2ZW50OnR9KX19KTt2YXIgZWU9MjUwMCxpZT0yNTtjKHEsTyx7aGFuZGxlcjpmdW5jdGlvbih0LGUsaSl7dmFyIG89InRvdWNoIj09aS5wb2ludGVyVHlwZSxuPSJtb3VzZSI9PWkucG9pbnRlclR5cGU7aWYoIShuJiZpLnNvdXJjZUNhcGFiaWxpdGllcyYmaS5zb3VyY2VDYXBhYmlsaXRpZXMuZmlyZXNUb3VjaEV2ZW50cykpe2lmKG8pWC5jYWxsKHRoaXMsZSxpKTtlbHNlIGlmKG4mJksuY2FsbCh0aGlzLGkpKXJldHVybjt0aGlzLmNhbGxiYWNrKHQsZSxpKX19LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLnRvdWNoLmRlc3Ryb3koKSx0aGlzLm1vdXNlLmRlc3Ryb3koKX19KTt2YXIgb2U9RCh2dC5zdHlsZSwidG91Y2hBY3Rpb24iKSxuZT1vZSE9PWEsc2U9ImF1dG8iLHJlPSJtYW5pcHVsYXRpb24iLGFlPSJub25lIixoZT0icGFuLXgiLGRlPSJwYW4teSIsbGU9ZnVuY3Rpb24oKXtpZighbmUpcmV0dXJuITE7dmFyIHQ9e30sZT1uLkNTUyYmbi5DU1Muc3VwcG9ydHM7cmV0dXJuWyJhdXRvIiwibWFuaXB1bGF0aW9uIiwicGFuLXkiLCJwYW4teCIsInBhbi14IHBhbi15Iiwibm9uZSJdLmZvckVhY2goZnVuY3Rpb24oaSl7dFtpXT0hZXx8bi5DU1Muc3VwcG9ydHMoInRvdWNoLWFjdGlvbiIsaSl9KSx0fSgpO0oucHJvdG90eXBlPXtzZXQ6ZnVuY3Rpb24odCl7ImNvbXB1dGUiPT10JiYodD10aGlzLmNvbXB1dGUoKSksbmUmJnRoaXMubWFuYWdlci5lbGVtZW50LnN0eWxlJiZsZVt0XSYmKHRoaXMubWFuYWdlci5lbGVtZW50LnN0eWxlW29lXT10KSx0aGlzLmFjdGlvbnM9dC50b0xvd2VyQ2FzZSgpLnRyaW0oKX0sdXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5zZXQodGhpcy5tYW5hZ2VyLm9wdGlvbnMudG91Y2hBY3Rpb24pfSxjb21wdXRlOmZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIGwodGhpcy5tYW5hZ2VyLnJlY29nbml6ZXJzLGZ1bmN0aW9uKGUpe2YoZS5vcHRpb25zLmVuYWJsZSxbZV0pJiYodD10LmNvbmNhdChlLmdldFRvdWNoQWN0aW9uKCkpKX0pLFEodC5qb2luKCIgIikpfSxwcmV2ZW50RGVmYXVsdHM6ZnVuY3Rpb24odCl7dmFyIGU9dC5zcmNFdmVudCxpPXQub2Zmc2V0RGlyZWN0aW9uO2lmKHRoaXMubWFuYWdlci5zZXNzaW9uLnByZXZlbnRlZClyZXR1cm4gdm9pZCBlLnByZXZlbnREZWZhdWx0KCk7dmFyIG89dGhpcy5hY3Rpb25zLG49YihvLGFlKSYmIWxlW2FlXSxzPWIobyxkZSkmJiFsZVtkZV0scj1iKG8saGUpJiYhbGVbaGVdO2lmKG4pe3ZhciBhPTE9PT10LnBvaW50ZXJzLmxlbmd0aCxoPXQuZGlzdGFuY2U8MixkPXQuZGVsdGFUaW1lPDI1MDtpZihhJiZoJiZkKXJldHVybn1yZXR1cm4gciYmcz92b2lkIDA6bnx8cyYmaSZGdHx8ciYmaSZCdD90aGlzLnByZXZlbnRTcmMoZSk6dm9pZCAwfSxwcmV2ZW50U3JjOmZ1bmN0aW9uKHQpe3RoaXMubWFuYWdlci5zZXNzaW9uLnByZXZlbnRlZD0hMCx0LnByZXZlbnREZWZhdWx0KCl9fTt2YXIgdWU9MSxjZT0yLHBlPTQsZmU9OCxtZT1mZSx2ZT0xNjskLnByb3RvdHlwZT17ZGVmYXVsdHM6e30sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBmdCh0aGlzLm9wdGlvbnMsdCksdGhpcy5tYW5hZ2VyJiZ0aGlzLm1hbmFnZXIudG91Y2hBY3Rpb24udXBkYXRlKCksdGhpc30scmVjb2duaXplV2l0aDpmdW5jdGlvbih0KXtpZihkKHQsInJlY29nbml6ZVdpdGgiLHRoaXMpKXJldHVybiB0aGlzO3ZhciBlPXRoaXMuc2ltdWx0YW5lb3VzO3JldHVybiB0PWl0KHQsdGhpcyksZVt0LmlkXXx8KGVbdC5pZF09dCx0LnJlY29nbml6ZVdpdGgodGhpcykpLHRoaXN9LGRyb3BSZWNvZ25pemVXaXRoOmZ1bmN0aW9uKHQpe3JldHVybiBkKHQsImRyb3BSZWNvZ25pemVXaXRoIix0aGlzKT90aGlzOih0PWl0KHQsdGhpcyksZGVsZXRlIHRoaXMuc2ltdWx0YW5lb3VzW3QuaWRdLHRoaXMpfSxyZXF1aXJlRmFpbHVyZTpmdW5jdGlvbih0KXtpZihkKHQsInJlcXVpcmVGYWlsdXJlIix0aGlzKSlyZXR1cm4gdGhpczt2YXIgZT10aGlzLnJlcXVpcmVGYWlsO3JldHVybiB0PWl0KHQsdGhpcyksLTE9PT13KGUsdCkmJihlLnB1c2godCksdC5yZXF1aXJlRmFpbHVyZSh0aGlzKSksdGhpc30sZHJvcFJlcXVpcmVGYWlsdXJlOmZ1bmN0aW9uKHQpe2lmKGQodCwiZHJvcFJlcXVpcmVGYWlsdXJlIix0aGlzKSlyZXR1cm4gdGhpczt0PWl0KHQsdGhpcyk7dmFyIGU9dyh0aGlzLnJlcXVpcmVGYWlsLHQpO3JldHVybiBlPi0xJiZ0aGlzLnJlcXVpcmVGYWlsLnNwbGljZShlLDEpLHRoaXN9LGhhc1JlcXVpcmVGYWlsdXJlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlcXVpcmVGYWlsLmxlbmd0aD4wfSxjYW5SZWNvZ25pemVXaXRoOmZ1bmN0aW9uKHQpe3JldHVybiEhdGhpcy5zaW11bHRhbmVvdXNbdC5pZF19LGVtaXQ6ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXtpLm1hbmFnZXIuZW1pdChlLHQpfXZhciBpPXRoaXMsbz10aGlzLnN0YXRlO288ZmUmJmUoaS5vcHRpb25zLmV2ZW50K3R0KG8pKSxlKGkub3B0aW9ucy5ldmVudCksdC5hZGRpdGlvbmFsRXZlbnQmJmUodC5hZGRpdGlvbmFsRXZlbnQpLG8+PWZlJiZlKGkub3B0aW9ucy5ldmVudCt0dChvKSl9LHRyeUVtaXQ6ZnVuY3Rpb24odCl7aWYodGhpcy5jYW5FbWl0KCkpcmV0dXJuIHRoaXMuZW1pdCh0KTt0aGlzLnN0YXRlPTMyfSxjYW5FbWl0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDx0aGlzLnJlcXVpcmVGYWlsLmxlbmd0aDspe2lmKCEodGhpcy5yZXF1aXJlRmFpbFt0XS5zdGF0ZSYoMzJ8dWUpKSlyZXR1cm4hMTt0Kyt9cmV0dXJuITB9LHJlY29nbml6ZTpmdW5jdGlvbih0KXt2YXIgZT1mdCh7fSx0KTtpZighZih0aGlzLm9wdGlvbnMuZW5hYmxlLFt0aGlzLGVdKSlyZXR1cm4gdGhpcy5yZXNldCgpLHZvaWQodGhpcy5zdGF0ZT0zMik7dGhpcy5zdGF0ZSYobWV8dmV8MzIpJiYodGhpcy5zdGF0ZT11ZSksdGhpcy5zdGF0ZT10aGlzLnByb2Nlc3MoZSksdGhpcy5zdGF0ZSYoY2V8cGV8ZmV8dmUpJiZ0aGlzLnRyeUVtaXQoZSl9LHByb2Nlc3M6ZnVuY3Rpb24odCl7fSxnZXRUb3VjaEFjdGlvbjpmdW5jdGlvbigpe30scmVzZXQ6ZnVuY3Rpb24oKXt9fSxjKG90LCQse2RlZmF1bHRzOntwb2ludGVyczoxfSxhdHRyVGVzdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlvbnMucG9pbnRlcnM7cmV0dXJuIDA9PT1lfHx0LnBvaW50ZXJzLmxlbmd0aD09PWV9LHByb2Nlc3M6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zdGF0ZSxpPXQuZXZlbnRUeXBlLG89ZSYoY2V8cGUpLG49dGhpcy5hdHRyVGVzdCh0KTtyZXR1cm4gbyYmKGkmSXR8fCFuKT9lfHZlOm98fG4/aSZQdD9lfGZlOmUmY2U/ZXxwZTpjZTozMn19KSxjKG50LG90LHtkZWZhdWx0czp7ZXZlbnQ6InBhbiIsdGhyZXNob2xkOjEwLHBvaW50ZXJzOjEsZGlyZWN0aW9uOmp0fSxnZXRUb3VjaEFjdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5kaXJlY3Rpb24sZT1bXTtyZXR1cm4gdCZGdCYmZS5wdXNoKGRlKSx0JkJ0JiZlLnB1c2goaGUpLGV9LGRpcmVjdGlvblRlc3Q6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLGk9ITAsbz10LmRpc3RhbmNlLG49dC5kaXJlY3Rpb24scz10LmRlbHRhWCxyPXQuZGVsdGFZO3JldHVybiBuJmUuZGlyZWN0aW9ufHwoZS5kaXJlY3Rpb24mRnQ/KG49MD09PXM/TnQ6czwwP0F0OlJ0LGk9cyE9dGhpcy5wWCxvPU1hdGguYWJzKHQuZGVsdGFYKSk6KG49MD09PXI/TnQ6cjwwP3p0Okx0LGk9ciE9dGhpcy5wWSxvPU1hdGguYWJzKHQuZGVsdGFZKSkpLHQuZGlyZWN0aW9uPW4saSYmbz5lLnRocmVzaG9sZCYmbiZlLmRpcmVjdGlvbn0sYXR0clRlc3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG90LnByb3RvdHlwZS5hdHRyVGVzdC5jYWxsKHRoaXMsdCkmJih0aGlzLnN0YXRlJmNlfHwhKHRoaXMuc3RhdGUmY2UpJiZ0aGlzLmRpcmVjdGlvblRlc3QodCkpfSxlbWl0OmZ1bmN0aW9uKHQpe3RoaXMucFg9dC5kZWx0YVgsdGhpcy5wWT10LmRlbHRhWTt2YXIgZT1ldCh0LmRpcmVjdGlvbik7ZSYmKHQuYWRkaXRpb25hbEV2ZW50PXRoaXMub3B0aW9ucy5ldmVudCtlKSx0aGlzLl9zdXBlci5lbWl0LmNhbGwodGhpcyx0KX19KSxjKHN0LG90LHtkZWZhdWx0czp7ZXZlbnQ6InBpbmNoIix0aHJlc2hvbGQ6MCxwb2ludGVyczoyfSxnZXRUb3VjaEFjdGlvbjpmdW5jdGlvbigpe3JldHVyblthZV19LGF0dHJUZXN0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zdXBlci5hdHRyVGVzdC5jYWxsKHRoaXMsdCkmJihNYXRoLmFicyh0LnNjYWxlLTEpPnRoaXMub3B0aW9ucy50aHJlc2hvbGR8fHRoaXMuc3RhdGUmY2UpfSxlbWl0OmZ1bmN0aW9uKHQpe2lmKDEhPT10LnNjYWxlKXt2YXIgZT10LnNjYWxlPDE/ImluIjoib3V0Ijt0LmFkZGl0aW9uYWxFdmVudD10aGlzLm9wdGlvbnMuZXZlbnQrZX10aGlzLl9zdXBlci5lbWl0LmNhbGwodGhpcyx0KX19KSxjKHJ0LCQse2RlZmF1bHRzOntldmVudDoicHJlc3MiLHBvaW50ZXJzOjEsdGltZToyNTEsdGhyZXNob2xkOjl9LGdldFRvdWNoQWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuW3NlXX0scHJvY2VzczpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlvbnMsaT10LnBvaW50ZXJzLmxlbmd0aD09PWUucG9pbnRlcnMsbz10LmRpc3RhbmNlPGUudGhyZXNob2xkLG49dC5kZWx0YVRpbWU+ZS50aW1lO2lmKHRoaXMuX2lucHV0PXQsIW98fCFpfHx0LmV2ZW50VHlwZSYoUHR8SXQpJiYhbil0aGlzLnJlc2V0KCk7ZWxzZSBpZih0LmV2ZW50VHlwZSZUdCl0aGlzLnJlc2V0KCksdGhpcy5fdGltZXI9aChmdW5jdGlvbigpe3RoaXMuc3RhdGU9bWUsdGhpcy50cnlFbWl0KCl9LGUudGltZSx0aGlzKTtlbHNlIGlmKHQuZXZlbnRUeXBlJlB0KXJldHVybiBtZTtyZXR1cm4gMzJ9LHJlc2V0OmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKX0sZW1pdDpmdW5jdGlvbih0KXt0aGlzLnN0YXRlPT09bWUmJih0JiZ0LmV2ZW50VHlwZSZQdD90aGlzLm1hbmFnZXIuZW1pdCh0aGlzLm9wdGlvbnMuZXZlbnQrInVwIix0KToodGhpcy5faW5wdXQudGltZVN0YW1wPV90KCksdGhpcy5tYW5hZ2VyLmVtaXQodGhpcy5vcHRpb25zLmV2ZW50LHRoaXMuX2lucHV0KSkpfX0pLGMoYXQsb3Qse2RlZmF1bHRzOntldmVudDoicm90YXRlIix0aHJlc2hvbGQ6MCxwb2ludGVyczoyfSxnZXRUb3VjaEFjdGlvbjpmdW5jdGlvbigpe3JldHVyblthZV19LGF0dHJUZXN0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zdXBlci5hdHRyVGVzdC5jYWxsKHRoaXMsdCkmJihNYXRoLmFicyh0LnJvdGF0aW9uKT50aGlzLm9wdGlvbnMudGhyZXNob2xkfHx0aGlzLnN0YXRlJmNlKX19KSxjKGh0LG90LHtkZWZhdWx0czp7ZXZlbnQ6InN3aXBlIix0aHJlc2hvbGQ6MTAsdmVsb2NpdHk6LjMsZGlyZWN0aW9uOkZ0fEJ0LHBvaW50ZXJzOjF9LGdldFRvdWNoQWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG50LnByb3RvdHlwZS5nZXRUb3VjaEFjdGlvbi5jYWxsKHRoaXMpfSxhdHRyVGVzdDpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMub3B0aW9ucy5kaXJlY3Rpb247cmV0dXJuIGkmKEZ0fEJ0KT9lPXQub3ZlcmFsbFZlbG9jaXR5OmkmRnQ/ZT10Lm92ZXJhbGxWZWxvY2l0eVg6aSZCdCYmKGU9dC5vdmVyYWxsVmVsb2NpdHlZKSx0aGlzLl9zdXBlci5hdHRyVGVzdC5jYWxsKHRoaXMsdCkmJmkmdC5vZmZzZXREaXJlY3Rpb24mJnQuZGlzdGFuY2U+dGhpcy5vcHRpb25zLnRocmVzaG9sZCYmdC5tYXhQb2ludGVycz09dGhpcy5vcHRpb25zLnBvaW50ZXJzJiZidChlKT50aGlzLm9wdGlvbnMudmVsb2NpdHkmJnQuZXZlbnRUeXBlJlB0fSxlbWl0OmZ1bmN0aW9uKHQpe3ZhciBlPWV0KHQub2Zmc2V0RGlyZWN0aW9uKTtlJiZ0aGlzLm1hbmFnZXIuZW1pdCh0aGlzLm9wdGlvbnMuZXZlbnQrZSx0KSx0aGlzLm1hbmFnZXIuZW1pdCh0aGlzLm9wdGlvbnMuZXZlbnQsdCl9fSksYyhkdCwkLHtkZWZhdWx0czp7ZXZlbnQ6InRhcCIscG9pbnRlcnM6MSx0YXBzOjEsaW50ZXJ2YWw6MzAwLHRpbWU6MjUwLHRocmVzaG9sZDo5LHBvc1RocmVzaG9sZDoxMH0sZ2V0VG91Y2hBY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm5bcmVdfSxwcm9jZXNzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMub3B0aW9ucyxpPXQucG9pbnRlcnMubGVuZ3RoPT09ZS5wb2ludGVycyxvPXQuZGlzdGFuY2U8ZS50aHJlc2hvbGQsbj10LmRlbHRhVGltZTxlLnRpbWU7aWYodGhpcy5yZXNldCgpLHQuZXZlbnRUeXBlJlR0JiYwPT09dGhpcy5jb3VudClyZXR1cm4gdGhpcy5mYWlsVGltZW91dCgpO2lmKG8mJm4mJmkpe2lmKHQuZXZlbnRUeXBlIT1QdClyZXR1cm4gdGhpcy5mYWlsVGltZW91dCgpO3ZhciBzPSF0aGlzLnBUaW1lfHx0LnRpbWVTdGFtcC10aGlzLnBUaW1lPGUuaW50ZXJ2YWwscj0hdGhpcy5wQ2VudGVyfHxMKHRoaXMucENlbnRlcix0LmNlbnRlcik8ZS5wb3NUaHJlc2hvbGQ7dGhpcy5wVGltZT10LnRpbWVTdGFtcCx0aGlzLnBDZW50ZXI9dC5jZW50ZXIsciYmcz90aGlzLmNvdW50Kz0xOnRoaXMuY291bnQ9MSx0aGlzLl9pbnB1dD10O2lmKDA9PT10aGlzLmNvdW50JWUudGFwcylyZXR1cm4gdGhpcy5oYXNSZXF1aXJlRmFpbHVyZXMoKT8odGhpcy5fdGltZXI9aChmdW5jdGlvbigpe3RoaXMuc3RhdGU9bWUsdGhpcy50cnlFbWl0KCl9LGUuaW50ZXJ2YWwsdGhpcyksY2UpOm1lfXJldHVybiAzMn0sZmFpbFRpbWVvdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdGltZXI9aChmdW5jdGlvbigpe3RoaXMuc3RhdGU9MzJ9LHRoaXMub3B0aW9ucy5pbnRlcnZhbCx0aGlzKSwzMn0scmVzZXQ6ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpfSxlbWl0OmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZT09bWUmJih0aGlzLl9pbnB1dC50YXBDb3VudD10aGlzLmNvdW50LHRoaXMubWFuYWdlci5lbWl0KHRoaXMub3B0aW9ucy5ldmVudCx0aGlzLl9pbnB1dCkpfX0pLGx0LlZFUlNJT049IjIuMC43IixsdC5kZWZhdWx0cz17ZG9tRXZlbnRzOiExLHRvdWNoQWN0aW9uOiJjb21wdXRlIixlbmFibGU6ITAsaW5wdXRUYXJnZXQ6bnVsbCxpbnB1dENsYXNzOm51bGwscHJlc2V0OltbYXQse2VuYWJsZTohMX1dLFtzdCx7ZW5hYmxlOiExfSxbInJvdGF0ZSJdXSxbaHQse2RpcmVjdGlvbjpGdH1dLFtudCx7ZGlyZWN0aW9uOkZ0fSxbInN3aXBlIl1dLFtkdF0sW2R0LHtldmVudDoiZG91YmxldGFwIix0YXBzOjJ9LFsidGFwIl1dLFtydF1dLGNzc1Byb3BzOnt1c2VyU2VsZWN0OiJub25lIix0b3VjaFNlbGVjdDoibm9uZSIsdG91Y2hDYWxsb3V0OiJub25lIixjb250ZW50Wm9vbWluZzoibm9uZSIsdXNlckRyYWc6Im5vbmUiLHRhcEhpZ2hsaWdodENvbG9yOiJyZ2JhKDAsMCwwLDApIn19O3V0LnByb3RvdHlwZT17c2V0OmZ1bmN0aW9uKHQpe3JldHVybiBmdCh0aGlzLm9wdGlvbnMsdCksdC50b3VjaEFjdGlvbiYmdGhpcy50b3VjaEFjdGlvbi51cGRhdGUoKSx0LmlucHV0VGFyZ2V0JiYodGhpcy5pbnB1dC5kZXN0cm95KCksdGhpcy5pbnB1dC50YXJnZXQ9dC5pbnB1dFRhcmdldCx0aGlzLmlucHV0LmluaXQoKSksdGhpc30sc3RvcDpmdW5jdGlvbih0KXt0aGlzLnNlc3Npb24uc3RvcHBlZD10PzI6MX0scmVjb2duaXplOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc2Vzc2lvbjtpZighZS5zdG9wcGVkKXt0aGlzLnRvdWNoQWN0aW9uLnByZXZlbnREZWZhdWx0cyh0KTt2YXIgaSxvPXRoaXMucmVjb2duaXplcnMsbj1lLmN1clJlY29nbml6ZXI7KCFufHxuJiZuLnN0YXRlJm1lKSYmKG49ZS5jdXJSZWNvZ25pemVyPW51bGwpO2Zvcih2YXIgcz0wO3M8by5sZW5ndGg7KWk9b1tzXSwyPT09ZS5zdG9wcGVkfHxuJiZpIT1uJiYhaS5jYW5SZWNvZ25pemVXaXRoKG4pP2kucmVzZXQoKTppLnJlY29nbml6ZSh0KSwhbiYmaS5zdGF0ZSYoY2V8cGV8ZmUpJiYobj1lLmN1clJlY29nbml6ZXI9aSkscysrfX0sZ2V0OmZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiAkKXJldHVybiB0O2Zvcih2YXIgZT10aGlzLnJlY29nbml6ZXJzLGk9MDtpPGUubGVuZ3RoO2krKylpZihlW2ldLm9wdGlvbnMuZXZlbnQ9PXQpcmV0dXJuIGVbaV07cmV0dXJuIG51bGx9LGFkZDpmdW5jdGlvbih0KXtpZihkKHQsImFkZCIsdGhpcykpcmV0dXJuIHRoaXM7dmFyIGU9dGhpcy5nZXQodC5vcHRpb25zLmV2ZW50KTtyZXR1cm4gZSYmdGhpcy5yZW1vdmUoZSksdGhpcy5yZWNvZ25pemVycy5wdXNoKHQpLHQubWFuYWdlcj10aGlzLHRoaXMudG91Y2hBY3Rpb24udXBkYXRlKCksdH0scmVtb3ZlOmZ1bmN0aW9uKHQpe2lmKGQodCwicmVtb3ZlIix0aGlzKSlyZXR1cm4gdGhpcztpZih0PXRoaXMuZ2V0KHQpKXt2YXIgZT10aGlzLnJlY29nbml6ZXJzLGk9dyhlLHQpOy0xIT09aSYmKGUuc3BsaWNlKGksMSksdGhpcy50b3VjaEFjdGlvbi51cGRhdGUoKSl9cmV0dXJuIHRoaXN9LG9uOmZ1bmN0aW9uKHQsZSl7aWYodCE9PWEmJmUhPT1hKXt2YXIgaT10aGlzLmhhbmRsZXJzO3JldHVybiBsKF8odCksZnVuY3Rpb24odCl7aVt0XT1pW3RdfHxbXSxpW3RdLnB1c2goZSl9KSx0aGlzfX0sb2ZmOmZ1bmN0aW9uKHQsZSl7aWYodCE9PWEpe3ZhciBpPXRoaXMuaGFuZGxlcnM7cmV0dXJuIGwoXyh0KSxmdW5jdGlvbih0KXtlP2lbdF0mJmlbdF0uc3BsaWNlKHcoaVt0XSxlKSwxKTpkZWxldGUgaVt0XX0pLHRoaXN9fSxlbWl0OmZ1bmN0aW9uKHQsZSl7dGhpcy5vcHRpb25zLmRvbUV2ZW50cyYmcHQodCxlKTt2YXIgaT10aGlzLmhhbmRsZXJzW3RdJiZ0aGlzLmhhbmRsZXJzW3RdLnNsaWNlKCk7aWYoaSYmaS5sZW5ndGgpe2UudHlwZT10LGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXtlLnNyY0V2ZW50LnByZXZlbnREZWZhdWx0KCl9O2Zvcih2YXIgbz0wO288aS5sZW5ndGg7KWlbb10oZSksbysrfX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudCYmY3QodGhpcywhMSksdGhpcy5oYW5kbGVycz17fSx0aGlzLnNlc3Npb249e30sdGhpcy5pbnB1dC5kZXN0cm95KCksdGhpcy5lbGVtZW50PW51bGx9fSxmdChsdCx7SU5QVVRfU1RBUlQ6VHQsSU5QVVRfTU9WRTpFdCxJTlBVVF9FTkQ6UHQsSU5QVVRfQ0FOQ0VMOkl0LFNUQVRFX1BPU1NJQkxFOnVlLFNUQVRFX0JFR0FOOmNlLFNUQVRFX0NIQU5HRUQ6cGUsU1RBVEVfRU5ERUQ6ZmUsU1RBVEVfUkVDT0dOSVpFRDptZSxTVEFURV9DQU5DRUxMRUQ6dmUsU1RBVEVfRkFJTEVEOjMyLERJUkVDVElPTl9OT05FOk50LERJUkVDVElPTl9MRUZUOkF0LERJUkVDVElPTl9SSUdIVDpSdCxESVJFQ1RJT05fVVA6enQsRElSRUNUSU9OX0RPV046THQsRElSRUNUSU9OX0hPUklaT05UQUw6RnQsRElSRUNUSU9OX1ZFUlRJQ0FMOkJ0LERJUkVDVElPTl9BTEw6anQsTWFuYWdlcjp1dCxJbnB1dDpPLFRvdWNoQWN0aW9uOkosVG91Y2hJbnB1dDpWLE1vdXNlSW5wdXQ6SCxQb2ludGVyRXZlbnRJbnB1dDpXLFRvdWNoTW91c2VJbnB1dDpxLFNpbmdsZVRvdWNoSW5wdXQ6WSxSZWNvZ25pemVyOiQsQXR0clJlY29nbml6ZXI6b3QsVGFwOmR0LFBhbjpudCxTd2lwZTpodCxQaW5jaDpzdCxSb3RhdGU6YXQsUHJlc3M6cnQsb246dixvZmY6ZyxlYWNoOmwsbWVyZ2U6eHQsZXh0ZW5kOnd0LGFzc2lnbjpmdCxpbmhlcml0OmMsYmluZEZuOnAscHJlZml4ZWQ6RH0pLCh2b2lkIDAhPT1uP246InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e30pLkhhbW1lcj1sdCwobz1mdW5jdGlvbigpe3JldHVybiBsdH0uY2FsbChlLGksZSx0KSkhPT1hJiYodC5leHBvcnRzPW8pfSh3aW5kb3csZG9jdW1lbnQpfSxmdW5jdGlvbih0LGUsaSl7dmFyIG8sbixzOyFmdW5jdGlvbihpLHIpe249W10sbz1yLHZvaWQgMCE9PShzPSJmdW5jdGlvbiI9PXR5cGVvZiBvP28uYXBwbHkoZSxuKTpvKSYmKHQuZXhwb3J0cz1zKX0oMCxmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGUsaT10JiZ0LnByZXZlbnREZWZhdWx0fHwhMSxvPXQmJnQuY29udGFpbmVyfHx3aW5kb3csbj17fSxzPXtrZXlkb3duOnt9LGtleXVwOnt9fSxyPXt9O2ZvcihlPTk3O2U8PTEyMjtlKyspcltTdHJpbmcuZnJvbUNoYXJDb2RlKGUpXT17Y29kZTplLTk3KzY1LHNoaWZ0OiExfTtmb3IoZT02NTtlPD05MDtlKyspcltTdHJpbmcuZnJvbUNoYXJDb2RlKGUpXT17Y29kZTplLHNoaWZ0OiEwfTtmb3IoZT0wO2U8PTk7ZSsrKXJbIiIrZV09e2NvZGU6NDgrZSxzaGlmdDohMX07Zm9yKGU9MTtlPD0xMjtlKyspclsiRiIrZV09e2NvZGU6MTExK2Usc2hpZnQ6ITF9O2ZvcihlPTA7ZTw9OTtlKyspclsibnVtIitlXT17Y29kZTo5NitlLHNoaWZ0OiExfTtyWyJudW0qIl09e2NvZGU6MTA2LHNoaWZ0OiExfSxyWyJudW0rIl09e2NvZGU6MTA3LHNoaWZ0OiExfSxyWyJudW0tIl09e2NvZGU6MTA5LHNoaWZ0OiExfSxyWyJudW0vIl09e2NvZGU6MTExLHNoaWZ0OiExfSxyWyJudW0uIl09e2NvZGU6MTEwLHNoaWZ0OiExfSxyLmxlZnQ9e2NvZGU6Mzcsc2hpZnQ6ITF9LHIudXA9e2NvZGU6Mzgsc2hpZnQ6ITF9LHIucmlnaHQ9e2NvZGU6Mzksc2hpZnQ6ITF9LHIuZG93bj17Y29kZTo0MCxzaGlmdDohMX0sci5zcGFjZT17Y29kZTozMixzaGlmdDohMX0sci5lbnRlcj17Y29kZToxMyxzaGlmdDohMX0sci5zaGlmdD17Y29kZToxNixzaGlmdDp2b2lkIDB9LHIuZXNjPXtjb2RlOjI3LHNoaWZ0OiExfSxyLmJhY2tzcGFjZT17Y29kZTo4LHNoaWZ0OiExfSxyLnRhYj17Y29kZTo5LHNoaWZ0OiExfSxyLmN0cmw9e2NvZGU6MTcsc2hpZnQ6ITF9LHIuYWx0PXtjb2RlOjE4LHNoaWZ0OiExfSxyLmRlbGV0ZT17Y29kZTo0NixzaGlmdDohMX0sci5wYWdldXA9e2NvZGU6MzMsc2hpZnQ6ITF9LHIucGFnZWRvd249e2NvZGU6MzQsc2hpZnQ6ITF9LHJbIj0iXT17Y29kZToxODcsc2hpZnQ6ITF9LHJbIi0iXT17Y29kZToxODksc2hpZnQ6ITF9LHJbIl0iXT17Y29kZToyMjEsc2hpZnQ6ITF9LHJbIlsiXT17Y29kZToyMTksc2hpZnQ6ITF9O3ZhciBhPWZ1bmN0aW9uKHQpe2QodCwia2V5ZG93biIpfSxoPWZ1bmN0aW9uKHQpe2QodCwia2V5dXAiKX0sZD1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMCE9PXNbZV1bdC5rZXlDb2RlXSl7Zm9yKHZhciBvPXNbZV1bdC5rZXlDb2RlXSxuPTA7bjxvLmxlbmd0aDtuKyspdm9pZCAwPT09b1tuXS5zaGlmdD9vW25dLmZuKHQpOjE9PW9bbl0uc2hpZnQmJjE9PXQuc2hpZnRLZXk/b1tuXS5mbih0KTowPT1vW25dLnNoaWZ0JiYwPT10LnNoaWZ0S2V5JiZvW25dLmZuKHQpOzE9PWkmJnQucHJldmVudERlZmF1bHQoKX19O3JldHVybiBuLmJpbmQ9ZnVuY3Rpb24odCxlLGkpe2lmKHZvaWQgMD09PWkmJihpPSJrZXlkb3duIiksdm9pZCAwPT09clt0XSl0aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIGtleTogIit0KTt2b2lkIDA9PT1zW2ldW3JbdF0uY29kZV0mJihzW2ldW3JbdF0uY29kZV09W10pLHNbaV1bclt0XS5jb2RlXS5wdXNoKHtmbjplLHNoaWZ0OnJbdF0uc2hpZnR9KX0sbi5iaW5kQWxsPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9ImtleWRvd24iKTtmb3IodmFyIGkgaW4gcilyLmhhc093blByb3BlcnR5KGkpJiZuLmJpbmQoaSx0LGUpfSxuLmdldEtleT1mdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gcilpZihyLmhhc093blByb3BlcnR5KGUpKXtpZigxPT10LnNoaWZ0S2V5JiYxPT1yW2VdLnNoaWZ0JiZ0LmtleUNvZGU9PXJbZV0uY29kZSlyZXR1cm4gZTtpZigwPT10LnNoaWZ0S2V5JiYwPT1yW2VdLnNoaWZ0JiZ0LmtleUNvZGU9PXJbZV0uY29kZSlyZXR1cm4gZTtpZih0LmtleUNvZGU9PXJbZV0uY29kZSYmInNoaWZ0Ij09ZSlyZXR1cm4gZX1yZXR1cm4idW5rbm93biBrZXksIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIn0sbi51bmJpbmQ9ZnVuY3Rpb24odCxlLGkpe2lmKHZvaWQgMD09PWkmJihpPSJrZXlkb3duIiksdm9pZCAwPT09clt0XSl0aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIGtleTogIit0KTtpZih2b2lkIDAhPT1lKXt2YXIgbz1bXSxuPXNbaV1bclt0XS5jb2RlXTtpZih2b2lkIDAhPT1uKWZvcih2YXIgYT0wO2E8bi5sZW5ndGg7YSsrKW5bYV0uZm49PWUmJm5bYV0uc2hpZnQ9PXJbdF0uc2hpZnR8fG8ucHVzaChzW2ldW3JbdF0uY29kZV1bYV0pO3NbaV1bclt0XS5jb2RlXT1vfWVsc2Ugc1tpXVtyW3RdLmNvZGVdPVtdfSxuLnJlc2V0PWZ1bmN0aW9uKCl7cz17a2V5ZG93bjp7fSxrZXl1cDp7fX19LG4uZGVzdHJveT1mdW5jdGlvbigpe3M9e2tleWRvd246e30sa2V5dXA6e319LG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsYSwhMCksby5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsaCwhMCl9LG8uYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsYSwhMCksby5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsaCwhMCksbn1yZXR1cm4gdH0pfSxmdW5jdGlvbih0LGUsaSl7ZS51dGlsPWkoMSksZS5ET011dGlsPWkoODgpLGUuRGF0YVNldD1pKDg5KSxlLkRhdGFWaWV3PWkoOTMpLGUuUXVldWU9aSg5MiksZS5UaW1lbGluZT1pKDExOCksZS5HcmFwaDJkPWkoMTQ5KSxlLnRpbWVsaW5lPXtDb3JlOmkoMTIzKSxEYXRlVXRpbDppKDEyMiksUmFuZ2U6aSgxMTkpLHN0YWNrOmkoMTI3KSxUaW1lU3RlcDppKDEyNSksY29tcG9uZW50czp7aXRlbXM6e0l0ZW06aSgxMjkpLEJhY2tncm91bmRJdGVtOmkoMTMzKSxCb3hJdGVtOmkoMTMxKSxQb2ludEl0ZW06aSgxMzIpLFJhbmdlSXRlbTppKDEyOCl9LEJhY2tncm91bmRHcm91cDppKDEzMCksQ29tcG9uZW50OmkoMTIxKSxDdXJyZW50VGltZTppKDE0NCksQ3VzdG9tVGltZTppKDE0MiksRGF0YUF4aXM6aSgxNTEpLERhdGFTY2FsZTppKDE1MiksR3JhcGhHcm91cDppKDE1MyksR3JvdXA6aSgxMjYpLEl0ZW1TZXQ6aSgxMjQpLExlZ2VuZDppKDE1NyksTGluZUdyYXBoOmkoMTUwKSxUaW1lQXhpczppKDE0MCl9fSxlLm1vbWVudD1pKDgyKSxlLkhhbW1lcj1pKDExMyksZS5rZXljaGFybT1pKDExNil9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQsZSxpLGQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG8pKXRocm93IG5ldyBTeW50YXhFcnJvcigiQ29uc3RydWN0b3IgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgbmV3IG9wZXJhdG9yIik7aWYoIShBcnJheS5pc0FycmF5KGkpfHxpIGluc3RhbmNlb2Ygcnx8aSBpbnN0YW5jZW9mIGEpJiZpIGluc3RhbmNlb2YgT2JqZWN0KXt2YXIgYz1kO2Q9aSxpPWN9ZCYmZC50aHJvdHRsZVJlZHJhdyYmY29uc29sZS53YXJuKCdUaW1lbGluZSBvcHRpb24gInRocm90dGxlUmVkcmF3IiBpcyBERVBSSUNBVEVEIGFuZCBubyBsb25nZXIgc3VwcG9ydGVkLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgTUFKT1IgcmVsZWFzZS4nKTt2YXIgZj10aGlzO2lmKHRoaXMuZGVmYXVsdE9wdGlvbnM9e3N0YXJ0Om51bGwsZW5kOm51bGwsYXV0b1Jlc2l6ZTohMCxvcmllbnRhdGlvbjp7YXhpczoiYm90dG9tIixpdGVtOiJib3R0b20ifSxtb21lbnQ6bix3aWR0aDpudWxsLGhlaWdodDpudWxsLG1heEhlaWdodDpudWxsLG1pbkhlaWdodDpudWxsfSx0aGlzLm9wdGlvbnM9cy5kZWVwRXh0ZW5kKHt9LHRoaXMuZGVmYXVsdE9wdGlvbnMpLHRoaXMuX2NyZWF0ZSh0KSwhZHx8ZCYmdm9pZCAwPT09ZC5ydGwpe2Zvcih2YXIgbSx2PXRoaXMuZG9tLnJvb3Q7IW0mJnY7KW09d2luZG93LmdldENvbXB1dGVkU3R5bGUodixudWxsKS5kaXJlY3Rpb24sdj12LnBhcmVudEVsZW1lbnQ7dGhpcy5vcHRpb25zLnJ0bD1tJiYicnRsIj09bS50b0xvd2VyQ2FzZSgpfWVsc2UgdGhpcy5vcHRpb25zLnJ0bD1kLnJ0bDt0aGlzLm9wdGlvbnMucm9sbGluZ01vZGU9ZCYmZC5yb2xsaW5nTW9kZSx0aGlzLmNvbXBvbmVudHM9W10sdGhpcy5ib2R5PXtkb206dGhpcy5kb20sZG9tUHJvcHM6dGhpcy5wcm9wcyxlbWl0dGVyOntvbjp0aGlzLm9uLmJpbmQodGhpcyksb2ZmOnRoaXMub2ZmLmJpbmQodGhpcyksZW1pdDp0aGlzLmVtaXQuYmluZCh0aGlzKX0saGlkZGVuRGF0ZXM6W10sdXRpbDp7Z2V0U2NhbGU6ZnVuY3Rpb24oKXtyZXR1cm4gZi50aW1lQXhpcy5zdGVwLnNjYWxlfSxnZXRTdGVwOmZ1bmN0aW9uKCl7cmV0dXJuIGYudGltZUF4aXMuc3RlcC5zdGVwfSx0b1NjcmVlbjpmLl90b1NjcmVlbi5iaW5kKGYpLHRvR2xvYmFsU2NyZWVuOmYuX3RvR2xvYmFsU2NyZWVuLmJpbmQoZiksdG9UaW1lOmYuX3RvVGltZS5iaW5kKGYpLHRvR2xvYmFsVGltZTpmLl90b0dsb2JhbFRpbWUuYmluZChmKX19LHRoaXMucmFuZ2U9bmV3IGgodGhpcy5ib2R5LHRoaXMub3B0aW9ucyksdGhpcy5jb21wb25lbnRzLnB1c2godGhpcy5yYW5nZSksdGhpcy5ib2R5LnJhbmdlPXRoaXMucmFuZ2UsdGhpcy50aW1lQXhpcz1uZXcgbCh0aGlzLmJvZHksdGhpcy5vcHRpb25zKSx0aGlzLnRpbWVBeGlzMj1udWxsLHRoaXMuY29tcG9uZW50cy5wdXNoKHRoaXMudGltZUF4aXMpLHRoaXMuY3VycmVudFRpbWU9bmV3IHUodGhpcy5ib2R5LHRoaXMub3B0aW9ucyksdGhpcy5jb21wb25lbnRzLnB1c2godGhpcy5jdXJyZW50VGltZSksdGhpcy5pdGVtU2V0PW5ldyBwKHRoaXMuYm9keSx0aGlzLm9wdGlvbnMpLHRoaXMuY29tcG9uZW50cy5wdXNoKHRoaXMuaXRlbVNldCksdGhpcy5pdGVtc0RhdGE9bnVsbCx0aGlzLmdyb3Vwc0RhdGE9bnVsbCx0aGlzLmRvbS5yb290Lm9uY2xpY2s9ZnVuY3Rpb24odCl7Zi5lbWl0KCJjbGljayIsZi5nZXRFdmVudFByb3BlcnRpZXModCkpfSx0aGlzLmRvbS5yb290Lm9uZGJsY2xpY2s9ZnVuY3Rpb24odCl7Zi5lbWl0KCJkb3VibGVDbGljayIsZi5nZXRFdmVudFByb3BlcnRpZXModCkpfSx0aGlzLmRvbS5yb290Lm9uY29udGV4dG1lbnU9ZnVuY3Rpb24odCl7Zi5lbWl0KCJjb250ZXh0bWVudSIsZi5nZXRFdmVudFByb3BlcnRpZXModCkpfSx0aGlzLmRvbS5yb290Lm9ubW91c2VvdmVyPWZ1bmN0aW9uKHQpe2YuZW1pdCgibW91c2VPdmVyIixmLmdldEV2ZW50UHJvcGVydGllcyh0KSl9LHdpbmRvdy5Qb2ludGVyRXZlbnQ/KHRoaXMuZG9tLnJvb3Qub25wb2ludGVyZG93bj1mdW5jdGlvbih0KXtmLmVtaXQoIm1vdXNlRG93biIsZi5nZXRFdmVudFByb3BlcnRpZXModCkpfSx0aGlzLmRvbS5yb290Lm9ucG9pbnRlcm1vdmU9ZnVuY3Rpb24odCl7Zi5lbWl0KCJtb3VzZU1vdmUiLGYuZ2V0RXZlbnRQcm9wZXJ0aWVzKHQpKX0sdGhpcy5kb20ucm9vdC5vbnBvaW50ZXJ1cD1mdW5jdGlvbih0KXtmLmVtaXQoIm1vdXNlVXAiLGYuZ2V0RXZlbnRQcm9wZXJ0aWVzKHQpKX0pOih0aGlzLmRvbS5yb290Lm9ubW91c2Vtb3ZlPWZ1bmN0aW9uKHQpe2YuZW1pdCgibW91c2VNb3ZlIixmLmdldEV2ZW50UHJvcGVydGllcyh0KSl9LHRoaXMuZG9tLnJvb3Qub25tb3VzZWRvd249ZnVuY3Rpb24odCl7Zi5lbWl0KCJtb3VzZURvd24iLGYuZ2V0RXZlbnRQcm9wZXJ0aWVzKHQpKX0sdGhpcy5kb20ucm9vdC5vbm1vdXNldXA9ZnVuY3Rpb24odCl7Zi5lbWl0KCJtb3VzZVVwIixmLmdldEV2ZW50UHJvcGVydGllcyh0KSl9KSx0aGlzLmZpdERvbmU9ITEsdGhpcy5vbigiY2hhbmdlZCIsZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLml0ZW1zRGF0YSYmIXRoaXMub3B0aW9ucy5yb2xsaW5nTW9kZSYmIWYuZml0RG9uZSlpZihmLmZpdERvbmU9ITAsdm9pZCAwIT1mLm9wdGlvbnMuc3RhcnR8fHZvaWQgMCE9Zi5vcHRpb25zLmVuZCl7aWYodm9pZCAwPT1mLm9wdGlvbnMuc3RhcnR8fHZvaWQgMD09Zi5vcHRpb25zLmVuZCl2YXIgdD1mLmdldEl0ZW1SYW5nZSgpO3ZhciBlPXZvaWQgMCE9Zi5vcHRpb25zLnN0YXJ0P2Yub3B0aW9ucy5zdGFydDp0Lm1pbixpPXZvaWQgMCE9Zi5vcHRpb25zLmVuZD9mLm9wdGlvbnMuZW5kOnQubWF4O2Yuc2V0V2luZG93KGUsaSx7YW5pbWF0aW9uOiExfSl9ZWxzZSBmLmZpdCh7YW5pbWF0aW9uOiExfSl9KSxkJiZ0aGlzLnNldE9wdGlvbnMoZCksaSYmdGhpcy5zZXRHcm91cHMoaSksZSYmdGhpcy5zZXRJdGVtcyhlKSx0aGlzLl9yZWRyYXcoKX12YXIgbj0oaSg5OSksaSgxMTMpLGkoODIpKSxzPWkoMSkscj1pKDg5KSxhPWkoOTMpLGg9aSgxMTkpLGQ9aSgxMjMpLGw9aSgxNDApLHU9aSgxNDQpLGM9aSgxNDIpLHA9aSgxMjQpLGY9aSgxNDUpLnByaW50U3R5bGUsbT1pKDE0NikuYWxsT3B0aW9ucyx2PWkoMTQ2KS5jb25maWd1cmVPcHRpb25zLGc9aSgxNDcpLmRlZmF1bHQseT1pKDE0NSkuZGVmYXVsdDtvLnByb3RvdHlwZT1uZXcgZCxvLnByb3RvdHlwZS5fY3JlYXRlQ29uZmlndXJhdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBnKHRoaXMsdGhpcy5kb20uY29udGFpbmVyLHYpfSxvLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oKXt0aGlzLml0ZW1TZXQmJnRoaXMuaXRlbVNldC5tYXJrRGlydHkoe3JlZnJlc2hJdGVtczohMH0pLHRoaXMuX3JlZHJhdygpfSxvLnByb3RvdHlwZS5zZXRPcHRpb25zPWZ1bmN0aW9uKHQpe2lmKCEwPT09eS52YWxpZGF0ZSh0LG0pJiZjb25zb2xlLmxvZygiJWNFcnJvcnMgaGF2ZSBiZWVuIGZvdW5kIGluIHRoZSBzdXBwbGllZCBvcHRpb25zIG9iamVjdC4iLGYpLGQucHJvdG90eXBlLnNldE9wdGlvbnMuY2FsbCh0aGlzLHQpLCJ0eXBlImluIHQmJnQudHlwZSE9PXRoaXMub3B0aW9ucy50eXBlKXt0aGlzLm9wdGlvbnMudHlwZT10LnR5cGU7dmFyIGU9dGhpcy5pdGVtc0RhdGE7aWYoZSl7dmFyIGk9dGhpcy5nZXRTZWxlY3Rpb24oKTt0aGlzLnNldEl0ZW1zKG51bGwpLHRoaXMuc2V0SXRlbXMoZSksdGhpcy5zZXRTZWxlY3Rpb24oaSl9fX0sby5wcm90b3R5cGUuc2V0SXRlbXM9ZnVuY3Rpb24odCl7dmFyIGU7ZT10P3QgaW5zdGFuY2VvZiByfHx0IGluc3RhbmNlb2YgYT90Om5ldyByKHQse3R5cGU6e3N0YXJ0OiJEYXRlIixlbmQ6IkRhdGUifX0pOm51bGwsdGhpcy5pdGVtc0RhdGE9ZSx0aGlzLml0ZW1TZXQmJnRoaXMuaXRlbVNldC5zZXRJdGVtcyhlKX0sby5wcm90b3R5cGUuc2V0R3JvdXBzPWZ1bmN0aW9uKHQpe3ZhciBlO2lmKHQpe3ZhciBpPWZ1bmN0aW9uKHQpe3JldHVybiExIT09dC52aXNpYmxlfTtlPXQgaW5zdGFuY2VvZiByfHx0IGluc3RhbmNlb2YgYT9uZXcgYSh0LHtmaWx0ZXI6aX0pOm5ldyByKHQuZmlsdGVyKGkpKX1lbHNlIGU9bnVsbDt0aGlzLmdyb3Vwc0RhdGE9ZSx0aGlzLml0ZW1TZXQuc2V0R3JvdXBzKGUpfSxvLnByb3RvdHlwZS5zZXREYXRhPWZ1bmN0aW9uKHQpe3QmJnQuZ3JvdXBzJiZ0aGlzLnNldEdyb3Vwcyh0Lmdyb3VwcyksdCYmdC5pdGVtcyYmdGhpcy5zZXRJdGVtcyh0Lml0ZW1zKX0sby5wcm90b3R5cGUuc2V0U2VsZWN0aW9uPWZ1bmN0aW9uKHQsZSl7dGhpcy5pdGVtU2V0JiZ0aGlzLml0ZW1TZXQuc2V0U2VsZWN0aW9uKHQpLGUmJmUuZm9jdXMmJnRoaXMuZm9jdXModCxlKX0sby5wcm90b3R5cGUuZ2V0U2VsZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlbVNldCYmdGhpcy5pdGVtU2V0LmdldFNlbGVjdGlvbigpfHxbXX0sby5wcm90b3R5cGUuZm9jdXM9ZnVuY3Rpb24odCxlKXtpZih0aGlzLml0ZW1zRGF0YSYmdm9pZCAwIT10KXt2YXIgaT1BcnJheS5pc0FycmF5KHQpP3Q6W3RdLG89dGhpcy5pdGVtc0RhdGEuZ2V0RGF0YVNldCgpLmdldChpLHt0eXBlOntzdGFydDoiRGF0ZSIsZW5kOiJEYXRlIn19KSxuPW51bGwscz1udWxsO2lmKG8uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT10LnN0YXJ0LnZhbHVlT2YoKSxpPSJlbmQiaW4gdD90LmVuZC52YWx1ZU9mKCk6dC5zdGFydC52YWx1ZU9mKCk7KG51bGw9PT1ufHxlPG4pJiYobj1lKSwobnVsbD09PXN8fGk+cykmJihzPWkpfSksbnVsbCE9PW4mJm51bGwhPT1zKXt2YXIgcj0obitzKS8yLGE9TWF0aC5tYXgodGhpcy5yYW5nZS5lbmQtdGhpcy5yYW5nZS5zdGFydCwxLjEqKHMtbikpLGg9IWV8fHZvaWQgMD09PWUuYW5pbWF0aW9ufHxlLmFuaW1hdGlvbjt0aGlzLnJhbmdlLnNldFJhbmdlKHItYS8yLHIrYS8yLHthbmltYXRpb246aH0pfX19LG8ucHJvdG90eXBlLmZpdD1mdW5jdGlvbih0KXt2YXIgZSxpPSF0fHx2b2lkIDA9PT10LmFuaW1hdGlvbnx8dC5hbmltYXRpb24sbz10aGlzLml0ZW1zRGF0YSYmdGhpcy5pdGVtc0RhdGEuZ2V0RGF0YVNldCgpOzE9PT1vLmxlbmd0aCYmdm9pZCAwPT09by5nZXQoKVswXS5lbmQ/KGU9dGhpcy5nZXREYXRhUmFuZ2UoKSx0aGlzLm1vdmVUbyhlLm1pbi52YWx1ZU9mKCkse2FuaW1hdGlvbjppfSkpOihlPXRoaXMuZ2V0SXRlbVJhbmdlKCksdGhpcy5yYW5nZS5zZXRSYW5nZShlLm1pbixlLm1heCx7YW5pbWF0aW9uOml9KSl9LG8ucHJvdG90eXBlLmdldEl0ZW1SYW5nZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0RGF0YVJhbmdlKCksZT1udWxsIT09dC5taW4/dC5taW4udmFsdWVPZigpOm51bGwsaT1udWxsIT09dC5tYXg/dC5tYXgudmFsdWVPZigpOm51bGwsbz1udWxsLG49bnVsbDtpZihudWxsIT1lJiZudWxsIT1pKXt2YXIgcj1mdW5jdGlvbih0KXtyZXR1cm4gcy5jb252ZXJ0KHQuZGF0YS5zdGFydCwiRGF0ZSIpLnZhbHVlT2YoKX0sYT1mdW5jdGlvbih0KXt2YXIgZT12b2lkIDAhPXQuZGF0YS5lbmQ/dC5kYXRhLmVuZDp0LmRhdGEuc3RhcnQ7cmV0dXJuIHMuY29udmVydChlLCJEYXRlIikudmFsdWVPZigpfSxoPWktZTtoPD0wJiYoaD0xMCk7dmFyIGQ9aC90aGlzLnByb3BzLmNlbnRlci53aWR0aDtpZihzLmZvckVhY2godGhpcy5pdGVtU2V0Lml0ZW1zLGZ1bmN0aW9uKHQpe3QuZ3JvdXBTaG93aW5nJiYodC5zaG93KCksdC5yZXBvc2l0aW9uWCgpKTt2YXIgcz1yKHQpLGg9YSh0KTtpZih0aGlzLm9wdGlvbnMucnRsKXZhciBsPXMtKHQuZ2V0V2lkdGhSaWdodCgpKzEwKSpkLHU9aCsodC5nZXRXaWR0aExlZnQoKSsxMCkqZDtlbHNlIHZhciBsPXMtKHQuZ2V0V2lkdGhMZWZ0KCkrMTApKmQsdT1oKyh0LmdldFdpZHRoUmlnaHQoKSsxMCkqZDtsPGUmJihlPWwsbz10KSx1PmkmJihpPXUsbj10KX0uYmluZCh0aGlzKSksbyYmbil7dmFyIGw9by5nZXRXaWR0aExlZnQoKSsxMCx1PW4uZ2V0V2lkdGhSaWdodCgpKzEwLGM9dGhpcy5wcm9wcy5jZW50ZXIud2lkdGgtbC11O2M+MCYmKHRoaXMub3B0aW9ucy5ydGw/KGU9cihvKS11KmgvYyxpPWEobikrbCpoL2MpOihlPXIobyktbCpoL2MsaT1hKG4pK3UqaC9jKSl9fXJldHVybnttaW46bnVsbCE9ZT9uZXcgRGF0ZShlKTpudWxsLG1heDpudWxsIT1pP25ldyBEYXRlKGkpOm51bGx9fSxvLnByb3RvdHlwZS5nZXREYXRhUmFuZ2U9ZnVuY3Rpb24oKXt2YXIgdD1udWxsLGU9bnVsbCxpPXRoaXMuaXRlbXNEYXRhJiZ0aGlzLml0ZW1zRGF0YS5nZXREYXRhU2V0KCk7cmV0dXJuIGkmJmkuZm9yRWFjaChmdW5jdGlvbihpKXt2YXIgbz1zLmNvbnZlcnQoaS5zdGFydCwiRGF0ZSIpLnZhbHVlT2YoKSxuPXMuY29udmVydCh2b2lkIDAhPWkuZW5kP2kuZW5kOmkuc3RhcnQsIkRhdGUiKS52YWx1ZU9mKCk7KG51bGw9PT10fHxvPHQpJiYodD1vKSwobnVsbD09PWV8fG4+ZSkmJihlPW4pfSkse21pbjpudWxsIT10P25ldyBEYXRlKHQpOm51bGwsbWF4Om51bGwhPWU/bmV3IERhdGUoZSk6bnVsbH19LG8ucHJvdG90eXBlLmdldEV2ZW50UHJvcGVydGllcz1mdW5jdGlvbih0KXt2YXIgZT10LmNlbnRlcj90LmNlbnRlci54OnQuY2xpZW50WCxpPXQuY2VudGVyP3QuY2VudGVyLnk6dC5jbGllbnRZO2lmKHRoaXMub3B0aW9ucy5ydGwpdmFyIG89cy5nZXRBYnNvbHV0ZVJpZ2h0KHRoaXMuZG9tLmNlbnRlckNvbnRhaW5lciktZTtlbHNlIHZhciBvPWUtcy5nZXRBYnNvbHV0ZUxlZnQodGhpcy5kb20uY2VudGVyQ29udGFpbmVyKTt2YXIgbj1pLXMuZ2V0QWJzb2x1dGVUb3AodGhpcy5kb20uY2VudGVyQ29udGFpbmVyKSxyPXRoaXMuaXRlbVNldC5pdGVtRnJvbVRhcmdldCh0KSxhPXRoaXMuaXRlbVNldC5ncm91cEZyb21UYXJnZXQodCksaD1jLmN1c3RvbVRpbWVGcm9tVGFyZ2V0KHQpLGQ9dGhpcy5pdGVtU2V0Lm9wdGlvbnMuc25hcHx8bnVsbCxsPXRoaXMuYm9keS51dGlsLmdldFNjYWxlKCksdT10aGlzLmJvZHkudXRpbC5nZXRTdGVwKCkscD10aGlzLl90b1RpbWUobyksZj1kP2QocCxsLHUpOnAsbT1zLmdldFRhcmdldCh0KSx2PW51bGw7cmV0dXJuIG51bGwhPXI/dj0iaXRlbSI6bnVsbCE9aD92PSJjdXN0b20tdGltZSI6cy5oYXNQYXJlbnQobSx0aGlzLnRpbWVBeGlzLmRvbS5mb3JlZ3JvdW5kKT92PSJheGlzIjp0aGlzLnRpbWVBeGlzMiYmcy5oYXNQYXJlbnQobSx0aGlzLnRpbWVBeGlzMi5kb20uZm9yZWdyb3VuZCk/dj0iYXhpcyI6cy5oYXNQYXJlbnQobSx0aGlzLml0ZW1TZXQuZG9tLmxhYmVsU2V0KT92PSJncm91cC1sYWJlbCI6cy5oYXNQYXJlbnQobSx0aGlzLmN1cnJlbnRUaW1lLmJhcik/dj0iY3VycmVudC10aW1lIjpzLmhhc1BhcmVudChtLHRoaXMuZG9tLmNlbnRlcikmJih2PSJiYWNrZ3JvdW5kIikse2V2ZW50OnQsaXRlbTpyP3IuaWQ6bnVsbCxncm91cDphP2EuZ3JvdXBJZDpudWxsLHdoYXQ6dixwYWdlWDp0LnNyY0V2ZW50P3Quc3JjRXZlbnQucGFnZVg6dC5wYWdlWCxwYWdlWTp0LnNyY0V2ZW50P3Quc3JjRXZlbnQucGFnZVk6dC5wYWdlWSx4Om8seTpuLHRpbWU6cCxzbmFwcGVkVGltZTpmfX0sby5wcm90b3R5cGUudG9nZ2xlUm9sbGluZ01vZGU9ZnVuY3Rpb24oKXt0aGlzLnJhbmdlLnJvbGxpbmc/dGhpcy5yYW5nZS5zdG9wUm9sbGluZygpOih2b2lkIDA9PXRoaXMub3B0aW9ucy5yb2xsaW5nTW9kZSYmdGhpcy5zZXRPcHRpb25zKHRoaXMub3B0aW9ucyksdGhpcy5yYW5nZS5zdGFydFJvbGxpbmcoKSl9LHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19ZnVuY3Rpb24gbih0LGUpe3ZhciBpPXAoKS5ob3VycygwKS5taW51dGVzKDApLnNlY29uZHMoMCkubWlsbGlzZWNvbmRzKDApLG89aS5jbG9uZSgpLmFkZCgtMywiZGF5cyIpLnZhbHVlT2YoKSxuPWkuY2xvbmUoKS5hZGQoMywiZGF5cyIpLnZhbHVlT2YoKTt0aGlzLm1pbGxpc2Vjb25kc1BlclBpeGVsQ2FjaGU9dm9pZCAwLHZvaWQgMD09PWU/KHRoaXMuc3RhcnQ9byx0aGlzLmVuZD1uKToodGhpcy5zdGFydD1lLnN0YXJ0fHxvLHRoaXMuZW5kPWUuZW5kfHxuKSx0aGlzLnJvbGxpbmc9ITEsdGhpcy5ib2R5PXQsdGhpcy5kZWx0YURpZmZlcmVuY2U9MCx0aGlzLnNjYWxlT2Zmc2V0PTAsdGhpcy5zdGFydFRvRnJvbnQ9ITEsdGhpcy5lbmRUb0Zyb250PSEwLHRoaXMuZGVmYXVsdE9wdGlvbnM9e3J0bDohMSxzdGFydDpudWxsLGVuZDpudWxsLG1vbWVudDpwLGRpcmVjdGlvbjoiaG9yaXpvbnRhbCIsbW92ZWFibGU6ITAsem9vbWFibGU6ITAsbWluOm51bGwsbWF4Om51bGwsem9vbU1pbjoxMCx6b29tTWF4OjMxNTM2ZTEwLHJvbGxpbmdNb2RlOntmb2xsb3c6ITEsb2Zmc2V0Oi41fX0sdGhpcy5vcHRpb25zPWMuZXh0ZW5kKHt9LHRoaXMuZGVmYXVsdE9wdGlvbnMpLHRoaXMucHJvcHM9e3RvdWNoOnt9fSx0aGlzLmFuaW1hdGlvblRpbWVyPW51bGwsdGhpcy5ib2R5LmVtaXR0ZXIub24oInBhbnN0YXJ0Iix0aGlzLl9vbkRyYWdTdGFydC5iaW5kKHRoaXMpKSx0aGlzLmJvZHkuZW1pdHRlci5vbigicGFubW92ZSIsdGhpcy5fb25EcmFnLmJpbmQodGhpcykpLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJwYW5lbmQiLHRoaXMuX29uRHJhZ0VuZC5iaW5kKHRoaXMpKSx0aGlzLmJvZHkuZW1pdHRlci5vbigibW91c2V3aGVlbCIsdGhpcy5fb25Nb3VzZVdoZWVsLmJpbmQodGhpcykpLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJ0b3VjaCIsdGhpcy5fb25Ub3VjaC5iaW5kKHRoaXMpKSx0aGlzLmJvZHkuZW1pdHRlci5vbigicGluY2giLHRoaXMuX29uUGluY2guYmluZCh0aGlzKSksdGhpcy5ib2R5LmRvbS5yb2xsaW5nTW9kZUJ0bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5zdGFydFJvbGxpbmcuYmluZCh0aGlzKSksdGhpcy5zZXRPcHRpb25zKGUpfWZ1bmN0aW9uIHModCl7aWYoImhvcml6b250YWwiIT10JiYidmVydGljYWwiIT10KXRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZGlyZWN0aW9uICInK3QrJyIuIENob29zZSAiaG9yaXpvbnRhbCIgb3IgInZlcnRpY2FsIi4nKX12YXIgcj1pKDU4KSxhPW8ociksaD1pKDkwKSxkPW8oaCksbD1pKDYyKSx1PW8obCksYz1pKDEpLHA9KGkoMTIwKSxpKDgyKSksZj1pKDEyMSksbT1pKDEyMik7bi5wcm90b3R5cGU9bmV3IGYsbi5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbih0KXtpZih0KXt2YXIgZT1bImFuaW1hdGlvbiIsImRpcmVjdGlvbiIsIm1pbiIsIm1heCIsInpvb21NaW4iLCJ6b29tTWF4IiwibW92ZWFibGUiLCJ6b29tYWJsZSIsIm1vbWVudCIsImFjdGl2YXRlIiwiaGlkZGVuRGF0ZXMiLCJ6b29tS2V5IiwicnRsIiwic2hvd0N1cnJlbnRUaW1lIiwicm9sbGluZ01vZGUiLCJob3Jpem9udGFsU2Nyb2xsIl07Yy5zZWxlY3RpdmVFeHRlbmQoZSx0aGlzLm9wdGlvbnMsdCksdC5yb2xsaW5nTW9kZSYmdC5yb2xsaW5nTW9kZS5mb2xsb3cmJnRoaXMuc3RhcnRSb2xsaW5nKCksKCJzdGFydCJpbiB0fHwiZW5kImluIHQpJiZ0aGlzLnNldFJhbmdlKHQuc3RhcnQsdC5lbmQpfX0sbi5wcm90b3R5cGUuc3RhcnRSb2xsaW5nPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2Uuc3RvcFJvbGxpbmcoKSxlLnJvbGxpbmc9ITA7dmFyIGk9ZS5lbmQtZS5zdGFydCxvPWMuY29udmVydChuZXcgRGF0ZSwiRGF0ZSIpLnZhbHVlT2YoKSxuPW8taSplLm9wdGlvbnMucm9sbGluZ01vZGUub2Zmc2V0LHM9bytpKigxLWUub3B0aW9ucy5yb2xsaW5nTW9kZS5vZmZzZXQpLHI9KCFlLm9wdGlvbnN8fHZvaWQgMD09PWUub3B0aW9ucy5hbmltYXRpb258fGUub3B0aW9ucy5hbmltYXRpb24se2FuaW1hdGlvbjohMX0pO2Uuc2V0UmFuZ2UobixzLHIpO3ZhciBhPWUuY29udmVyc2lvbihlLmJvZHkuZG9tUHJvcHMuY2VudGVyLndpZHRoKS5zY2FsZSxpPTEvYS8xMDtpPDMwJiYoaT0zMCksaT4xZTMmJihpPTFlMyksZS5ib2R5LmRvbS5yb2xsaW5nTW9kZUJ0bi5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLGUuY3VycmVudFRpbWVUaW1lcj1zZXRUaW1lb3V0KHQsaSl9dmFyIGU9dGhpczt0KCl9LG4ucHJvdG90eXBlLnN0b3BSb2xsaW5nPWZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5jdXJyZW50VGltZVRpbWVyJiYoY2xlYXJUaW1lb3V0KHRoaXMuY3VycmVudFRpbWVUaW1lciksdGhpcy5yb2xsaW5nPSExLHRoaXMuYm9keS5kb20ucm9sbGluZ01vZGVCdG4uc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIpfSxuLnByb3RvdHlwZS5zZXRSYW5nZT1mdW5jdGlvbih0LGUsaSxvKXtpfHwoaT17fSksITAhPT1pLmJ5VXNlciYmKGkuYnlVc2VyPSExKTt2YXIgbj10aGlzLHM9dm9pZCAwIT10P2MuY29udmVydCh0LCJEYXRlIikudmFsdWVPZigpOm51bGwscj12b2lkIDAhPWU/Yy5jb252ZXJ0KGUsIkRhdGUiKS52YWx1ZU9mKCk6bnVsbDtpZih0aGlzLl9jYW5jZWxBbmltYXRpb24oKSx0aGlzLm1pbGxpc2Vjb25kc1BlclBpeGVsQ2FjaGU9dm9pZCAwLGkuYW5pbWF0aW9uKXt2YXIgaD10aGlzLnN0YXJ0LGw9dGhpcy5lbmQscD0ib2JqZWN0Ij09PSgwLHUuZGVmYXVsdCkoaS5hbmltYXRpb24pJiYiZHVyYXRpb24iaW4gaS5hbmltYXRpb24/aS5hbmltYXRpb24uZHVyYXRpb246NTAwLGY9Im9iamVjdCI9PT0oMCx1LmRlZmF1bHQpKGkuYW5pbWF0aW9uKSYmImVhc2luZ0Z1bmN0aW9uImluIGkuYW5pbWF0aW9uP2kuYW5pbWF0aW9uLmVhc2luZ0Z1bmN0aW9uOiJlYXNlSW5PdXRRdWFkIix2PWMuZWFzaW5nRnVuY3Rpb25zW2ZdO2lmKCF2KXRocm93IG5ldyBFcnJvcigiVW5rbm93biBlYXNpbmcgZnVuY3Rpb24gIisoMCxkLmRlZmF1bHQpKGYpKyIuIENob29zZSBmcm9tOiAiKygwLGEuZGVmYXVsdCkoYy5lYXNpbmdGdW5jdGlvbnMpLmpvaW4oIiwgIikpO3ZhciBnPShuZXcgRGF0ZSkudmFsdWVPZigpLHk9ITE7cmV0dXJuIGZ1bmN0aW9uIHQoKXtpZighbi5wcm9wcy50b3VjaC5kcmFnZ2luZyl7dmFyIGU9KG5ldyBEYXRlKS52YWx1ZU9mKCksYT1lLWcsZD12KGEvcCksdT1hPnAsYz11fHxudWxsPT09cz9zOmgrKHMtaCkqZCxmPXV8fG51bGw9PT1yP3I6bCsoci1sKSpkO2I9bi5fYXBwbHlSYW5nZShjLGYpLG0udXBkYXRlSGlkZGVuRGF0ZXMobi5vcHRpb25zLm1vbWVudCxuLmJvZHksbi5vcHRpb25zLmhpZGRlbkRhdGVzKSx5PXl8fGI7dmFyIF89e3N0YXJ0Om5ldyBEYXRlKG4uc3RhcnQpLGVuZDpuZXcgRGF0ZShuLmVuZCksYnlVc2VyOmkuYnlVc2VyLGV2ZW50OmkuZXZlbnR9O2lmKGImJm4uYm9keS5lbWl0dGVyLmVtaXQoInJhbmdlY2hhbmdlIixfKSx1KXtpZih5JiYobi5ib2R5LmVtaXR0ZXIuZW1pdCgicmFuZ2VjaGFuZ2VkIixfKSxvKSlyZXR1cm4gbygpfWVsc2Ugbi5hbmltYXRpb25UaW1lcj1zZXRUaW1lb3V0KHQsMjApfX0oKX12YXIgYj10aGlzLl9hcHBseVJhbmdlKHMscik7aWYobS51cGRhdGVIaWRkZW5EYXRlcyh0aGlzLm9wdGlvbnMubW9tZW50LHRoaXMuYm9keSx0aGlzLm9wdGlvbnMuaGlkZGVuRGF0ZXMpLGIpe3ZhciBfPXtzdGFydDpuZXcgRGF0ZSh0aGlzLnN0YXJ0KSxlbmQ6bmV3IERhdGUodGhpcy5lbmQpLGJ5VXNlcjppLmJ5VXNlcixldmVudDppLmV2ZW50fTtpZih0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJyYW5nZWNoYW5nZSIsXyksY2xlYXJUaW1lb3V0KG4udGltZW91dElEKSxuLnRpbWVvdXRJRD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bi5ib2R5LmVtaXR0ZXIuZW1pdCgicmFuZ2VjaGFuZ2VkIixfKX0sMjAwKSxvKXJldHVybiBvKCl9fSxuLnByb3RvdHlwZS5nZXRNaWxsaXNlY29uZHNQZXJQaXhlbD1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT10aGlzLm1pbGxpc2Vjb25kc1BlclBpeGVsQ2FjaGUmJih0aGlzLm1pbGxpc2Vjb25kc1BlclBpeGVsQ2FjaGU9KHRoaXMuZW5kLXRoaXMuc3RhcnQpL3RoaXMuYm9keS5kb20uY2VudGVyLmNsaWVudFdpZHRoKSx0aGlzLm1pbGxpc2Vjb25kc1BlclBpeGVsQ2FjaGV9LG4ucHJvdG90eXBlLl9jYW5jZWxBbmltYXRpb249ZnVuY3Rpb24oKXt0aGlzLmFuaW1hdGlvblRpbWVyJiYoY2xlYXJUaW1lb3V0KHRoaXMuYW5pbWF0aW9uVGltZXIpLHRoaXMuYW5pbWF0aW9uVGltZXI9bnVsbCl9LG4ucHJvdG90eXBlLl9hcHBseVJhbmdlPWZ1bmN0aW9uKHQsZSl7dmFyIGksbz1udWxsIT10P2MuY29udmVydCh0LCJEYXRlIikudmFsdWVPZigpOnRoaXMuc3RhcnQsbj1udWxsIT1lP2MuY29udmVydChlLCJEYXRlIikudmFsdWVPZigpOnRoaXMuZW5kLHM9bnVsbCE9dGhpcy5vcHRpb25zLm1heD9jLmNvbnZlcnQodGhpcy5vcHRpb25zLm1heCwiRGF0ZSIpLnZhbHVlT2YoKTpudWxsLHI9bnVsbCE9dGhpcy5vcHRpb25zLm1pbj9jLmNvbnZlcnQodGhpcy5vcHRpb25zLm1pbiwiRGF0ZSIpLnZhbHVlT2YoKTpudWxsO2lmKGlzTmFOKG8pfHxudWxsPT09byl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RhcnQgIicrdCsnIicpO2lmKGlzTmFOKG4pfHxudWxsPT09bil0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZW5kICInK2UrJyInKTtpZihuPG8mJihuPW8pLG51bGwhPT1yJiZvPHImJihpPXItbyxvKz1pLG4rPWksbnVsbCE9cyYmbj5zJiYobj1zKSksbnVsbCE9PXMmJm4+cyYmKGk9bi1zLG8tPWksbi09aSxudWxsIT1yJiZvPHImJihvPXIpKSxudWxsIT09dGhpcy5vcHRpb25zLnpvb21NaW4pe3ZhciBhPXBhcnNlRmxvYXQodGhpcy5vcHRpb25zLnpvb21NaW4pO2lmKGE8MCYmKGE9MCksbi1vPGEpe3RoaXMuZW5kLXRoaXMuc3RhcnQ9PT1hJiZvPj10aGlzLnN0YXJ0LS41JiZuPD10aGlzLmVuZD8obz10aGlzLnN0YXJ0LG49dGhpcy5lbmQpOihpPWEtKG4tbyksby09aS8yLG4rPWkvMil9fWlmKG51bGwhPT10aGlzLm9wdGlvbnMuem9vbU1heCl7dmFyIGg9cGFyc2VGbG9hdCh0aGlzLm9wdGlvbnMuem9vbU1heCk7aDwwJiYoaD0wKSxuLW8+aCYmKHRoaXMuZW5kLXRoaXMuc3RhcnQ9PT1oJiZvPHRoaXMuc3RhcnQmJm4+dGhpcy5lbmQ/KG89dGhpcy5zdGFydCxuPXRoaXMuZW5kKTooaT1uLW8taCxvKz1pLzIsbi09aS8yKSl9dmFyIGQ9dGhpcy5zdGFydCE9b3x8dGhpcy5lbmQhPW47cmV0dXJuIG8+PXRoaXMuc3RhcnQmJm88PXRoaXMuZW5kfHxuPj10aGlzLnN0YXJ0JiZuPD10aGlzLmVuZHx8dGhpcy5zdGFydD49byYmdGhpcy5zdGFydDw9bnx8dGhpcy5lbmQ+PW8mJnRoaXMuZW5kPD1ufHx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJjaGVja1JhbmdlZEl0ZW1zIiksdGhpcy5zdGFydD1vLHRoaXMuZW5kPW4sZH0sbi5wcm90b3R5cGUuZ2V0UmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm57c3RhcnQ6dGhpcy5zdGFydCxlbmQ6dGhpcy5lbmR9fSxuLnByb3RvdHlwZS5jb252ZXJzaW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uY29udmVyc2lvbih0aGlzLnN0YXJ0LHRoaXMuZW5kLHQsZSl9LG4uY29udmVyc2lvbj1mdW5jdGlvbih0LGUsaSxvKXtyZXR1cm4gdm9pZCAwPT09byYmKG89MCksMCE9aSYmZS10IT0wP3tvZmZzZXQ6dCxzY2FsZTppLyhlLXQtbyl9OntvZmZzZXQ6MCxzY2FsZToxfX0sbi5wcm90b3R5cGUuX29uRHJhZ1N0YXJ0PWZ1bmN0aW9uKHQpe3RoaXMuZGVsdGFEaWZmZXJlbmNlPTAsdGhpcy5wcmV2aW91c0RlbHRhPTAsdGhpcy5vcHRpb25zLm1vdmVhYmxlJiZ0aGlzLl9pc0luc2lkZVJhbmdlKHQpJiZ0aGlzLnByb3BzLnRvdWNoLmFsbG93RHJhZ2dpbmcmJih0aGlzLnN0b3BSb2xsaW5nKCksdGhpcy5wcm9wcy50b3VjaC5zdGFydD10aGlzLnN0YXJ0LHRoaXMucHJvcHMudG91Y2guZW5kPXRoaXMuZW5kLHRoaXMucHJvcHMudG91Y2guZHJhZ2dpbmc9ITAsdGhpcy5ib2R5LmRvbS5yb290JiYodGhpcy5ib2R5LmRvbS5yb290LnN0eWxlLmN1cnNvcj0ibW92ZSIpKX0sbi5wcm90b3R5cGUuX29uRHJhZz1mdW5jdGlvbih0KXtpZih0JiZ0aGlzLnByb3BzLnRvdWNoLmRyYWdnaW5nJiZ0aGlzLm9wdGlvbnMubW92ZWFibGUmJnRoaXMucHJvcHMudG91Y2guYWxsb3dEcmFnZ2luZyl7dmFyIGU9dGhpcy5vcHRpb25zLmRpcmVjdGlvbjtzKGUpO3ZhciBpPSJob3Jpem9udGFsIj09ZT90LmRlbHRhWDp0LmRlbHRhWTtpLT10aGlzLmRlbHRhRGlmZmVyZW5jZTt2YXIgbz10aGlzLnByb3BzLnRvdWNoLmVuZC10aGlzLnByb3BzLnRvdWNoLnN0YXJ0O28tPW0uZ2V0SGlkZGVuRHVyYXRpb25CZXR3ZWVuKHRoaXMuYm9keS5oaWRkZW5EYXRlcyx0aGlzLnN0YXJ0LHRoaXMuZW5kKTt2YXIgbj0iaG9yaXpvbnRhbCI9PWU/dGhpcy5ib2R5LmRvbVByb3BzLmNlbnRlci53aWR0aDp0aGlzLmJvZHkuZG9tUHJvcHMuY2VudGVyLmhlaWdodDtpZih0aGlzLm9wdGlvbnMucnRsKXZhciByPWkvbipvO2Vsc2UgdmFyIHI9LWkvbipvO3ZhciBhPXRoaXMucHJvcHMudG91Y2guc3RhcnQrcixoPXRoaXMucHJvcHMudG91Y2guZW5kK3IsZD1tLnNuYXBBd2F5RnJvbUhpZGRlbih0aGlzLmJvZHkuaGlkZGVuRGF0ZXMsYSx0aGlzLnByZXZpb3VzRGVsdGEtaSwhMCksbD1tLnNuYXBBd2F5RnJvbUhpZGRlbih0aGlzLmJvZHkuaGlkZGVuRGF0ZXMsaCx0aGlzLnByZXZpb3VzRGVsdGEtaSwhMCk7aWYoZCE9YXx8bCE9aClyZXR1cm4gdGhpcy5kZWx0YURpZmZlcmVuY2UrPWksdGhpcy5wcm9wcy50b3VjaC5zdGFydD1kLHRoaXMucHJvcHMudG91Y2guZW5kPWwsdm9pZCB0aGlzLl9vbkRyYWcodCk7dGhpcy5wcmV2aW91c0RlbHRhPWksdGhpcy5fYXBwbHlSYW5nZShhLGgpO3ZhciB1PW5ldyBEYXRlKHRoaXMuc3RhcnQpLGM9bmV3IERhdGUodGhpcy5lbmQpO3RoaXMuYm9keS5lbWl0dGVyLmVtaXQoInJhbmdlY2hhbmdlIix7c3RhcnQ6dSxlbmQ6YyxieVVzZXI6ITAsZXZlbnQ6dH0pLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoInBhbm1vdmUiKX19LG4ucHJvdG90eXBlLl9vbkRyYWdFbmQ9ZnVuY3Rpb24odCl7dGhpcy5wcm9wcy50b3VjaC5kcmFnZ2luZyYmdGhpcy5vcHRpb25zLm1vdmVhYmxlJiZ0aGlzLnByb3BzLnRvdWNoLmFsbG93RHJhZ2dpbmcmJih0aGlzLnByb3BzLnRvdWNoLmRyYWdnaW5nPSExLHRoaXMuYm9keS5kb20ucm9vdCYmKHRoaXMuYm9keS5kb20ucm9vdC5zdHlsZS5jdXJzb3I9ImF1dG8iKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJyYW5nZWNoYW5nZWQiLHtzdGFydDpuZXcgRGF0ZSh0aGlzLnN0YXJ0KSxlbmQ6bmV3IERhdGUodGhpcy5lbmQpLGJ5VXNlcjohMCxldmVudDp0fSkpfSxuLnByb3RvdHlwZS5fb25Nb3VzZVdoZWVsPWZ1bmN0aW9uKHQpe3ZhciBlPTA7aWYodC53aGVlbERlbHRhP2U9dC53aGVlbERlbHRhLzEyMDp0LmRldGFpbCYmKGU9LXQuZGV0YWlsLzMpLHRoaXMub3B0aW9ucy56b29tS2V5JiYhdFt0aGlzLm9wdGlvbnMuem9vbUtleV0mJnRoaXMub3B0aW9ucy56b29tYWJsZXx8IXRoaXMub3B0aW9ucy56b29tYWJsZSYmdGhpcy5vcHRpb25zLm1vdmVhYmxlKXtpZih0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbFNjcm9sbCl7dC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBpPWUqKHRoaXMuZW5kLXRoaXMuc3RhcnQpLzIwLG89dGhpcy5zdGFydC1pLG49dGhpcy5lbmQtaSxzPXthbmltYXRpb246ITEsYnlVc2VyOiEwLGV2ZW50OnR9O3RoaXMuc2V0UmFuZ2UobyxuLHMpfX1lbHNlIGlmKHRoaXMub3B0aW9ucy56b29tYWJsZSYmdGhpcy5vcHRpb25zLm1vdmVhYmxlJiZ0aGlzLl9pc0luc2lkZVJhbmdlKHQpJiZlKXt2YXIgcjtyPWU8MD8xLWUvNToxLygxK2UvNSk7dmFyIGE7aWYodGhpcy5yb2xsaW5nKWE9dGhpcy5zdGFydCsodGhpcy5lbmQtdGhpcy5zdGFydCkqdGhpcy5vcHRpb25zLnJvbGxpbmdNb2RlLm9mZnNldDtlbHNle3ZhciBoPXRoaXMuZ2V0UG9pbnRlcih7eDp0LmNsaWVudFgseTp0LmNsaWVudFl9LHRoaXMuYm9keS5kb20uY2VudGVyKTthPXRoaXMuX3BvaW50ZXJUb0RhdGUoaCl9dGhpcy56b29tKHIsYSxlLHQpLHQucHJldmVudERlZmF1bHQoKX19LG4ucHJvdG90eXBlLl9vblRvdWNoPWZ1bmN0aW9uKHQpe3RoaXMucHJvcHMudG91Y2guc3RhcnQ9dGhpcy5zdGFydCx0aGlzLnByb3BzLnRvdWNoLmVuZD10aGlzLmVuZCx0aGlzLnByb3BzLnRvdWNoLmFsbG93RHJhZ2dpbmc9ITAsdGhpcy5wcm9wcy50b3VjaC5jZW50ZXI9bnVsbCx0aGlzLnNjYWxlT2Zmc2V0PTAsdGhpcy5kZWx0YURpZmZlcmVuY2U9MH0sbi5wcm90b3R5cGUuX29uUGluY2g9ZnVuY3Rpb24odCl7aWYodGhpcy5vcHRpb25zLnpvb21hYmxlJiZ0aGlzLm9wdGlvbnMubW92ZWFibGUpe3RoaXMucHJvcHMudG91Y2guYWxsb3dEcmFnZ2luZz0hMSx0aGlzLnByb3BzLnRvdWNoLmNlbnRlcnx8KHRoaXMucHJvcHMudG91Y2guY2VudGVyPXRoaXMuZ2V0UG9pbnRlcih0LmNlbnRlcix0aGlzLmJvZHkuZG9tLmNlbnRlcikpLHRoaXMuc3RvcFJvbGxpbmcoKTt2YXIgZT0xLyh0LnNjYWxlK3RoaXMuc2NhbGVPZmZzZXQpLGk9dGhpcy5fcG9pbnRlclRvRGF0ZSh0aGlzLnByb3BzLnRvdWNoLmNlbnRlciksbz1tLmdldEhpZGRlbkR1cmF0aW9uQmV0d2Vlbih0aGlzLmJvZHkuaGlkZGVuRGF0ZXMsdGhpcy5zdGFydCx0aGlzLmVuZCksbj1tLmdldEhpZGRlbkR1cmF0aW9uQmVmb3JlKHRoaXMub3B0aW9ucy5tb21lbnQsdGhpcy5ib2R5LmhpZGRlbkRhdGVzLHRoaXMsaSkscz1vLW4scj1pLW4rKHRoaXMucHJvcHMudG91Y2guc3RhcnQtKGktbikpKmUsYT1pK3MrKHRoaXMucHJvcHMudG91Y2guZW5kLShpK3MpKSplO3RoaXMuc3RhcnRUb0Zyb250PTEtZTw9MCx0aGlzLmVuZFRvRnJvbnQ9ZS0xPD0wO3ZhciBoPW0uc25hcEF3YXlGcm9tSGlkZGVuKHRoaXMuYm9keS5oaWRkZW5EYXRlcyxyLDEtZSwhMCksZD1tLnNuYXBBd2F5RnJvbUhpZGRlbih0aGlzLmJvZHkuaGlkZGVuRGF0ZXMsYSxlLTEsITApO2g9PXImJmQ9PWF8fCh0aGlzLnByb3BzLnRvdWNoLnN0YXJ0PWgsdGhpcy5wcm9wcy50b3VjaC5lbmQ9ZCx0aGlzLnNjYWxlT2Zmc2V0PTEtdC5zY2FsZSxyPWgsYT1kKTt2YXIgbD17YW5pbWF0aW9uOiExLGJ5VXNlcjohMCxldmVudDp0fTt0aGlzLnNldFJhbmdlKHIsYSxsKSx0aGlzLnN0YXJ0VG9Gcm9udD0hMSx0aGlzLmVuZFRvRnJvbnQ9ITB9fSxuLnByb3RvdHlwZS5faXNJbnNpZGVSYW5nZT1mdW5jdGlvbih0KXt2YXIgZT10LmNlbnRlcj90LmNlbnRlci54OnQuY2xpZW50WDtpZih0aGlzLm9wdGlvbnMucnRsKXZhciBpPWUtYy5nZXRBYnNvbHV0ZUxlZnQodGhpcy5ib2R5LmRvbS5jZW50ZXJDb250YWluZXIpO2Vsc2UgdmFyIGk9Yy5nZXRBYnNvbHV0ZVJpZ2h0KHRoaXMuYm9keS5kb20uY2VudGVyQ29udGFpbmVyKS1lO3ZhciBvPXRoaXMuYm9keS51dGlsLnRvVGltZShpKTtyZXR1cm4gbz49dGhpcy5zdGFydCYmbzw9dGhpcy5lbmR9LG4ucHJvdG90eXBlLl9wb2ludGVyVG9EYXRlPWZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy5vcHRpb25zLmRpcmVjdGlvbjtpZihzKGkpLCJob3Jpem9udGFsIj09aSlyZXR1cm4gdGhpcy5ib2R5LnV0aWwudG9UaW1lKHQueCkudmFsdWVPZigpO3ZhciBvPXRoaXMuYm9keS5kb21Qcm9wcy5jZW50ZXIuaGVpZ2h0O3JldHVybiBlPXRoaXMuY29udmVyc2lvbihvKSx0LnkvZS5zY2FsZStlLm9mZnNldH0sbi5wcm90b3R5cGUuZ2V0UG9pbnRlcj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm9wdGlvbnMucnRsP3t4OmMuZ2V0QWJzb2x1dGVSaWdodChlKS10LngseTp0LnktYy5nZXRBYnNvbHV0ZVRvcChlKX06e3g6dC54LWMuZ2V0QWJzb2x1dGVMZWZ0KGUpLHk6dC55LWMuZ2V0QWJzb2x1dGVUb3AoZSl9fSxuLnByb3RvdHlwZS56b29tPWZ1bmN0aW9uKHQsZSxpLG8pe251bGw9PWUmJihlPSh0aGlzLnN0YXJ0K3RoaXMuZW5kKS8yKTt2YXIgbj1tLmdldEhpZGRlbkR1cmF0aW9uQmV0d2Vlbih0aGlzLmJvZHkuaGlkZGVuRGF0ZXMsdGhpcy5zdGFydCx0aGlzLmVuZCkscz1tLmdldEhpZGRlbkR1cmF0aW9uQmVmb3JlKHRoaXMub3B0aW9ucy5tb21lbnQsdGhpcy5ib2R5LmhpZGRlbkRhdGVzLHRoaXMsZSkscj1uLXMsYT1lLXMrKHRoaXMuc3RhcnQtKGUtcykpKnQsaD1lK3IrKHRoaXMuZW5kLShlK3IpKSp0O3RoaXMuc3RhcnRUb0Zyb250PSEoaT4wKSx0aGlzLmVuZFRvRnJvbnQ9ISgtaT4wKTt2YXIgZD1tLnNuYXBBd2F5RnJvbUhpZGRlbih0aGlzLmJvZHkuaGlkZGVuRGF0ZXMsYSxpLCEwKSxsPW0uc25hcEF3YXlGcm9tSGlkZGVuKHRoaXMuYm9keS5oaWRkZW5EYXRlcyxoLC1pLCEwKTtkPT1hJiZsPT1ofHwoYT1kLGg9bCk7dmFyIHU9e2FuaW1hdGlvbjohMSxieVVzZXI6ITAsZXZlbnQ6b307dGhpcy5zZXRSYW5nZShhLGgsdSksdGhpcy5zdGFydFRvRnJvbnQ9ITEsdGhpcy5lbmRUb0Zyb250PSEwfSxuLnByb3RvdHlwZS5tb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZW5kLXRoaXMuc3RhcnQsaT10aGlzLnN0YXJ0K2UqdCxvPXRoaXMuZW5kK2UqdDt0aGlzLnN0YXJ0PWksdGhpcy5lbmQ9b30sbi5wcm90b3R5cGUubW92ZVRvPWZ1bmN0aW9uKHQpe3ZhciBlPSh0aGlzLnN0YXJ0K3RoaXMuZW5kKS8yLGk9ZS10LG89dGhpcy5zdGFydC1pLG49dGhpcy5lbmQtaSxzPXthbmltYXRpb246ITEsYnlVc2VyOiEwLGV2ZW50Om51bGx9O3RoaXMuc2V0UmFuZ2UobyxuLHMpfSx0LmV4cG9ydHM9bn0sZnVuY3Rpb24odCxlLGkpe2koMTEzKTtlLm9uVG91Y2g9ZnVuY3Rpb24odCxlKXtlLmlucHV0SGFuZGxlcj1mdW5jdGlvbih0KXt0LmlzRmlyc3QmJmUodCl9LHQub24oImhhbW1lci5pbnB1dCIsZS5pbnB1dEhhbmRsZXIpfSxlLm9uUmVsZWFzZT1mdW5jdGlvbih0LGUpe3JldHVybiBlLmlucHV0SGFuZGxlcj1mdW5jdGlvbih0KXt0LmlzRmluYWwmJmUodCl9LHQub24oImhhbW1lci5pbnB1dCIsZS5pbnB1dEhhbmRsZXIpfSxlLm9mZlRvdWNoPWZ1bmN0aW9uKHQsZSl7dC5vZmYoImhhbW1lci5pbnB1dCIsZS5pbnB1dEhhbmRsZXIpfSxlLm9mZlJlbGVhc2U9ZS5vZmZUb3VjaCxlLmRpc2FibGVQcmV2ZW50RGVmYXVsdFZlcnRpY2FsbHk9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VG91Y2hBY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm5bInBhbi15Il19LHR9fSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUpe3RoaXMub3B0aW9ucz1udWxsLHRoaXMucHJvcHM9bnVsbH12YXIgbj1pKDEpO28ucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7dCYmbi5leHRlbmQodGhpcy5vcHRpb25zLHQpfSxvLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sby5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30sDQpvLnByb3RvdHlwZS5faXNSZXNpemVkPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wcm9wcy5fcHJldmlvdXNXaWR0aCE9PXRoaXMucHJvcHMud2lkdGh8fHRoaXMucHJvcHMuX3ByZXZpb3VzSGVpZ2h0IT09dGhpcy5wcm9wcy5oZWlnaHQ7cmV0dXJuIHRoaXMucHJvcHMuX3ByZXZpb3VzV2lkdGg9dGhpcy5wcm9wcy53aWR0aCx0aGlzLnByb3BzLl9wcmV2aW91c0hlaWdodD10aGlzLnByb3BzLmhlaWdodCx0fSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlKXtlLmNvbnZlcnRIaWRkZW5PcHRpb25zPWZ1bmN0aW9uKHQsaSxvKXtpZihvJiYhQXJyYXkuaXNBcnJheShvKSlyZXR1cm4gZS5jb252ZXJ0SGlkZGVuT3B0aW9ucyh0LGksW29dKTtpZihpLmhpZGRlbkRhdGVzPVtdLG8mJjE9PUFycmF5LmlzQXJyYXkobykpe2Zvcih2YXIgbj0wO248by5sZW5ndGg7bisrKWlmKHZvaWQgMD09PW9bbl0ucmVwZWF0KXt2YXIgcz17fTtzLnN0YXJ0PXQob1tuXS5zdGFydCkudG9EYXRlKCkudmFsdWVPZigpLHMuZW5kPXQob1tuXS5lbmQpLnRvRGF0ZSgpLnZhbHVlT2YoKSxpLmhpZGRlbkRhdGVzLnB1c2gocyl9aS5oaWRkZW5EYXRlcy5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuc3RhcnQtZS5zdGFydH0pfX0sZS51cGRhdGVIaWRkZW5EYXRlcz1mdW5jdGlvbih0LGksbyl7aWYobyYmIUFycmF5LmlzQXJyYXkobykpcmV0dXJuIGUudXBkYXRlSGlkZGVuRGF0ZXModCxpLFtvXSk7aWYobyYmdm9pZCAwIT09aS5kb21Qcm9wcy5jZW50ZXJDb250YWluZXIud2lkdGgpe2UuY29udmVydEhpZGRlbk9wdGlvbnModCxpLG8pO2Zvcih2YXIgbj10KGkucmFuZ2Uuc3RhcnQpLHM9dChpLnJhbmdlLmVuZCkscj1pLnJhbmdlLmVuZC1pLnJhbmdlLnN0YXJ0LGE9ci9pLmRvbVByb3BzLmNlbnRlckNvbnRhaW5lci53aWR0aCxoPTA7aDxvLmxlbmd0aDtoKyspaWYodm9pZCAwIT09b1toXS5yZXBlYXQpe3ZhciBkPXQob1toXS5zdGFydCksbD10KG9baF0uZW5kKTtpZigiSW52YWxpZCBEYXRlIj09ZC5fZCl0aHJvdyBuZXcgRXJyb3IoIlN1cHBsaWVkIHN0YXJ0IGRhdGUgaXMgbm90IHZhbGlkOiAiK29baF0uc3RhcnQpO2lmKCJJbnZhbGlkIERhdGUiPT1sLl9kKXRocm93IG5ldyBFcnJvcigiU3VwcGxpZWQgZW5kIGRhdGUgaXMgbm90IHZhbGlkOiAiK29baF0uZW5kKTt2YXIgdT1sLWQ7aWYodT49NCphKXt2YXIgYz0wLHA9cy5jbG9uZSgpO3N3aXRjaChvW2hdLnJlcGVhdCl7Y2FzZSJkYWlseSI6ZC5kYXkoKSE9bC5kYXkoKSYmKGM9MSksZC5kYXlPZlllYXIobi5kYXlPZlllYXIoKSksZC55ZWFyKG4ueWVhcigpKSxkLnN1YnRyYWN0KDcsImRheXMiKSxsLmRheU9mWWVhcihuLmRheU9mWWVhcigpKSxsLnllYXIobi55ZWFyKCkpLGwuc3VidHJhY3QoNy1jLCJkYXlzIikscC5hZGQoMSwid2Vla3MiKTticmVhaztjYXNlIndlZWtseSI6dmFyIGY9bC5kaWZmKGQsImRheXMiKSxtPWQuZGF5KCk7ZC5kYXRlKG4uZGF0ZSgpKSxkLm1vbnRoKG4ubW9udGgoKSksZC55ZWFyKG4ueWVhcigpKSxsPWQuY2xvbmUoKSxkLmRheShtKSxsLmRheShtKSxsLmFkZChmLCJkYXlzIiksZC5zdWJ0cmFjdCgxLCJ3ZWVrcyIpLGwuc3VidHJhY3QoMSwid2Vla3MiKSxwLmFkZCgxLCJ3ZWVrcyIpO2JyZWFrO2Nhc2UibW9udGhseSI6ZC5tb250aCgpIT1sLm1vbnRoKCkmJihjPTEpLGQubW9udGgobi5tb250aCgpKSxkLnllYXIobi55ZWFyKCkpLGQuc3VidHJhY3QoMSwibW9udGhzIiksbC5tb250aChuLm1vbnRoKCkpLGwueWVhcihuLnllYXIoKSksbC5zdWJ0cmFjdCgxLCJtb250aHMiKSxsLmFkZChjLCJtb250aHMiKSxwLmFkZCgxLCJtb250aHMiKTticmVhaztjYXNlInllYXJseSI6ZC55ZWFyKCkhPWwueWVhcigpJiYoYz0xKSxkLnllYXIobi55ZWFyKCkpLGQuc3VidHJhY3QoMSwieWVhcnMiKSxsLnllYXIobi55ZWFyKCkpLGwuc3VidHJhY3QoMSwieWVhcnMiKSxsLmFkZChjLCJ5ZWFycyIpLHAuYWRkKDEsInllYXJzIik7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdm9pZCBjb25zb2xlLmxvZygiV3JvbmcgcmVwZWF0IGZvcm1hdCwgYWxsb3dlZCBhcmU6IGRhaWx5LCB3ZWVrbHksIG1vbnRobHksIHllYXJseS4gR2l2ZW46IixvW2hdLnJlcGVhdCl9Zm9yKDtkPHA7KXN3aXRjaChpLmhpZGRlbkRhdGVzLnB1c2goe3N0YXJ0OmQudmFsdWVPZigpLGVuZDpsLnZhbHVlT2YoKX0pLG9baF0ucmVwZWF0KXtjYXNlImRhaWx5IjpkLmFkZCgxLCJkYXlzIiksbC5hZGQoMSwiZGF5cyIpO2JyZWFrO2Nhc2Uid2Vla2x5IjpkLmFkZCgxLCJ3ZWVrcyIpLGwuYWRkKDEsIndlZWtzIik7YnJlYWs7Y2FzZSJtb250aGx5IjpkLmFkZCgxLCJtb250aHMiKSxsLmFkZCgxLCJtb250aHMiKTticmVhaztjYXNlInllYXJseSI6ZC5hZGQoMSwieSIpLGwuYWRkKDEsInkiKTticmVhaztkZWZhdWx0OnJldHVybiB2b2lkIGNvbnNvbGUubG9nKCJXcm9uZyByZXBlYXQgZm9ybWF0LCBhbGxvd2VkIGFyZTogZGFpbHksIHdlZWtseSwgbW9udGhseSwgeWVhcmx5LiBHaXZlbjoiLG9baF0ucmVwZWF0KX1pLmhpZGRlbkRhdGVzLnB1c2goe3N0YXJ0OmQudmFsdWVPZigpLGVuZDpsLnZhbHVlT2YoKX0pfX1lLnJlbW92ZUR1cGxpY2F0ZXMoaSk7dmFyIHY9ZS5pc0hpZGRlbihpLnJhbmdlLnN0YXJ0LGkuaGlkZGVuRGF0ZXMpLGc9ZS5pc0hpZGRlbihpLnJhbmdlLmVuZCxpLmhpZGRlbkRhdGVzKSx5PWkucmFuZ2Uuc3RhcnQsYj1pLnJhbmdlLmVuZDsxPT12LmhpZGRlbiYmKHk9MT09aS5yYW5nZS5zdGFydFRvRnJvbnQ/di5zdGFydERhdGUtMTp2LmVuZERhdGUrMSksMT09Zy5oaWRkZW4mJihiPTE9PWkucmFuZ2UuZW5kVG9Gcm9udD9nLnN0YXJ0RGF0ZS0xOmcuZW5kRGF0ZSsxKSwxIT12LmhpZGRlbiYmMSE9Zy5oaWRkZW58fGkucmFuZ2UuX2FwcGx5UmFuZ2UoeSxiKX19LGUucmVtb3ZlRHVwbGljYXRlcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5oaWRkZW5EYXRlcyxpPVtdLG89MDtvPGUubGVuZ3RoO28rKylmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylvIT1uJiYxIT1lW25dLnJlbW92ZSYmMSE9ZVtvXS5yZW1vdmUmJihlW25dLnN0YXJ0Pj1lW29dLnN0YXJ0JiZlW25dLmVuZDw9ZVtvXS5lbmQ/ZVtuXS5yZW1vdmU9ITA6ZVtuXS5zdGFydD49ZVtvXS5zdGFydCYmZVtuXS5zdGFydDw9ZVtvXS5lbmQ/KGVbb10uZW5kPWVbbl0uZW5kLGVbbl0ucmVtb3ZlPSEwKTplW25dLmVuZD49ZVtvXS5zdGFydCYmZVtuXS5lbmQ8PWVbb10uZW5kJiYoZVtvXS5zdGFydD1lW25dLnN0YXJ0LGVbbl0ucmVtb3ZlPSEwKSk7Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDtvKyspITAhPT1lW29dLnJlbW92ZSYmaS5wdXNoKGVbb10pO3QuaGlkZGVuRGF0ZXM9aSx0LmhpZGRlbkRhdGVzLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zdGFydC1lLnN0YXJ0fSl9LGUucHJpbnREYXRlcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyljb25zb2xlLmxvZyhlLG5ldyBEYXRlKHRbZV0uc3RhcnQpLG5ldyBEYXRlKHRbZV0uZW5kKSx0W2VdLnN0YXJ0LHRbZV0uZW5kLHRbZV0ucmVtb3ZlKX0sZS5zdGVwT3ZlckhpZGRlbkRhdGVzPWZ1bmN0aW9uKHQsZSxpKXtmb3IodmFyIG89ITEsbj1lLmN1cnJlbnQudmFsdWVPZigpLHM9MDtzPGUuaGlkZGVuRGF0ZXMubGVuZ3RoO3MrKyl7dmFyIHI9ZS5oaWRkZW5EYXRlc1tzXS5zdGFydCxhPWUuaGlkZGVuRGF0ZXNbc10uZW5kO2lmKG4+PXImJm48YSl7bz0hMDticmVha319aWYoMT09byYmbjxlLl9lbmQudmFsdWVPZigpJiZuIT1pKXt2YXIgaD10KGkpLGQ9dChhKTtoLnllYXIoKSE9ZC55ZWFyKCk/ZS5zd2l0Y2hlZFllYXI9ITA6aC5tb250aCgpIT1kLm1vbnRoKCk/ZS5zd2l0Y2hlZE1vbnRoPSEwOmguZGF5T2ZZZWFyKCkhPWQuZGF5T2ZZZWFyKCkmJihlLnN3aXRjaGVkRGF5PSEwKSxlLmN1cnJlbnQ9ZH19LGUudG9TY3JlZW49ZnVuY3Rpb24odCxpLG8pe2lmKDA9PXQuYm9keS5oaWRkZW5EYXRlcy5sZW5ndGgpe3ZhciBuPXQucmFuZ2UuY29udmVyc2lvbihvKTtyZXR1cm4oaS52YWx1ZU9mKCktbi5vZmZzZXQpKm4uc2NhbGV9dmFyIHM9ZS5pc0hpZGRlbihpLHQuYm9keS5oaWRkZW5EYXRlcyk7MT09cy5oaWRkZW4mJihpPXMuc3RhcnREYXRlKTt2YXIgcj1lLmdldEhpZGRlbkR1cmF0aW9uQmV0d2Vlbih0LmJvZHkuaGlkZGVuRGF0ZXMsdC5yYW5nZS5zdGFydCx0LnJhbmdlLmVuZCk7aWYoaTx0LnJhbmdlLnN0YXJ0KXt2YXIgbj10LnJhbmdlLmNvbnZlcnNpb24obyxyKSxhPWUuZ2V0SGlkZGVuRHVyYXRpb25CZWZvcmVTdGFydCh0LmJvZHkuaGlkZGVuRGF0ZXMsaSxuLm9mZnNldCk7cmV0dXJuIGk9dC5vcHRpb25zLm1vbWVudChpKS50b0RhdGUoKS52YWx1ZU9mKCksaSs9YSwtKG4ub2Zmc2V0LWkudmFsdWVPZigpKSpuLnNjYWxlfWlmKGk+dC5yYW5nZS5lbmQpe3ZhciBoPXtzdGFydDp0LnJhbmdlLnN0YXJ0LGVuZDppfTtpPWUuY29ycmVjdFRpbWVGb3JIaWRkZW4odC5vcHRpb25zLm1vbWVudCx0LmJvZHkuaGlkZGVuRGF0ZXMsaCxpKTt2YXIgbj10LnJhbmdlLmNvbnZlcnNpb24obyxyKTtyZXR1cm4oaS52YWx1ZU9mKCktbi5vZmZzZXQpKm4uc2NhbGV9aT1lLmNvcnJlY3RUaW1lRm9ySGlkZGVuKHQub3B0aW9ucy5tb21lbnQsdC5ib2R5LmhpZGRlbkRhdGVzLHQucmFuZ2UsaSk7dmFyIG49dC5yYW5nZS5jb252ZXJzaW9uKG8scik7cmV0dXJuKGkudmFsdWVPZigpLW4ub2Zmc2V0KSpuLnNjYWxlfSxlLnRvVGltZT1mdW5jdGlvbih0LGksbyl7aWYoMD09dC5ib2R5LmhpZGRlbkRhdGVzLmxlbmd0aCl7dmFyIG49dC5yYW5nZS5jb252ZXJzaW9uKG8pO3JldHVybiBuZXcgRGF0ZShpL24uc2NhbGUrbi5vZmZzZXQpfXZhciBzPWUuZ2V0SGlkZGVuRHVyYXRpb25CZXR3ZWVuKHQuYm9keS5oaWRkZW5EYXRlcyx0LnJhbmdlLnN0YXJ0LHQucmFuZ2UuZW5kKSxyPXQucmFuZ2UuZW5kLXQucmFuZ2Uuc3RhcnQtcyxhPXIqaS9vLGg9ZS5nZXRBY2N1bXVsYXRlZEhpZGRlbkR1cmF0aW9uKHQuYm9keS5oaWRkZW5EYXRlcyx0LnJhbmdlLGEpO3JldHVybiBuZXcgRGF0ZShoK2ErdC5yYW5nZS5zdGFydCl9LGUuZ2V0SGlkZGVuRHVyYXRpb25CZXR3ZWVuPWZ1bmN0aW9uKHQsZSxpKXtmb3IodmFyIG89MCxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBzPXRbbl0uc3RhcnQscj10W25dLmVuZDtzPj1lJiZyPGkmJihvKz1yLXMpfXJldHVybiBvfSxlLmdldEhpZGRlbkR1cmF0aW9uQmVmb3JlU3RhcnQ9ZnVuY3Rpb24odCxlLGkpe2Zvcih2YXIgbz0wLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHM9dFtuXS5zdGFydCxyPXRbbl0uZW5kO3M+PWUmJnI8PWkmJihvKz1yLXMpfXJldHVybiBvfSxlLmNvcnJlY3RUaW1lRm9ySGlkZGVuPWZ1bmN0aW9uKHQsaSxvLG4pe3JldHVybiBuPXQobikudG9EYXRlKCkudmFsdWVPZigpLG4tPWUuZ2V0SGlkZGVuRHVyYXRpb25CZWZvcmUodCxpLG8sbil9LGUuZ2V0SGlkZGVuRHVyYXRpb25CZWZvcmU9ZnVuY3Rpb24odCxlLGksbyl7dmFyIG49MDtvPXQobykudG9EYXRlKCkudmFsdWVPZigpO2Zvcih2YXIgcz0wO3M8ZS5sZW5ndGg7cysrKXt2YXIgcj1lW3NdLnN0YXJ0LGE9ZVtzXS5lbmQ7cj49aS5zdGFydCYmYTxpLmVuZCYmbz49YSYmKG4rPWEtcil9cmV0dXJuIG59LGUuZ2V0QWNjdW11bGF0ZWRIaWRkZW5EdXJhdGlvbj1mdW5jdGlvbih0LGUsaSl7Zm9yKHZhciBvPTAsbj0wLHM9ZS5zdGFydCxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBhPXRbcl0uc3RhcnQsaD10W3JdLmVuZDtpZihhPj1lLnN0YXJ0JiZoPGUuZW5kKXtpZihuKz1hLXMscz1oLG4+PWkpYnJlYWs7bys9aC1hfX1yZXR1cm4gb30sZS5zbmFwQXdheUZyb21IaWRkZW49ZnVuY3Rpb24odCxpLG8sbil7dmFyIHM9ZS5pc0hpZGRlbihpLHQpO3JldHVybiAxPT1zLmhpZGRlbj9vPDA/MT09bj9zLnN0YXJ0RGF0ZS0ocy5lbmREYXRlLWkpLTE6cy5zdGFydERhdGUtMToxPT1uP3MuZW5kRGF0ZSsoaS1zLnN0YXJ0RGF0ZSkrMTpzLmVuZERhdGUrMTppfSxlLmlzSGlkZGVuPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV0uc3RhcnQsbj1lW2ldLmVuZDtpZih0Pj1vJiZ0PG4pcmV0dXJue2hpZGRlbjohMCxzdGFydERhdGU6byxlbmREYXRlOm59fXJldHVybntoaWRkZW46ITEsc3RhcnREYXRlOm8sZW5kRGF0ZTpufX19LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1mdW5jdGlvbiBuKCl7fXZhciBzPWkoOTApLHI9byhzKSxhPWkoNjIpLGg9byhhKSxkPWkoOTkpLGw9aSgxMTMpLHU9aSgxMjApLGM9aSgxKSxwPShpKDg5KSxpKDkzKSxpKDExOSksaSgxMjQpLGkoMTQwKSksZj1pKDE0MSksbT1pKDEyMiksdj1pKDE0Mik7ZChuLnByb3RvdHlwZSksbi5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe2lmKHRoaXMuaXNBY3RpdmUoKSYmdGhpcy5lbWl0KCJtb3VzZXdoZWVsIix0KSx0aGlzLm9wdGlvbnMudmVydGljYWxTY3JvbGwmJiF0aGlzLm9wdGlvbnMuaG9yaXpvbnRhbFNjcm9sbCYmdGhpcy5vcHRpb25zLnpvb21LZXkmJiF0W3RoaXMub3B0aW9ucy56b29tS2V5XSl7dC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBlPTA7dC53aGVlbERlbHRhP2U9dC53aGVlbERlbHRhLzEyMDp0LmRldGFpbCYmKGU9LXQuZGV0YWlsLzMpO3ZhciBpPXRoaXMucHJvcHMuc2Nyb2xsVG9wLG89aSsxMjAqZTt0aGlzLmlzQWN0aXZlKCkmJih0aGlzLl9zZXRTY3JvbGxUb3AobyksdGhpcy5fcmVkcmF3KCksdGhpcy5lbWl0KCJzY3JvbGwiLHQpKX19ZnVuY3Rpb24gaSh0KXtpZihzLm9wdGlvbnMudmVydGljYWxTY3JvbGwmJih0LnByZXZlbnREZWZhdWx0KCkscy5pc0FjdGl2ZSgpKSl7dmFyIGU9LXQudGFyZ2V0LnNjcm9sbFRvcDtzLl9zZXRTY3JvbGxUb3AoZSkscy5fcmVkcmF3KCkscy5lbWl0KCJzY3JvbGxTaWRlIix0KX19ZnVuY3Rpb24gbyh0KXtpZih0LnByZXZlbnREZWZhdWx0JiZ0LnByZXZlbnREZWZhdWx0KCksISghdC50YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoInZpcyIpPi0xfHxhKSlyZXR1cm4gdC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdD0ibW92ZSIsYT0hMCwhMX1mdW5jdGlvbiBuKHQpe3QucHJldmVudERlZmF1bHQmJnQucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbiYmdC5zdG9wUHJvcGFnYXRpb24oKTt0cnl7aWYoIUpTT04ucGFyc2UodC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgidGV4dCIpKS5jb250ZW50KXJldHVybn1jYXRjaCh0KXtyZXR1cm4hMX1yZXR1cm4gYT0hMSx0LmNlbnRlcj17eDp0LmNsaWVudFgseTp0LmNsaWVudFl9LHMuaXRlbVNldC5fb25BZGRJdGVtKHQpLHMuZW1pdCgiZHJvcCIscy5nZXRFdmVudFByb3BlcnRpZXModCkpLCExfXRoaXMuZG9tPXt9LHRoaXMuZG9tLmNvbnRhaW5lcj10LHRoaXMuZG9tLnJvb3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uYmFja2dyb3VuZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS5iYWNrZ3JvdW5kVmVydGljYWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uYmFja2dyb3VuZEhvcml6b250YWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uY2VudGVyQ29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLmxlZnRDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20ucmlnaHRDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uY2VudGVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLmxlZnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20ucmlnaHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20udG9wPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLmJvdHRvbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS5zaGFkb3dUb3A9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uc2hhZG93Qm90dG9tPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLnNoYWRvd1RvcExlZnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uc2hhZG93Qm90dG9tTGVmdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS5zaGFkb3dUb3BSaWdodD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS5zaGFkb3dCb3R0b21SaWdodD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS5yb2xsaW5nTW9kZUJ0bj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS5yb290LmNsYXNzTmFtZT0idmlzLXRpbWVsaW5lIix0aGlzLmRvbS5iYWNrZ3JvdW5kLmNsYXNzTmFtZT0idmlzLXBhbmVsIHZpcy1iYWNrZ3JvdW5kIix0aGlzLmRvbS5iYWNrZ3JvdW5kVmVydGljYWwuY2xhc3NOYW1lPSJ2aXMtcGFuZWwgdmlzLWJhY2tncm91bmQgdmlzLXZlcnRpY2FsIix0aGlzLmRvbS5iYWNrZ3JvdW5kSG9yaXpvbnRhbC5jbGFzc05hbWU9InZpcy1wYW5lbCB2aXMtYmFja2dyb3VuZCB2aXMtaG9yaXpvbnRhbCIsdGhpcy5kb20uY2VudGVyQ29udGFpbmVyLmNsYXNzTmFtZT0idmlzLXBhbmVsIHZpcy1jZW50ZXIiLHRoaXMuZG9tLmxlZnRDb250YWluZXIuY2xhc3NOYW1lPSJ2aXMtcGFuZWwgdmlzLWxlZnQiLHRoaXMuZG9tLnJpZ2h0Q29udGFpbmVyLmNsYXNzTmFtZT0idmlzLXBhbmVsIHZpcy1yaWdodCIsdGhpcy5kb20udG9wLmNsYXNzTmFtZT0idmlzLXBhbmVsIHZpcy10b3AiLHRoaXMuZG9tLmJvdHRvbS5jbGFzc05hbWU9InZpcy1wYW5lbCB2aXMtYm90dG9tIix0aGlzLmRvbS5sZWZ0LmNsYXNzTmFtZT0idmlzLWNvbnRlbnQiLHRoaXMuZG9tLmNlbnRlci5jbGFzc05hbWU9InZpcy1jb250ZW50Iix0aGlzLmRvbS5yaWdodC5jbGFzc05hbWU9InZpcy1jb250ZW50Iix0aGlzLmRvbS5zaGFkb3dUb3AuY2xhc3NOYW1lPSJ2aXMtc2hhZG93IHZpcy10b3AiLHRoaXMuZG9tLnNoYWRvd0JvdHRvbS5jbGFzc05hbWU9InZpcy1zaGFkb3cgdmlzLWJvdHRvbSIsdGhpcy5kb20uc2hhZG93VG9wTGVmdC5jbGFzc05hbWU9InZpcy1zaGFkb3cgdmlzLXRvcCIsdGhpcy5kb20uc2hhZG93Qm90dG9tTGVmdC5jbGFzc05hbWU9InZpcy1zaGFkb3cgdmlzLWJvdHRvbSIsdGhpcy5kb20uc2hhZG93VG9wUmlnaHQuY2xhc3NOYW1lPSJ2aXMtc2hhZG93IHZpcy10b3AiLHRoaXMuZG9tLnNoYWRvd0JvdHRvbVJpZ2h0LmNsYXNzTmFtZT0idmlzLXNoYWRvdyB2aXMtYm90dG9tIix0aGlzLmRvbS5yb2xsaW5nTW9kZUJ0bi5jbGFzc05hbWU9InZpcy1yb2xsaW5nLW1vZGUtYnRuIix0aGlzLmRvbS5yb290LmFwcGVuZENoaWxkKHRoaXMuZG9tLmJhY2tncm91bmQpLHRoaXMuZG9tLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5kb20uYmFja2dyb3VuZFZlcnRpY2FsKSx0aGlzLmRvbS5yb290LmFwcGVuZENoaWxkKHRoaXMuZG9tLmJhY2tncm91bmRIb3Jpem9udGFsKSx0aGlzLmRvbS5yb290LmFwcGVuZENoaWxkKHRoaXMuZG9tLmNlbnRlckNvbnRhaW5lciksdGhpcy5kb20ucm9vdC5hcHBlbmRDaGlsZCh0aGlzLmRvbS5sZWZ0Q29udGFpbmVyKSx0aGlzLmRvbS5yb290LmFwcGVuZENoaWxkKHRoaXMuZG9tLnJpZ2h0Q29udGFpbmVyKSx0aGlzLmRvbS5yb290LmFwcGVuZENoaWxkKHRoaXMuZG9tLnRvcCksdGhpcy5kb20ucm9vdC5hcHBlbmRDaGlsZCh0aGlzLmRvbS5ib3R0b20pLHRoaXMuZG9tLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5kb20uYm90dG9tKSx0aGlzLmRvbS5yb290LmFwcGVuZENoaWxkKHRoaXMuZG9tLnJvbGxpbmdNb2RlQnRuKSx0aGlzLmRvbS5jZW50ZXJDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5kb20uY2VudGVyKSx0aGlzLmRvbS5sZWZ0Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZG9tLmxlZnQpLHRoaXMuZG9tLnJpZ2h0Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZG9tLnJpZ2h0KSx0aGlzLmRvbS5jZW50ZXJDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5kb20uc2hhZG93VG9wKSx0aGlzLmRvbS5jZW50ZXJDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5kb20uc2hhZG93Qm90dG9tKSx0aGlzLmRvbS5sZWZ0Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZG9tLnNoYWRvd1RvcExlZnQpLHRoaXMuZG9tLmxlZnRDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5kb20uc2hhZG93Qm90dG9tTGVmdCksdGhpcy5kb20ucmlnaHRDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5kb20uc2hhZG93VG9wUmlnaHQpLHRoaXMuZG9tLnJpZ2h0Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZG9tLnNoYWRvd0JvdHRvbVJpZ2h0KSx0aGlzLnByb3BzPXtyb290Ont9LGJhY2tncm91bmQ6e30sY2VudGVyQ29udGFpbmVyOnt9LGxlZnRDb250YWluZXI6e30scmlnaHRDb250YWluZXI6e30sY2VudGVyOnt9LGxlZnQ6e30scmlnaHQ6e30sdG9wOnt9LGJvdHRvbTp7fSxib3JkZXI6e30sc2Nyb2xsVG9wOjAsc2Nyb2xsVG9wTWluOjB9LHRoaXMub24oInJhbmdlY2hhbmdlIixmdW5jdGlvbigpeyEwPT09dGhpcy5pbml0aWFsRHJhd0RvbmUmJnRoaXMuX3JlZHJhdygpfS5iaW5kKHRoaXMpKSx0aGlzLm9uKCJ0b3VjaCIsdGhpcy5fb25Ub3VjaC5iaW5kKHRoaXMpKSx0aGlzLm9uKCJwYW5tb3ZlIix0aGlzLl9vbkRyYWcuYmluZCh0aGlzKSk7dmFyIHM9dGhpczt0aGlzLl9vcmlnUmVkcmF3PXRoaXMuX3JlZHJhdy5iaW5kKHRoaXMpLHRoaXMuX3JlZHJhdz1jLnRocm90dGxlKHRoaXMuX29yaWdSZWRyYXcpLHRoaXMub24oIl9jaGFuZ2UiLGZ1bmN0aW9uKHQpe3MuaXRlbVNldCYmcy5pdGVtU2V0LmluaXRpYWxJdGVtU2V0RHJhd24mJnQmJjE9PXQucXVldWU/cy5fcmVkcmF3KCk6cy5fb3JpZ1JlZHJhdygpfSksdGhpcy5oYW1tZXI9bmV3IGwodGhpcy5kb20ucm9vdCk7dmFyIHI9dGhpcy5oYW1tZXIuZ2V0KCJwaW5jaCIpLnNldCh7ZW5hYmxlOiEwfSk7dS5kaXNhYmxlUHJldmVudERlZmF1bHRWZXJ0aWNhbGx5KHIpLHRoaXMuaGFtbWVyLmdldCgicGFuIikuc2V0KHt0aHJlc2hvbGQ6NSxkaXJlY3Rpb246bC5ESVJFQ1RJT05fSE9SSVpPTlRBTH0pLHRoaXMubGlzdGVuZXJzPXt9LFsidGFwIiwiZG91YmxldGFwIiwicHJlc3MiLCJwaW5jaCIsInBhbiIsInBhbnN0YXJ0IiwicGFubW92ZSIsInBhbmVuZCJdLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24oZSl7cy5pc0FjdGl2ZSgpJiZzLmVtaXQodCxlKX07cy5oYW1tZXIub24odCxlKSxzLmxpc3RlbmVyc1t0XT1lfSksdS5vblRvdWNoKHRoaXMuaGFtbWVyLGZ1bmN0aW9uKHQpe3MuZW1pdCgidG91Y2giLHQpfS5iaW5kKHRoaXMpKSx1Lm9uUmVsZWFzZSh0aGlzLmhhbW1lcixmdW5jdGlvbih0KXtzLmVtaXQoInJlbGVhc2UiLHQpfS5iaW5kKHRoaXMpKSx0aGlzLmRvbS5jZW50ZXJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcj8odGhpcy5kb20uY2VudGVyQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLGUuYmluZCh0aGlzKSwhMSksdGhpcy5kb20uY2VudGVyQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTU1vdXNlU2Nyb2xsIixlLmJpbmQodGhpcyksITEpKTp0aGlzLmRvbS5jZW50ZXJDb250YWluZXIuYXR0YWNoRXZlbnQoIm9ubW91c2V3aGVlbCIsZS5iaW5kKHRoaXMpKSx0aGlzLmRvbS5sZWZ0LnBhcmVudE5vZGUuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixpLmJpbmQodGhpcykpLHRoaXMuZG9tLnJpZ2h0LnBhcmVudE5vZGUuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixpLmJpbmQodGhpcykpO3ZhciBhPSExO2lmKHRoaXMuZG9tLmNlbnRlci5hZGRFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIsby5iaW5kKHRoaXMpLCExKSx0aGlzLmRvbS5jZW50ZXIuYWRkRXZlbnRMaXN0ZW5lcigiZHJvcCIsbi5iaW5kKHRoaXMpLCExKSx0aGlzLmN1c3RvbVRpbWVzPVtdLHRoaXMudG91Y2g9e30sdGhpcy5yZWRyYXdDb3VudD0wLHRoaXMuaW5pdGlhbERyYXdEb25lPSExLCF0KXRocm93IG5ldyBFcnJvcigiTm8gY29udGFpbmVyIHByb3ZpZGVkIik7dC5hcHBlbmRDaGlsZCh0aGlzLmRvbS5yb290KX0sbi5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbih0KXtpZih0KXt2YXIgZT1bIndpZHRoIiwiaGVpZ2h0IiwibWluSGVpZ2h0IiwibWF4SGVpZ2h0IiwiYXV0b1Jlc2l6ZSIsInN0YXJ0IiwiZW5kIiwiY2xpY2tUb1VzZSIsImRhdGFBdHRyaWJ1dGVzIiwiaGlkZGVuRGF0ZXMiLCJsb2NhbGUiLCJsb2NhbGVzIiwibW9tZW50IiwicnRsIiwiem9vbUtleSIsImhvcml6b250YWxTY3JvbGwiLCJ2ZXJ0aWNhbFNjcm9sbCJdO2lmKGMuc2VsZWN0aXZlRXh0ZW5kKGUsdGhpcy5vcHRpb25zLHQpLHRoaXMuZG9tLnJvbGxpbmdNb2RlQnRuLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsdGhpcy5vcHRpb25zLnJ0bCYmKHRoaXMuZG9tLmNvbnRhaW5lci5zdHlsZS5kaXJlY3Rpb249InJ0bCIsdGhpcy5kb20uYmFja2dyb3VuZFZlcnRpY2FsLmNsYXNzTmFtZT0idmlzLXBhbmVsIHZpcy1iYWNrZ3JvdW5kIHZpcy12ZXJ0aWNhbC1ydGwiKSx0aGlzLm9wdGlvbnMudmVydGljYWxTY3JvbGwmJih0aGlzLm9wdGlvbnMucnRsP3RoaXMuZG9tLnJpZ2h0Q29udGFpbmVyLmNsYXNzTmFtZT0idmlzLXBhbmVsIHZpcy1yaWdodCB2aXMtdmVydGljYWwtc2Nyb2xsIjp0aGlzLmRvbS5sZWZ0Q29udGFpbmVyLmNsYXNzTmFtZT0idmlzLXBhbmVsIHZpcy1sZWZ0IHZpcy12ZXJ0aWNhbC1zY3JvbGwiKSx0aGlzLm9wdGlvbnMub3JpZW50YXRpb249e2l0ZW06dm9pZCAwLGF4aXM6dm9pZCAwfSwib3JpZW50YXRpb24iaW4gdCYmKCJzdHJpbmciPT10eXBlb2YgdC5vcmllbnRhdGlvbj90aGlzLm9wdGlvbnMub3JpZW50YXRpb249e2l0ZW06dC5vcmllbnRhdGlvbixheGlzOnQub3JpZW50YXRpb259OiJvYmplY3QiPT09KDAsaC5kZWZhdWx0KSh0Lm9yaWVudGF0aW9uKSYmKCJpdGVtImluIHQub3JpZW50YXRpb24mJih0aGlzLm9wdGlvbnMub3JpZW50YXRpb24uaXRlbT10Lm9yaWVudGF0aW9uLml0ZW0pLCJheGlzImluIHQub3JpZW50YXRpb24mJih0aGlzLm9wdGlvbnMub3JpZW50YXRpb24uYXhpcz10Lm9yaWVudGF0aW9uLmF4aXMpKSksImJvdGgiPT09dGhpcy5vcHRpb25zLm9yaWVudGF0aW9uLmF4aXMpe2lmKCF0aGlzLnRpbWVBeGlzMil7dmFyIGk9dGhpcy50aW1lQXhpczI9bmV3IHAodGhpcy5ib2R5KTtpLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7dmFyIGU9dD9jLmV4dGVuZCh7fSx0KTp7fTtlLm9yaWVudGF0aW9uPSJ0b3AiLHAucHJvdG90eXBlLnNldE9wdGlvbnMuY2FsbChpLGUpfSx0aGlzLmNvbXBvbmVudHMucHVzaChpKX19ZWxzZSBpZih0aGlzLnRpbWVBeGlzMil7dmFyIG89dGhpcy5jb21wb25lbnRzLmluZGV4T2YodGhpcy50aW1lQXhpczIpOy0xIT09byYmdGhpcy5jb21wb25lbnRzLnNwbGljZShvLDEpLHRoaXMudGltZUF4aXMyLmRlc3Ryb3koKSx0aGlzLnRpbWVBeGlzMj1udWxsfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRyYXdQb2ludHMmJih0LmRyYXdQb2ludHM9e29uUmVuZGVyOnQuZHJhd1BvaW50c30pLCJoaWRkZW5EYXRlcyJpbiB0aGlzLm9wdGlvbnMmJm0uY29udmVydEhpZGRlbk9wdGlvbnModGhpcy5vcHRpb25zLm1vbWVudCx0aGlzLmJvZHksdGhpcy5vcHRpb25zLmhpZGRlbkRhdGVzKSwiY2xpY2tUb1VzZSJpbiB0JiYodC5jbGlja1RvVXNlP3RoaXMuYWN0aXZhdG9yfHwodGhpcy5hY3RpdmF0b3I9bmV3IGYodGhpcy5kb20ucm9vdCkpOnRoaXMuYWN0aXZhdG9yJiYodGhpcy5hY3RpdmF0b3IuZGVzdHJveSgpLGRlbGV0ZSB0aGlzLmFjdGl2YXRvcikpLCJzaG93Q3VzdG9tVGltZSJpbiB0KXRocm93IG5ldyBFcnJvcigiT3B0aW9uIGBzaG93Q3VzdG9tVGltZWAgaXMgZGVwcmVjYXRlZC4gQ3JlYXRlIGEgY3VzdG9tIHRpbWUgYmFyIHZpYSB0aW1lbGluZS5hZGRDdXN0b21UaW1lKHRpbWUgWywgaWRdKSIpO3RoaXMuX2luaXRBdXRvUmVzaXplKCl9aWYodGhpcy5jb21wb25lbnRzLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2V0T3B0aW9ucyh0KX0pLCJjb25maWd1cmUiaW4gdCl7dGhpcy5jb25maWd1cmF0b3J8fCh0aGlzLmNvbmZpZ3VyYXRvcj10aGlzLl9jcmVhdGVDb25maWd1cmF0b3IoKSksdGhpcy5jb25maWd1cmF0b3Iuc2V0T3B0aW9ucyh0LmNvbmZpZ3VyZSk7dmFyIG49Yy5kZWVwRXh0ZW5kKHt9LHRoaXMub3B0aW9ucyk7dGhpcy5jb21wb25lbnRzLmZvckVhY2goZnVuY3Rpb24odCl7Yy5kZWVwRXh0ZW5kKG4sdC5vcHRpb25zKX0pLHRoaXMuY29uZmlndXJhdG9yLnNldE1vZHVsZU9wdGlvbnMoe2dsb2JhbDpufSl9dGhpcy5fcmVkcmF3KCl9LG4ucHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuYWN0aXZhdG9yfHx0aGlzLmFjdGl2YXRvci5hY3RpdmV9LG4ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLnNldEl0ZW1zKG51bGwpLHRoaXMuc2V0R3JvdXBzKG51bGwpLHRoaXMub2ZmKCksdGhpcy5fc3RvcEF1dG9SZXNpemUoKSx0aGlzLmRvbS5yb290LnBhcmVudE5vZGUmJnRoaXMuZG9tLnJvb3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbS5yb290KSx0aGlzLmRvbT1udWxsLHRoaXMuYWN0aXZhdG9yJiYodGhpcy5hY3RpdmF0b3IuZGVzdHJveSgpLGRlbGV0ZSB0aGlzLmFjdGl2YXRvcik7Zm9yKHZhciB0IGluIHRoaXMubGlzdGVuZXJzKXRoaXMubGlzdGVuZXJzLmhhc093blByb3BlcnR5KHQpJiZkZWxldGUgdGhpcy5saXN0ZW5lcnNbdF07dGhpcy5saXN0ZW5lcnM9bnVsbCx0aGlzLmhhbW1lcj1udWxsLHRoaXMuY29tcG9uZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRlc3Ryb3koKX0pLHRoaXMuYm9keT1udWxsfSxuLnByb3RvdHlwZS5zZXRDdXN0b21UaW1lPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5jdXN0b21UaW1lcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIGU9PT10Lm9wdGlvbnMuaWR9KTtpZigwPT09aS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJObyBjdXN0b20gdGltZSBiYXIgZm91bmQgd2l0aCBpZCAiKygwLHIuZGVmYXVsdCkoZSkpO2kubGVuZ3RoPjAmJmlbMF0uc2V0Q3VzdG9tVGltZSh0KX0sbi5wcm90b3R5cGUuZ2V0Q3VzdG9tVGltZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmN1c3RvbVRpbWVzLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5vcHRpb25zLmlkPT09dH0pO2lmKDA9PT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIk5vIGN1c3RvbSB0aW1lIGJhciBmb3VuZCB3aXRoIGlkICIrKDAsci5kZWZhdWx0KSh0KSk7cmV0dXJuIGVbMF0uZ2V0Q3VzdG9tVGltZSgpfSxuLnByb3RvdHlwZS5zZXRDdXN0b21UaW1lVGl0bGU9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmN1c3RvbVRpbWVzLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5vcHRpb25zLmlkPT09ZX0pO2lmKDA9PT1pLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIk5vIGN1c3RvbSB0aW1lIGJhciBmb3VuZCB3aXRoIGlkICIrKDAsci5kZWZhdWx0KShlKSk7aWYoaS5sZW5ndGg+MClyZXR1cm4gaVswXS5zZXRDdXN0b21UaXRsZSh0KX0sbi5wcm90b3R5cGUuZ2V0RXZlbnRQcm9wZXJ0aWVzPWZ1bmN0aW9uKHQpe3JldHVybntldmVudDp0fX0sbi5wcm90b3R5cGUuYWRkQ3VzdG9tVGltZT1mdW5jdGlvbih0LGUpe3ZhciBpPXZvaWQgMCE9PXQ/Yy5jb252ZXJ0KHQsIkRhdGUiKS52YWx1ZU9mKCk6bmV3IERhdGU7aWYodGhpcy5jdXN0b21UaW1lcy5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm9wdGlvbnMuaWQ9PT1lfSkpdGhyb3cgbmV3IEVycm9yKCJBIGN1c3RvbSB0aW1lIHdpdGggaWQgIisoMCxyLmRlZmF1bHQpKGUpKyIgYWxyZWFkeSBleGlzdHMiKTt2YXIgbz1uZXcgdih0aGlzLmJvZHksYy5leHRlbmQoe30sdGhpcy5vcHRpb25zLHt0aW1lOmksaWQ6ZX0pKTtyZXR1cm4gdGhpcy5jdXN0b21UaW1lcy5wdXNoKG8pLHRoaXMuY29tcG9uZW50cy5wdXNoKG8pLHRoaXMuX3JlZHJhdygpLGV9LG4ucHJvdG90eXBlLnJlbW92ZUN1c3RvbVRpbWU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jdXN0b21UaW1lcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUub3B0aW9ucy5pZD09PXR9KTtpZigwPT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJObyBjdXN0b20gdGltZSBiYXIgZm91bmQgd2l0aCBpZCAiKygwLHIuZGVmYXVsdCkodCkpO2UuZm9yRWFjaChmdW5jdGlvbih0KXt0aGlzLmN1c3RvbVRpbWVzLnNwbGljZSh0aGlzLmN1c3RvbVRpbWVzLmluZGV4T2YodCksMSksdGhpcy5jb21wb25lbnRzLnNwbGljZSh0aGlzLmNvbXBvbmVudHMuaW5kZXhPZih0KSwxKSx0LmRlc3Ryb3koKX0uYmluZCh0aGlzKSl9LG4ucHJvdG90eXBlLmdldFZpc2libGVJdGVtcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZW1TZXQmJnRoaXMuaXRlbVNldC5nZXRWaXNpYmxlSXRlbXMoKXx8W119LG4ucHJvdG90eXBlLmZpdD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZ2V0RGF0YVJhbmdlKCk7aWYobnVsbCE9PWkubWlufHxudWxsIT09aS5tYXgpe3ZhciBvPWkubWF4LWkubWluLG49bmV3IERhdGUoaS5taW4udmFsdWVPZigpLS4wMSpvKSxzPW5ldyBEYXRlKGkubWF4LnZhbHVlT2YoKSsuMDEqbykscj0hdHx8dm9pZCAwPT09dC5hbmltYXRpb258fHQuYW5pbWF0aW9uO3RoaXMucmFuZ2Uuc2V0UmFuZ2UobixzLHthbmltYXRpb246cn0sZSl9fSxuLnByb3RvdHlwZS5nZXREYXRhUmFuZ2U9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBpbnZva2UgYWJzdHJhY3QgbWV0aG9kIGdldERhdGFSYW5nZSIpfSxuLnByb3RvdHlwZS5zZXRXaW5kb3c9ZnVuY3Rpb24odCxlLGksbyl7ImZ1bmN0aW9uIj09dHlwZW9mIGFyZ3VtZW50c1syXSYmKG89YXJndW1lbnRzWzJdLGk9e30pO3ZhciBuO2lmKDE9PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciBzPWFyZ3VtZW50c1swXTtuPXZvaWQgMD09PXMuYW5pbWF0aW9ufHxzLmFuaW1hdGlvbix0aGlzLnJhbmdlLnNldFJhbmdlKHMuc3RhcnQscy5lbmQse2FuaW1hdGlvbjpufSl9ZWxzZSBpZigyPT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgYXJndW1lbnRzWzFdKXt2YXIgcz1hcmd1bWVudHNbMF07bz1hcmd1bWVudHNbMV0sbj12b2lkIDA9PT1zLmFuaW1hdGlvbnx8cy5hbmltYXRpb24sdGhpcy5yYW5nZS5zZXRSYW5nZShzLnN0YXJ0LHMuZW5kLHthbmltYXRpb246bn0sbyl9ZWxzZSBuPSFpfHx2b2lkIDA9PT1pLmFuaW1hdGlvbnx8aS5hbmltYXRpb24sdGhpcy5yYW5nZS5zZXRSYW5nZSh0LGUse2FuaW1hdGlvbjpufSxvKX0sbi5wcm90b3R5cGUubW92ZVRvPWZ1bmN0aW9uKHQsZSxpKXsiZnVuY3Rpb24iPT10eXBlb2YgYXJndW1lbnRzWzFdJiYoaT1hcmd1bWVudHNbMV0sZT17fSk7dmFyIG89dGhpcy5yYW5nZS5lbmQtdGhpcy5yYW5nZS5zdGFydCxuPWMuY29udmVydCh0LCJEYXRlIikudmFsdWVPZigpLHM9bi1vLzIscj1uK28vMixhPSFlfHx2b2lkIDA9PT1lLmFuaW1hdGlvbnx8ZS5hbmltYXRpb247dGhpcy5yYW5nZS5zZXRSYW5nZShzLHIse2FuaW1hdGlvbjphfSxpKX0sbi5wcm90b3R5cGUuZ2V0V2luZG93PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yYW5nZS5nZXRSYW5nZSgpO3JldHVybntzdGFydDpuZXcgRGF0ZSh0LnN0YXJ0KSxlbmQ6bmV3IERhdGUodC5lbmQpfX0sbi5wcm90b3R5cGUuem9vbUluPWZ1bmN0aW9uKHQsZSxpKXtpZighKCF0fHx0PDB8fHQ+MSkpeyJmdW5jdGlvbiI9PXR5cGVvZiBhcmd1bWVudHNbMV0mJihpPWFyZ3VtZW50c1sxXSxlPXt9KTt2YXIgbz10aGlzLmdldFdpbmRvdygpLG49by5zdGFydC52YWx1ZU9mKCkscz1vLmVuZC52YWx1ZU9mKCkscj1zLW4sYT1yLygxK3QpLGg9KHItYSkvMixkPW4raCxsPXMtaDt0aGlzLnNldFdpbmRvdyhkLGwsZSxpKX19LG4ucHJvdG90eXBlLnpvb21PdXQ9ZnVuY3Rpb24odCxlLGkpe2lmKCEoIXR8fHQ8MHx8dD4xKSl7ImZ1bmN0aW9uIj09dHlwZW9mIGFyZ3VtZW50c1sxXSYmKGk9YXJndW1lbnRzWzFdLGU9e30pO3ZhciBvPXRoaXMuZ2V0V2luZG93KCksbj1vLnN0YXJ0LnZhbHVlT2YoKSxzPW8uZW5kLnZhbHVlT2YoKSxyPXMtbixhPW4tcip0LzIsaD1zK3IqdC8yO3RoaXMuc2V0V2luZG93KGEsaCxlLGkpfX0sbi5wcm90b3R5cGUucmVkcmF3PWZ1bmN0aW9uKCl7dGhpcy5fcmVkcmF3KCl9LG4ucHJvdG90eXBlLl9yZWRyYXc9ZnVuY3Rpb24oKXt0aGlzLnJlZHJhd0NvdW50Kys7dmFyIHQ9ITEsZT10aGlzLm9wdGlvbnMsaT10aGlzLnByb3BzLG89dGhpcy5kb207aWYobyYmby5jb250YWluZXImJjAhPW8ucm9vdC5vZmZzZXRXaWR0aCl7bS51cGRhdGVIaWRkZW5EYXRlcyh0aGlzLm9wdGlvbnMubW9tZW50LHRoaXMuYm9keSx0aGlzLm9wdGlvbnMuaGlkZGVuRGF0ZXMpLCJ0b3AiPT1lLm9yaWVudGF0aW9uPyhjLmFkZENsYXNzTmFtZShvLnJvb3QsInZpcy10b3AiKSxjLnJlbW92ZUNsYXNzTmFtZShvLnJvb3QsInZpcy1ib3R0b20iKSk6KGMucmVtb3ZlQ2xhc3NOYW1lKG8ucm9vdCwidmlzLXRvcCIpLGMuYWRkQ2xhc3NOYW1lKG8ucm9vdCwidmlzLWJvdHRvbSIpKSxvLnJvb3Quc3R5bGUubWF4SGVpZ2h0PWMub3B0aW9uLmFzU2l6ZShlLm1heEhlaWdodCwiIiksby5yb290LnN0eWxlLm1pbkhlaWdodD1jLm9wdGlvbi5hc1NpemUoZS5taW5IZWlnaHQsIiIpLG8ucm9vdC5zdHlsZS53aWR0aD1jLm9wdGlvbi5hc1NpemUoZS53aWR0aCwiIiksaS5ib3JkZXIubGVmdD0oby5jZW50ZXJDb250YWluZXIub2Zmc2V0V2lkdGgtby5jZW50ZXJDb250YWluZXIuY2xpZW50V2lkdGgpLzIsaS5ib3JkZXIucmlnaHQ9aS5ib3JkZXIubGVmdCxpLmJvcmRlci50b3A9KG8uY2VudGVyQ29udGFpbmVyLm9mZnNldEhlaWdodC1vLmNlbnRlckNvbnRhaW5lci5jbGllbnRIZWlnaHQpLzIsaS5ib3JkZXIuYm90dG9tPWkuYm9yZGVyLnRvcCxpLmJvcmRlclJvb3RIZWlnaHQ9by5yb290Lm9mZnNldEhlaWdodC1vLnJvb3QuY2xpZW50SGVpZ2h0LGkuYm9yZGVyUm9vdFdpZHRoPW8ucm9vdC5vZmZzZXRXaWR0aC1vLnJvb3QuY2xpZW50V2lkdGgsMD09PW8uY2VudGVyQ29udGFpbmVyLmNsaWVudEhlaWdodCYmKGkuYm9yZGVyLmxlZnQ9aS5ib3JkZXIudG9wLGkuYm9yZGVyLnJpZ2h0PWkuYm9yZGVyLmxlZnQpLDA9PT1vLnJvb3QuY2xpZW50SGVpZ2h0JiYoaS5ib3JkZXJSb290V2lkdGg9aS5ib3JkZXJSb290SGVpZ2h0KSxpLmNlbnRlci5oZWlnaHQ9by5jZW50ZXIub2Zmc2V0SGVpZ2h0LGkubGVmdC5oZWlnaHQ9by5sZWZ0Lm9mZnNldEhlaWdodCxpLnJpZ2h0LmhlaWdodD1vLnJpZ2h0Lm9mZnNldEhlaWdodCxpLnRvcC5oZWlnaHQ9by50b3AuY2xpZW50SGVpZ2h0fHwtaS5ib3JkZXIudG9wLGkuYm90dG9tLmhlaWdodD1vLmJvdHRvbS5jbGllbnRIZWlnaHR8fC1pLmJvcmRlci5ib3R0b207dmFyIG49TWF0aC5tYXgoaS5sZWZ0LmhlaWdodCxpLmNlbnRlci5oZWlnaHQsaS5yaWdodC5oZWlnaHQpLHM9aS50b3AuaGVpZ2h0K24raS5ib3R0b20uaGVpZ2h0K2kuYm9yZGVyUm9vdEhlaWdodCtpLmJvcmRlci50b3AraS5ib3JkZXIuYm90dG9tO28ucm9vdC5zdHlsZS5oZWlnaHQ9Yy5vcHRpb24uYXNTaXplKGUuaGVpZ2h0LHMrInB4IiksaS5yb290LmhlaWdodD1vLnJvb3Qub2Zmc2V0SGVpZ2h0LGkuYmFja2dyb3VuZC5oZWlnaHQ9aS5yb290LmhlaWdodC1pLmJvcmRlclJvb3RIZWlnaHQ7dmFyIHI9aS5yb290LmhlaWdodC1pLnRvcC5oZWlnaHQtaS5ib3R0b20uaGVpZ2h0LWkuYm9yZGVyUm9vdEhlaWdodDtpLmNlbnRlckNvbnRhaW5lci5oZWlnaHQ9cixpLmxlZnRDb250YWluZXIuaGVpZ2h0PXIsaS5yaWdodENvbnRhaW5lci5oZWlnaHQ9aS5sZWZ0Q29udGFpbmVyLmhlaWdodCxpLnJvb3Qud2lkdGg9by5yb290Lm9mZnNldFdpZHRoLGkuYmFja2dyb3VuZC53aWR0aD1pLnJvb3Qud2lkdGgtaS5ib3JkZXJSb290V2lkdGgsdGhpcy5pbml0aWFsRHJhd0RvbmV8fChpLnNjcm9sbGJhcldpZHRoPWMuZ2V0U2Nyb2xsQmFyV2lkdGgoKSksZS52ZXJ0aWNhbFNjcm9sbD9lLnJ0bD8oaS5sZWZ0LndpZHRoPW8ubGVmdENvbnRhaW5lci5jbGllbnRXaWR0aHx8LWkuYm9yZGVyLmxlZnQsaS5yaWdodC53aWR0aD1vLnJpZ2h0Q29udGFpbmVyLmNsaWVudFdpZHRoK2kuc2Nyb2xsYmFyV2lkdGh8fC1pLmJvcmRlci5yaWdodCk6KGkubGVmdC53aWR0aD1vLmxlZnRDb250YWluZXIuY2xpZW50V2lkdGgraS5zY3JvbGxiYXJXaWR0aHx8LWkuYm9yZGVyLmxlZnQsaS5yaWdodC53aWR0aD1vLnJpZ2h0Q29udGFpbmVyLmNsaWVudFdpZHRofHwtaS5ib3JkZXIucmlnaHQpOihpLmxlZnQud2lkdGg9by5sZWZ0Q29udGFpbmVyLmNsaWVudFdpZHRofHwtaS5ib3JkZXIubGVmdCxpLnJpZ2h0LndpZHRoPW8ucmlnaHRDb250YWluZXIuY2xpZW50V2lkdGh8fC1pLmJvcmRlci5yaWdodCksdGhpcy5fc2V0RE9NKCk7dmFyIGE9dGhpcy5fdXBkYXRlU2Nyb2xsVG9wKCk7InRvcCIhPWUub3JpZW50YXRpb24uaXRlbSYmKGErPU1hdGgubWF4KGkuY2VudGVyQ29udGFpbmVyLmhlaWdodC1pLmNlbnRlci5oZWlnaHQtaS5ib3JkZXIudG9wLWkuYm9yZGVyLmJvdHRvbSwwKSksby5jZW50ZXIuc3R5bGUudG9wPWErInB4Ijt2YXIgaD0wPT1pLnNjcm9sbFRvcD8iaGlkZGVuIjoiIixkPWkuc2Nyb2xsVG9wPT1pLnNjcm9sbFRvcE1pbj8iaGlkZGVuIjoiIjtvLnNoYWRvd1RvcC5zdHlsZS52aXNpYmlsaXR5PWgsby5zaGFkb3dCb3R0b20uc3R5bGUudmlzaWJpbGl0eT1kLG8uc2hhZG93VG9wTGVmdC5zdHlsZS52aXNpYmlsaXR5PWgsby5zaGFkb3dCb3R0b21MZWZ0LnN0eWxlLnZpc2liaWxpdHk9ZCxvLnNoYWRvd1RvcFJpZ2h0LnN0eWxlLnZpc2liaWxpdHk9aCxvLnNoYWRvd0JvdHRvbVJpZ2h0LnN0eWxlLnZpc2liaWxpdHk9ZCxlLnZlcnRpY2FsU2Nyb2xsJiYoby5yaWdodENvbnRhaW5lci5jbGFzc05hbWU9InZpcy1wYW5lbCB2aXMtcmlnaHQgdmlzLXZlcnRpY2FsLXNjcm9sbCIsby5sZWZ0Q29udGFpbmVyLmNsYXNzTmFtZT0idmlzLXBhbmVsIHZpcy1sZWZ0IHZpcy12ZXJ0aWNhbC1zY3JvbGwiLG8uc2hhZG93VG9wUmlnaHQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixvLnNoYWRvd0JvdHRvbVJpZ2h0LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsby5zaGFkb3dUb3BMZWZ0LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsby5zaGFkb3dCb3R0b21MZWZ0LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsby5sZWZ0LnN0eWxlLnRvcD0iMHB4IixvLnJpZ2h0LnN0eWxlLnRvcD0iMHB4IiksKCFlLnZlcnRpY2FsU2Nyb2xsfHxpLmNlbnRlci5oZWlnaHQ8aS5jZW50ZXJDb250YWluZXIuaGVpZ2h0KSYmKG8ubGVmdC5zdHlsZS50b3A9YSsicHgiLG8ucmlnaHQuc3R5bGUudG9wPWErInB4IixvLnJpZ2h0Q29udGFpbmVyLmNsYXNzTmFtZT1vLnJpZ2h0Q29udGFpbmVyLmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoIig/Ol58XFxzKXZpcy12ZXJ0aWNhbC1zY3JvbGwoPzpcXHN8JCkiKSwiICIpLG8ubGVmdENvbnRhaW5lci5jbGFzc05hbWU9by5sZWZ0Q29udGFpbmVyLmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoIig/Ol58XFxzKXZpcy12ZXJ0aWNhbC1zY3JvbGwoPzpcXHN8JCkiKSwiICIpLGkubGVmdC53aWR0aD1vLmxlZnRDb250YWluZXIuY2xpZW50V2lkdGh8fC1pLmJvcmRlci5sZWZ0LGkucmlnaHQud2lkdGg9by5yaWdodENvbnRhaW5lci5jbGllbnRXaWR0aHx8LWkuYm9yZGVyLnJpZ2h0LHRoaXMuX3NldERPTSgpKTt2YXIgdT1pLmNlbnRlci5oZWlnaHQ+aS5jZW50ZXJDb250YWluZXIuaGVpZ2h0O3RoaXMuaGFtbWVyLmdldCgicGFuIikuc2V0KHtkaXJlY3Rpb246dT9sLkRJUkVDVElPTl9BTEw6bC5ESVJFQ1RJT05fSE9SSVpPTlRBTH0pLHRoaXMuY29tcG9uZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3Q9ZS5yZWRyYXcoKXx8dH0pO2lmKHQpe2lmKHRoaXMucmVkcmF3Q291bnQ8NSlyZXR1cm4gdm9pZCB0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfY2hhbmdlIik7Y29uc29sZS5sb2coIldBUk5JTkc6IGluZmluaXRlIGxvb3AgaW4gcmVkcmF3PyIpfWVsc2UgdGhpcy5yZWRyYXdDb3VudD0wO3RoaXMuaW5pdGlhbERyYXdEb25lPSEwLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoImNoYW5nZWQiKX19LG4ucHJvdG90eXBlLl9zZXRET009ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnByb3BzLGU9dGhpcy5kb207dC5sZWZ0Q29udGFpbmVyLndpZHRoPXQubGVmdC53aWR0aCx0LnJpZ2h0Q29udGFpbmVyLndpZHRoPXQucmlnaHQud2lkdGg7dmFyIGk9dC5yb290LndpZHRoLXQubGVmdC53aWR0aC10LnJpZ2h0LndpZHRoLXQuYm9yZGVyUm9vdFdpZHRoO3QuY2VudGVyLndpZHRoPWksdC5jZW50ZXJDb250YWluZXIud2lkdGg9aSx0LnRvcC53aWR0aD1pLHQuYm90dG9tLndpZHRoPWksZS5iYWNrZ3JvdW5kLnN0eWxlLmhlaWdodD10LmJhY2tncm91bmQuaGVpZ2h0KyJweCIsZS5iYWNrZ3JvdW5kVmVydGljYWwuc3R5bGUuaGVpZ2h0PXQuYmFja2dyb3VuZC5oZWlnaHQrInB4IixlLmJhY2tncm91bmRIb3Jpem9udGFsLnN0eWxlLmhlaWdodD10LmNlbnRlckNvbnRhaW5lci5oZWlnaHQrInB4IixlLmNlbnRlckNvbnRhaW5lci5zdHlsZS5oZWlnaHQ9dC5jZW50ZXJDb250YWluZXIuaGVpZ2h0KyJweCIsZS5sZWZ0Q29udGFpbmVyLnN0eWxlLmhlaWdodD10LmxlZnRDb250YWluZXIuaGVpZ2h0KyJweCIsZS5yaWdodENvbnRhaW5lci5zdHlsZS5oZWlnaHQ9dC5yaWdodENvbnRhaW5lci5oZWlnaHQrInB4IixlLmJhY2tncm91bmQuc3R5bGUud2lkdGg9dC5iYWNrZ3JvdW5kLndpZHRoKyJweCIsZS5iYWNrZ3JvdW5kVmVydGljYWwuc3R5bGUud2lkdGg9dC5jZW50ZXJDb250YWluZXIud2lkdGgrInB4IixlLmJhY2tncm91bmRIb3Jpem9udGFsLnN0eWxlLndpZHRoPXQuYmFja2dyb3VuZC53aWR0aCsicHgiLGUuY2VudGVyQ29udGFpbmVyLnN0eWxlLndpZHRoPXQuY2VudGVyLndpZHRoKyJweCIsZS50b3Auc3R5bGUud2lkdGg9dC50b3Aud2lkdGgrInB4IixlLmJvdHRvbS5zdHlsZS53aWR0aD10LmJvdHRvbS53aWR0aCsicHgiLGUuYmFja2dyb3VuZC5zdHlsZS5sZWZ0PSIwIixlLmJhY2tncm91bmQuc3R5bGUudG9wPSIwIixlLmJhY2tncm91bmRWZXJ0aWNhbC5zdHlsZS5sZWZ0PXQubGVmdC53aWR0aCt0LmJvcmRlci5sZWZ0KyJweCIsZS5iYWNrZ3JvdW5kVmVydGljYWwuc3R5bGUudG9wPSIwIixlLmJhY2tncm91bmRIb3Jpem9udGFsLnN0eWxlLmxlZnQ9IjAiLGUuYmFja2dyb3VuZEhvcml6b250YWwuc3R5bGUudG9wPXQudG9wLmhlaWdodCsicHgiLGUuY2VudGVyQ29udGFpbmVyLnN0eWxlLmxlZnQ9dC5sZWZ0LndpZHRoKyJweCIsZS5jZW50ZXJDb250YWluZXIuc3R5bGUudG9wPXQudG9wLmhlaWdodCsicHgiLGUubGVmdENvbnRhaW5lci5zdHlsZS5sZWZ0PSIwIixlLmxlZnRDb250YWluZXIuc3R5bGUudG9wPXQudG9wLmhlaWdodCsicHgiLGUucmlnaHRDb250YWluZXIuc3R5bGUubGVmdD10LmxlZnQud2lkdGgrdC5jZW50ZXIud2lkdGgrInB4IixlLnJpZ2h0Q29udGFpbmVyLnN0eWxlLnRvcD10LnRvcC5oZWlnaHQrInB4IixlLnRvcC5zdHlsZS5sZWZ0PXQubGVmdC53aWR0aCsicHgiLGUudG9wLnN0eWxlLnRvcD0iMCIsZS5ib3R0b20uc3R5bGUubGVmdD10LmxlZnQud2lkdGgrInB4IixlLmJvdHRvbS5zdHlsZS50b3A9dC50b3AuaGVpZ2h0K3QuY2VudGVyQ29udGFpbmVyLmhlaWdodCsicHgiLGUuY2VudGVyLnN0eWxlLmxlZnQ9IjAiLGUubGVmdC5zdHlsZS5sZWZ0PSIwIixlLnJpZ2h0LnN0eWxlLmxlZnQ9IjAifSxuLnByb3RvdHlwZS5yZXBhaW50PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJGdW5jdGlvbiByZXBhaW50IGlzIGRlcHJlY2F0ZWQuIFVzZSByZWRyYXcgaW5zdGVhZC4iKX0sbi5wcm90b3R5cGUuc2V0Q3VycmVudFRpbWU9ZnVuY3Rpb24odCl7aWYoIXRoaXMuY3VycmVudFRpbWUpdGhyb3cgbmV3IEVycm9yKCJPcHRpb24gc2hvd0N1cnJlbnRUaW1lIG11c3QgYmUgdHJ1ZSIpO3RoaXMuY3VycmVudFRpbWUuc2V0Q3VycmVudFRpbWUodCl9LG4ucHJvdG90eXBlLmdldEN1cnJlbnRUaW1lPWZ1bmN0aW9uKCl7aWYoIXRoaXMuY3VycmVudFRpbWUpdGhyb3cgbmV3IEVycm9yKCJPcHRpb24gc2hvd0N1cnJlbnRUaW1lIG11c3QgYmUgdHJ1ZSIpO3JldHVybiB0aGlzLmN1cnJlbnRUaW1lLmdldEN1cnJlbnRUaW1lKCl9LG4ucHJvdG90eXBlLl90b1RpbWU9ZnVuY3Rpb24odCl7cmV0dXJuIG0udG9UaW1lKHRoaXMsdCx0aGlzLnByb3BzLmNlbnRlci53aWR0aCl9LG4ucHJvdG90eXBlLl90b0dsb2JhbFRpbWU9ZnVuY3Rpb24odCl7cmV0dXJuIG0udG9UaW1lKHRoaXMsdCx0aGlzLnByb3BzLnJvb3Qud2lkdGgpfSxuLnByb3RvdHlwZS5fdG9TY3JlZW49ZnVuY3Rpb24odCl7cmV0dXJuIG0udG9TY3JlZW4odGhpcyx0LHRoaXMucHJvcHMuY2VudGVyLndpZHRoKX0sbi5wcm90b3R5cGUuX3RvR2xvYmFsU2NyZWVuPWZ1bmN0aW9uKHQpe3JldHVybiBtLnRvU2NyZWVuKHRoaXMsdCx0aGlzLnByb3BzLnJvb3Qud2lkdGgpfSxuLnByb3RvdHlwZS5faW5pdEF1dG9SZXNpemU9ZnVuY3Rpb24oKXsxPT10aGlzLm9wdGlvbnMuYXV0b1Jlc2l6ZT90aGlzLl9zdGFydEF1dG9SZXNpemUoKTp0aGlzLl9zdG9wQXV0b1Jlc2l6ZSgpfSxuLnByb3RvdHlwZS5fc3RhcnRBdXRvUmVzaXplPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl9zdG9wQXV0b1Jlc2l6ZSgpLHRoaXMuX29uUmVzaXplPWZ1bmN0aW9uKCl7aWYoMSE9dC5vcHRpb25zLmF1dG9SZXNpemUpcmV0dXJuIHZvaWQgdC5fc3RvcEF1dG9SZXNpemUoKTt0LmRvbS5yb290JiYodC5kb20ucm9vdC5vZmZzZXRXaWR0aD09dC5wcm9wcy5sYXN0V2lkdGgmJnQuZG9tLnJvb3Qub2Zmc2V0SGVpZ2h0PT10LnByb3BzLmxhc3RIZWlnaHR8fCh0LnByb3BzLmxhc3RXaWR0aD10LmRvbS5yb290Lm9mZnNldFdpZHRoLHQucHJvcHMubGFzdEhlaWdodD10LmRvbS5yb290Lm9mZnNldEhlaWdodCx0LnByb3BzLnNjcm9sbGJhcldpZHRoPWMuZ2V0U2Nyb2xsQmFyV2lkdGgoKSx0LmJvZHkuZW1pdHRlci5lbWl0KCJfY2hhbmdlIikpKX0sYy5hZGRFdmVudExpc3RlbmVyKHdpbmRvdywicmVzaXplIix0aGlzLl9vblJlc2l6ZSksdC5kb20ucm9vdCYmKHQucHJvcHMubGFzdFdpZHRoPXQuZG9tLnJvb3Qub2Zmc2V0V2lkdGgsdC5wcm9wcy5sYXN0SGVpZ2h0PXQuZG9tLnJvb3Qub2Zmc2V0SGVpZ2h0KSx0aGlzLndhdGNoVGltZXI9c2V0SW50ZXJ2YWwodGhpcy5fb25SZXNpemUsMWUzKX0sbi5wcm90b3R5cGUuX3N0b3BBdXRvUmVzaXplPWZ1bmN0aW9uKCl7dGhpcy53YXRjaFRpbWVyJiYoY2xlYXJJbnRlcnZhbCh0aGlzLndhdGNoVGltZXIpLHRoaXMud2F0Y2hUaW1lcj12b2lkIDApLHRoaXMuX29uUmVzaXplJiYoYy5yZW1vdmVFdmVudExpc3RlbmVyKHdpbmRvdywicmVzaXplIix0aGlzLl9vblJlc2l6ZSksdGhpcy5fb25SZXNpemU9bnVsbCl9LG4ucHJvdG90eXBlLl9vblRvdWNoPWZ1bmN0aW9uKHQpe3RoaXMudG91Y2guYWxsb3dEcmFnZ2luZz0hMCx0aGlzLnRvdWNoLmluaXRpYWxTY3JvbGxUb3A9dGhpcy5wcm9wcy5zY3JvbGxUb3B9LG4ucHJvdG90eXBlLl9vblBpbmNoPWZ1bmN0aW9uKHQpe3RoaXMudG91Y2guYWxsb3dEcmFnZ2luZz0hMX0sbi5wcm90b3R5cGUuX29uRHJhZz1mdW5jdGlvbih0KXtpZih0JiZ0aGlzLnRvdWNoLmFsbG93RHJhZ2dpbmcpe3ZhciBlPXQuZGVsdGFZLGk9dGhpcy5fZ2V0U2Nyb2xsVG9wKCksbz10aGlzLl9zZXRTY3JvbGxUb3AodGhpcy50b3VjaC5pbml0aWFsU2Nyb2xsVG9wK2UpO3RoaXMub3B0aW9ucy52ZXJ0aWNhbFNjcm9sbCYmKHRoaXMuZG9tLmxlZnQucGFyZW50Tm9kZS5zY3JvbGxUb3A9LXRoaXMucHJvcHMuc2Nyb2xsVG9wLHRoaXMuZG9tLnJpZ2h0LnBhcmVudE5vZGUuc2Nyb2xsVG9wPS10aGlzLnByb3BzLnNjcm9sbFRvcCksbyE9aSYmdGhpcy5lbWl0KCJ2ZXJ0aWNhbERyYWciKX19LG4ucHJvdG90eXBlLl9zZXRTY3JvbGxUb3A9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHJvcHMuc2Nyb2xsVG9wPXQsdGhpcy5fdXBkYXRlU2Nyb2xsVG9wKCksdGhpcy5wcm9wcy5zY3JvbGxUb3B9LG4ucHJvdG90eXBlLl91cGRhdGVTY3JvbGxUb3A9ZnVuY3Rpb24oKXt2YXIgdD1NYXRoLm1pbih0aGlzLnByb3BzLmNlbnRlckNvbnRhaW5lci5oZWlnaHQtdGhpcy5wcm9wcy5jZW50ZXIuaGVpZ2h0LDApO3JldHVybiB0IT10aGlzLnByb3BzLnNjcm9sbFRvcE1pbiYmKCJ0b3AiIT10aGlzLm9wdGlvbnMub3JpZW50YXRpb24uaXRlbSYmKHRoaXMucHJvcHMuc2Nyb2xsVG9wKz10LXRoaXMucHJvcHMuc2Nyb2xsVG9wTWluKSx0aGlzLnByb3BzLnNjcm9sbFRvcE1pbj10KSx0aGlzLnByb3BzLnNjcm9sbFRvcD4wJiYodGhpcy5wcm9wcy5zY3JvbGxUb3A9MCksdGhpcy5wcm9wcy5zY3JvbGxUb3A8dCYmKHRoaXMucHJvcHMuc2Nyb2xsVG9wPXQpLHRoaXMub3B0aW9ucy52ZXJ0aWNhbFNjcm9sbCYmKHRoaXMuZG9tLmxlZnQucGFyZW50Tm9kZS5zY3JvbGxUb3A9LXRoaXMucHJvcHMuc2Nyb2xsVG9wLHRoaXMuZG9tLnJpZ2h0LnBhcmVudE5vZGUuc2Nyb2xsVG9wPS10aGlzLnByb3BzLnNjcm9sbFRvcCksdGhpcy5wcm9wcy5zY3JvbGxUb3B9LG4ucHJvdG90eXBlLl9nZXRTY3JvbGxUb3A9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5zY3JvbGxUb3B9LG4ucHJvdG90eXBlLl9jcmVhdGVDb25maWd1cmF0b3I9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBpbnZva2UgYWJzdHJhY3QgbWV0aG9kIF9jcmVhdGVDb25maWd1cmF0b3IiKX0sdC5leHBvcnRzPW59LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1mdW5jdGlvbiBuKHQsZSl7dGhpcy5ib2R5PXQsdGhpcy5kZWZhdWx0T3B0aW9ucz17dHlwZTpudWxsLG9yaWVudGF0aW9uOntpdGVtOiJib3R0b20ifSxhbGlnbjoiYXV0byIsc3RhY2s6ITAsc3RhY2tTdWJncm91cHM6ITAsZ3JvdXBPcmRlclN3YXA6ZnVuY3Rpb24odCxlLGkpe3ZhciBvPWUub3JkZXI7ZS5vcmRlcj10Lm9yZGVyLHQub3JkZXI9b30sZ3JvdXBPcmRlcjoib3JkZXIiLHNlbGVjdGFibGU6ITAsbXVsdGlzZWxlY3Q6ITEsaXRlbXNBbHdheXNEcmFnZ2FibGU6e2l0ZW06ITEscmFuZ2U6ITF9LGVkaXRhYmxlOnt1cGRhdGVUaW1lOiExLHVwZGF0ZUdyb3VwOiExLGFkZDohMSxyZW1vdmU6ITEsb3ZlcnJpZGVJdGVtczohMX0sZ3JvdXBFZGl0YWJsZTp7b3JkZXI6ITEsYWRkOiExLHJlbW92ZTohMX0sc25hcDpwLnNuYXAsb25BZGQ6ZnVuY3Rpb24odCxlKXtlKHQpfSxvblVwZGF0ZTpmdW5jdGlvbih0LGUpe2UodCl9LG9uTW92ZTpmdW5jdGlvbih0LGUpe2UodCl9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQsZSl7ZSh0KX0sb25Nb3Zpbmc6ZnVuY3Rpb24odCxlKXtlKHQpfSxvbkFkZEdyb3VwOmZ1bmN0aW9uKHQsZSl7ZSh0KX0sb25Nb3ZlR3JvdXA6ZnVuY3Rpb24odCxlKXtlKHQpfSxvblJlbW92ZUdyb3VwOmZ1bmN0aW9uKHQsZSl7ZSh0KX0sbWFyZ2luOntpdGVtOntob3Jpem9udGFsOjEwLHZlcnRpY2FsOjEwfSxheGlzOjIwfSxzaG93VG9vbHRpcHM6ITAsdG9vbHRpcDp7Zm9sbG93TW91c2U6ITEsb3ZlcmZsb3dNZXRob2Q6ImZsaXAifSx0b29sdGlwT25JdGVtVXBkYXRlVGltZTohMX0sdGhpcy5vcHRpb25zPWwuZXh0ZW5kKHt9LHRoaXMuZGVmYXVsdE9wdGlvbnMpLHRoaXMub3B0aW9ucy5ydGw9ZS5ydGwsdGhpcy5pdGVtT3B0aW9ucz17dHlwZTp7c3RhcnQ6IkRhdGUiLGVuZDoiRGF0ZSJ9fSx0aGlzLmNvbnZlcnNpb249e3RvU2NyZWVuOnQudXRpbC50b1NjcmVlbix0b1RpbWU6dC51dGlsLnRvVGltZX0sdGhpcy5kb209e30sdGhpcy5wcm9wcz17fSx0aGlzLmhhbW1lcj1udWxsO3ZhciBpPXRoaXM7dGhpcy5pdGVtc0RhdGE9bnVsbCx0aGlzLmdyb3Vwc0RhdGE9bnVsbCx0aGlzLml0ZW1MaXN0ZW5lcnM9e2FkZDpmdW5jdGlvbih0LGUsbyl7aS5fb25BZGQoZS5pdGVtcyl9LHVwZGF0ZTpmdW5jdGlvbih0LGUsbyl7aS5fb25VcGRhdGUoZS5pdGVtcyl9LHJlbW92ZTpmdW5jdGlvbih0LGUsbyl7aS5fb25SZW1vdmUoZS5pdGVtcyl9fSx0aGlzLmdyb3VwTGlzdGVuZXJzPXthZGQ6ZnVuY3Rpb24odCxlLG8pe2kuX29uQWRkR3JvdXBzKGUuaXRlbXMpfSx1cGRhdGU6ZnVuY3Rpb24odCxlLG8pe2kuX29uVXBkYXRlR3JvdXBzKGUuaXRlbXMpfSxyZW1vdmU6ZnVuY3Rpb24odCxlLG8pe2kuX29uUmVtb3ZlR3JvdXBzKGUuaXRlbXMpfX0sdGhpcy5pdGVtcz17fSx0aGlzLmdyb3Vwcz17fSx0aGlzLmdyb3VwSWRzPVtdLHRoaXMuc2VsZWN0aW9uPVtdLHRoaXMucG9wdXA9bnVsbCx0aGlzLnRvdWNoUGFyYW1zPXt9LHRoaXMuZ3JvdXBUb3VjaFBhcmFtcz17fSx0aGlzLl9jcmVhdGUoKSx0aGlzLnNldE9wdGlvbnMoZSl9dmFyIHM9aSg1NSkscj1vKHMpLGE9aSg2MiksaD1vKGEpLGQ9aSgxMTMpLGw9aSgxKSx1PWkoODkpLGM9aSg5MykscD1pKDEyNSksZj1pKDEyMSksbT1pKDEyNiksdj1pKDEzMCksZz1pKDEzMSkseT1pKDEzMiksYj1pKDEyOCksXz1pKDEzMyksdz1pKDEzNCkuZGVmYXVsdCx4PSJfX3VuZ3JvdXBlZF9fIixrPSJfX2JhY2tncm91bmRfXyI7bi5wcm90b3R5cGU9bmV3IGYsbi50eXBlcz17YmFja2dyb3VuZDpfLGJveDpnLHJhbmdlOmIscG9pbnQ6eX0sbi5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NOYW1lPSJ2aXMtaXRlbXNldCIsdFsidGltZWxpbmUtaXRlbXNldCJdPXRoaXMsdGhpcy5kb20uZnJhbWU9dDt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLmNsYXNzTmFtZT0idmlzLWJhY2tncm91bmQiLHQuYXBwZW5kQ2hpbGQoZSksdGhpcy5kb20uYmFja2dyb3VuZD1lO3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2kuY2xhc3NOYW1lPSJ2aXMtZm9yZWdyb3VuZCIsdC5hcHBlbmRDaGlsZChpKSx0aGlzLmRvbS5mb3JlZ3JvdW5kPWk7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7by5jbGFzc05hbWU9InZpcy1heGlzIix0aGlzLmRvbS5heGlzPW87dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7bi5jbGFzc05hbWU9InZpcy1sYWJlbHNldCIsdGhpcy5kb20ubGFiZWxTZXQ9bix0aGlzLl91cGRhdGVVbmdyb3VwZWQoKTt2YXIgcz1uZXcgdihrLG51bGwsdGhpcyk7cy5zaG93KCksdGhpcy5ncm91cHNba109cyx0aGlzLmhhbW1lcj1uZXcgZCh0aGlzLmJvZHkuZG9tLmNlbnRlckNvbnRhaW5lciksdGhpcy5oYW1tZXIub24oImhhbW1lci5pbnB1dCIsZnVuY3Rpb24odCl7dC5pc0ZpcnN0JiZ0aGlzLl9vblRvdWNoKHQpfS5iaW5kKHRoaXMpKSx0aGlzLmhhbW1lci5vbigicGFuc3RhcnQiLHRoaXMuX29uRHJhZ1N0YXJ0LmJpbmQodGhpcykpLHRoaXMuaGFtbWVyLm9uKCJwYW5tb3ZlIix0aGlzLl9vbkRyYWcuYmluZCh0aGlzKSksdGhpcy5oYW1tZXIub24oInBhbmVuZCIsdGhpcy5fb25EcmFnRW5kLmJpbmQodGhpcykpLHRoaXMuaGFtbWVyLmdldCgicGFuIikuc2V0KHt0aHJlc2hvbGQ6NSxkaXJlY3Rpb246ZC5ESVJFQ1RJT05fSE9SSVpPTlRBTH0pLHRoaXMuaGFtbWVyLm9uKCJ0YXAiLHRoaXMuX29uU2VsZWN0SXRlbS5iaW5kKHRoaXMpKSx0aGlzLmhhbW1lci5vbigicHJlc3MiLHRoaXMuX29uTXVsdGlTZWxlY3RJdGVtLmJpbmQodGhpcykpLHRoaXMuaGFtbWVyLm9uKCJkb3VibGV0YXAiLHRoaXMuX29uQWRkSXRlbS5iaW5kKHRoaXMpKSx0aGlzLm9wdGlvbnMucnRsP3RoaXMuZ3JvdXBIYW1tZXI9bmV3IGQodGhpcy5ib2R5LmRvbS5yaWdodENvbnRhaW5lcik6dGhpcy5ncm91cEhhbW1lcj1uZXcgZCh0aGlzLmJvZHkuZG9tLmxlZnRDb250YWluZXIpLHRoaXMuZ3JvdXBIYW1tZXIub24oInRhcCIsdGhpcy5fb25Hcm91cENsaWNrLmJpbmQodGhpcykpLHRoaXMuZ3JvdXBIYW1tZXIub24oInBhbnN0YXJ0Iix0aGlzLl9vbkdyb3VwRHJhZ1N0YXJ0LmJpbmQodGhpcykpLHRoaXMuZ3JvdXBIYW1tZXIub24oInBhbm1vdmUiLHRoaXMuX29uR3JvdXBEcmFnLmJpbmQodGhpcykpLHRoaXMuZ3JvdXBIYW1tZXIub24oInBhbmVuZCIsdGhpcy5fb25Hcm91cERyYWdFbmQuYmluZCh0aGlzKSksdGhpcy5ncm91cEhhbW1lci5nZXQoInBhbiIpLnNldCh7dGhyZXNob2xkOjUsZGlyZWN0aW9uOmQuRElSRUNUSU9OX1ZFUlRJQ0FMfSksdGhpcy5ib2R5LmRvbS5jZW50ZXJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIix0aGlzLl9vbk1vdXNlT3Zlci5iaW5kKHRoaXMpKSx0aGlzLmJvZHkuZG9tLmNlbnRlckNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsdGhpcy5fb25Nb3VzZU91dC5iaW5kKHRoaXMpKSx0aGlzLmJvZHkuZG9tLmNlbnRlckNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuX29uTW91c2VNb3ZlLmJpbmQodGhpcykpLHRoaXMuYm9keS5kb20uY2VudGVyQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51Iix0aGlzLl9vbkRyYWdFbmQuYmluZCh0aGlzKSksdGhpcy5ib2R5LmRvbS5jZW50ZXJDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V3aGVlbCIsdGhpcy5fb25Nb3VzZVdoZWVsLmJpbmQodGhpcykpLHRoaXMuc2hvdygpfSxuLnByb3RvdHlwZS5zZXRPcHRpb25zPWZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlPVsidHlwZSIsInJ0bCIsImFsaWduIiwib3JkZXIiLCJzdGFjayIsInN0YWNrU3ViZ3JvdXBzIiwic2VsZWN0YWJsZSIsIm11bHRpc2VsZWN0IiwibXVsdGlzZWxlY3RQZXJHcm91cCIsImdyb3VwT3JkZXIiLCJkYXRhQXR0cmlidXRlcyIsInRlbXBsYXRlIiwiZ3JvdXBUZW1wbGF0ZSIsInZpc2libGVGcmFtZVRlbXBsYXRlIiwiaGlkZSIsInNuYXAiLCJncm91cE9yZGVyU3dhcCIsInNob3dUb29sdGlwcyIsInRvb2x0aXAiLCJ0b29sdGlwT25JdGVtVXBkYXRlVGltZSJdO2wuc2VsZWN0aXZlRXh0ZW5kKGUsdGhpcy5vcHRpb25zLHQpLCJpdGVtc0Fsd2F5c0RyYWdnYWJsZSJpbiB0JiYoImJvb2xlYW4iPT10eXBlb2YgdC5pdGVtc0Fsd2F5c0RyYWdnYWJsZT8odGhpcy5vcHRpb25zLml0ZW1zQWx3YXlzRHJhZ2dhYmxlLml0ZW09dC5pdGVtc0Fsd2F5c0RyYWdnYWJsZSx0aGlzLm9wdGlvbnMuaXRlbXNBbHdheXNEcmFnZ2FibGUucmFuZ2U9ITEpOiJvYmplY3QiPT09KDAsaC5kZWZhdWx0KSh0Lml0ZW1zQWx3YXlzRHJhZ2dhYmxlKSYmKGwuc2VsZWN0aXZlRXh0ZW5kKFsiaXRlbSIsInJhbmdlIl0sdGhpcy5vcHRpb25zLml0ZW1zQWx3YXlzRHJhZ2dhYmxlLHQuaXRlbXNBbHdheXNEcmFnZ2FibGUpLHRoaXMub3B0aW9ucy5pdGVtc0Fsd2F5c0RyYWdnYWJsZS5pdGVtfHwodGhpcy5vcHRpb25zLml0ZW1zQWx3YXlzRHJhZ2dhYmxlLnJhbmdlPSExKSkpLCJvcmllbnRhdGlvbiJpbiB0JiYoInN0cmluZyI9PXR5cGVvZiB0Lm9yaWVudGF0aW9uP3RoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5pdGVtPSJ0b3AiPT09dC5vcmllbnRhdGlvbj8idG9wIjoiYm90dG9tIjoib2JqZWN0Ij09PSgwLGguZGVmYXVsdCkodC5vcmllbnRhdGlvbikmJiJpdGVtImluIHQub3JpZW50YXRpb24mJih0aGlzLm9wdGlvbnMub3JpZW50YXRpb24uaXRlbT10Lm9yaWVudGF0aW9uLml0ZW0pKSwibWFyZ2luImluIHQmJigibnVtYmVyIj09dHlwZW9mIHQubWFyZ2luPyh0aGlzLm9wdGlvbnMubWFyZ2luLmF4aXM9dC5tYXJnaW4sdGhpcy5vcHRpb25zLm1hcmdpbi5pdGVtLmhvcml6b250YWw9dC5tYXJnaW4sdGhpcy5vcHRpb25zLm1hcmdpbi5pdGVtLnZlcnRpY2FsPXQubWFyZ2luKToib2JqZWN0Ij09PSgwLA0KaC5kZWZhdWx0KSh0Lm1hcmdpbikmJihsLnNlbGVjdGl2ZUV4dGVuZChbImF4aXMiXSx0aGlzLm9wdGlvbnMubWFyZ2luLHQubWFyZ2luKSwiaXRlbSJpbiB0Lm1hcmdpbiYmKCJudW1iZXIiPT10eXBlb2YgdC5tYXJnaW4uaXRlbT8odGhpcy5vcHRpb25zLm1hcmdpbi5pdGVtLmhvcml6b250YWw9dC5tYXJnaW4uaXRlbSx0aGlzLm9wdGlvbnMubWFyZ2luLml0ZW0udmVydGljYWw9dC5tYXJnaW4uaXRlbSk6Im9iamVjdCI9PT0oMCxoLmRlZmF1bHQpKHQubWFyZ2luLml0ZW0pJiZsLnNlbGVjdGl2ZUV4dGVuZChbImhvcml6b250YWwiLCJ2ZXJ0aWNhbCJdLHRoaXMub3B0aW9ucy5tYXJnaW4uaXRlbSx0Lm1hcmdpbi5pdGVtKSkpKSwiZWRpdGFibGUiaW4gdCYmKCJib29sZWFuIj09dHlwZW9mIHQuZWRpdGFibGU/KHRoaXMub3B0aW9ucy5lZGl0YWJsZS51cGRhdGVUaW1lPXQuZWRpdGFibGUsdGhpcy5vcHRpb25zLmVkaXRhYmxlLnVwZGF0ZUdyb3VwPXQuZWRpdGFibGUsdGhpcy5vcHRpb25zLmVkaXRhYmxlLmFkZD10LmVkaXRhYmxlLHRoaXMub3B0aW9ucy5lZGl0YWJsZS5yZW1vdmU9dC5lZGl0YWJsZSx0aGlzLm9wdGlvbnMuZWRpdGFibGUub3ZlcnJpZGVJdGVtcz0hMSk6Im9iamVjdCI9PT0oMCxoLmRlZmF1bHQpKHQuZWRpdGFibGUpJiZsLnNlbGVjdGl2ZUV4dGVuZChbInVwZGF0ZVRpbWUiLCJ1cGRhdGVHcm91cCIsImFkZCIsInJlbW92ZSIsIm92ZXJyaWRlSXRlbXMiXSx0aGlzLm9wdGlvbnMuZWRpdGFibGUsdC5lZGl0YWJsZSkpLCJncm91cEVkaXRhYmxlImluIHQmJigiYm9vbGVhbiI9PXR5cGVvZiB0Lmdyb3VwRWRpdGFibGU/KHRoaXMub3B0aW9ucy5ncm91cEVkaXRhYmxlLm9yZGVyPXQuZ3JvdXBFZGl0YWJsZSx0aGlzLm9wdGlvbnMuZ3JvdXBFZGl0YWJsZS5hZGQ9dC5ncm91cEVkaXRhYmxlLHRoaXMub3B0aW9ucy5ncm91cEVkaXRhYmxlLnJlbW92ZT10Lmdyb3VwRWRpdGFibGUpOiJvYmplY3QiPT09KDAsaC5kZWZhdWx0KSh0Lmdyb3VwRWRpdGFibGUpJiZsLnNlbGVjdGl2ZUV4dGVuZChbIm9yZGVyIiwiYWRkIiwicmVtb3ZlIl0sdGhpcy5vcHRpb25zLmdyb3VwRWRpdGFibGUsdC5ncm91cEVkaXRhYmxlKSk7WyJvbkFkZCIsIm9uVXBkYXRlIiwib25SZW1vdmUiLCJvbk1vdmUiLCJvbk1vdmluZyIsIm9uQWRkR3JvdXAiLCJvbk1vdmVHcm91cCIsIm9uUmVtb3ZlR3JvdXAiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBpPXRbZV07aWYoaSl7aWYoIShpIGluc3RhbmNlb2YgRnVuY3Rpb24pKXRocm93IG5ldyBFcnJvcigib3B0aW9uICIrZSsiIG11c3QgYmUgYSBmdW5jdGlvbiAiK2UrIihpdGVtLCBjYWxsYmFjaykiKTt0aGlzLm9wdGlvbnNbZV09aX19LmJpbmQodGhpcykpLHRoaXMubWFya0RpcnR5KCl9fSxuLnByb3RvdHlwZS5tYXJrRGlydHk9ZnVuY3Rpb24odCl7dGhpcy5ncm91cElkcz1bXSx0JiZ0LnJlZnJlc2hJdGVtcyYmbC5mb3JFYWNoKHRoaXMuaXRlbXMsZnVuY3Rpb24odCl7dC5kaXJ0eT0hMCx0LmRpc3BsYXllZCYmdC5yZWRyYXcoKX0pfSxuLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5oaWRlKCksdGhpcy5zZXRJdGVtcyhudWxsKSx0aGlzLnNldEdyb3VwcyhudWxsKSx0aGlzLmhhbW1lcj1udWxsLHRoaXMuYm9keT1udWxsLHRoaXMuY29udmVyc2lvbj1udWxsfSxuLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKCl7dGhpcy5kb20uZnJhbWUucGFyZW50Tm9kZSYmdGhpcy5kb20uZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbS5mcmFtZSksdGhpcy5kb20uYXhpcy5wYXJlbnROb2RlJiZ0aGlzLmRvbS5heGlzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kb20uYXhpcyksdGhpcy5kb20ubGFiZWxTZXQucGFyZW50Tm9kZSYmdGhpcy5kb20ubGFiZWxTZXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbS5sYWJlbFNldCl9LG4ucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oKXt0aGlzLmRvbS5mcmFtZS5wYXJlbnROb2RlfHx0aGlzLmJvZHkuZG9tLmNlbnRlci5hcHBlbmRDaGlsZCh0aGlzLmRvbS5mcmFtZSksdGhpcy5kb20uYXhpcy5wYXJlbnROb2RlfHx0aGlzLmJvZHkuZG9tLmJhY2tncm91bmRWZXJ0aWNhbC5hcHBlbmRDaGlsZCh0aGlzLmRvbS5heGlzKSx0aGlzLmRvbS5sYWJlbFNldC5wYXJlbnROb2RlfHwodGhpcy5vcHRpb25zLnJ0bD90aGlzLmJvZHkuZG9tLnJpZ2h0LmFwcGVuZENoaWxkKHRoaXMuZG9tLmxhYmVsU2V0KTp0aGlzLmJvZHkuZG9tLmxlZnQuYXBwZW5kQ2hpbGQodGhpcy5kb20ubGFiZWxTZXQpKX0sbi5wcm90b3R5cGUuc2V0U2VsZWN0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlLGksbyxuO2Zvcih2b2lkIDA9PXQmJih0PVtdKSxBcnJheS5pc0FycmF5KHQpfHwodD1bdF0pLGU9MCxpPXRoaXMuc2VsZWN0aW9uLmxlbmd0aDtlPGk7ZSsrKW89dGhpcy5zZWxlY3Rpb25bZV0sKG49dGhpcy5pdGVtc1tvXSkmJm4udW5zZWxlY3QoKTtmb3IodGhpcy5zZWxlY3Rpb249W10sZT0wLGk9dC5sZW5ndGg7ZTxpO2UrKylvPXRbZV0sKG49dGhpcy5pdGVtc1tvXSkmJih0aGlzLnNlbGVjdGlvbi5wdXNoKG8pLG4uc2VsZWN0KCkpfSxuLnByb3RvdHlwZS5nZXRTZWxlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb24uY29uY2F0KFtdKX0sbi5wcm90b3R5cGUuZ2V0VmlzaWJsZUl0ZW1zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5ib2R5LnJhbmdlLmdldFJhbmdlKCk7aWYodGhpcy5vcHRpb25zLnJ0bCl2YXIgZT10aGlzLmJvZHkudXRpbC50b1NjcmVlbih0LnN0YXJ0KSxpPXRoaXMuYm9keS51dGlsLnRvU2NyZWVuKHQuZW5kKTtlbHNlIHZhciBpPXRoaXMuYm9keS51dGlsLnRvU2NyZWVuKHQuc3RhcnQpLGU9dGhpcy5ib2R5LnV0aWwudG9TY3JlZW4odC5lbmQpO3ZhciBvPVtdO2Zvcih2YXIgbiBpbiB0aGlzLmdyb3VwcylpZih0aGlzLmdyb3Vwcy5oYXNPd25Qcm9wZXJ0eShuKSlmb3IodmFyIHM9dGhpcy5ncm91cHNbbl0scj1zLmlzVmlzaWJsZT9zLnZpc2libGVJdGVtczpbXSxhPTA7YTxyLmxlbmd0aDthKyspe3ZhciBoPXJbYV07dGhpcy5vcHRpb25zLnJ0bD9oLnJpZ2h0PGkmJmgucmlnaHQraC53aWR0aD5lJiZvLnB1c2goaC5pZCk6aC5sZWZ0PGUmJmgubGVmdCtoLndpZHRoPmkmJm8ucHVzaChoLmlkKX1yZXR1cm4gb30sbi5wcm90b3R5cGUuX2Rlc2VsZWN0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnNlbGVjdGlvbixpPTAsbz1lLmxlbmd0aDtpPG87aSsrKWlmKGVbaV09PXQpe2Uuc3BsaWNlKGksMSk7YnJlYWt9fSxuLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMubWFyZ2luLGU9dGhpcy5ib2R5LnJhbmdlLGk9bC5vcHRpb24uYXNTaXplLG89dGhpcy5vcHRpb25zLG49by5vcmllbnRhdGlvbi5pdGVtLHM9ITEscj10aGlzLmRvbS5mcmFtZTt0aGlzLnByb3BzLnRvcD10aGlzLmJvZHkuZG9tUHJvcHMudG9wLmhlaWdodCt0aGlzLmJvZHkuZG9tUHJvcHMuYm9yZGVyLnRvcCx0aGlzLm9wdGlvbnMucnRsP3RoaXMucHJvcHMucmlnaHQ9dGhpcy5ib2R5LmRvbVByb3BzLnJpZ2h0LndpZHRoK3RoaXMuYm9keS5kb21Qcm9wcy5ib3JkZXIucmlnaHQ6dGhpcy5wcm9wcy5sZWZ0PXRoaXMuYm9keS5kb21Qcm9wcy5sZWZ0LndpZHRoK3RoaXMuYm9keS5kb21Qcm9wcy5ib3JkZXIubGVmdCxyLmNsYXNzTmFtZT0idmlzLWl0ZW1zZXQiLHM9dGhpcy5fb3JkZXJHcm91cHMoKXx8czt2YXIgYT1lLmVuZC1lLnN0YXJ0LGg9YSE9dGhpcy5sYXN0VmlzaWJsZUludGVydmFsfHx0aGlzLnByb3BzLndpZHRoIT10aGlzLnByb3BzLmxhc3RXaWR0aCxkPWUuc3RhcnQhPXRoaXMubGFzdFJhbmdlU3RhcnQsdT1vLnN0YWNrIT10aGlzLmxhc3RTdGFjayxjPW8uc3RhY2tTdWJncm91cHMhPXRoaXMubGFzdFN0YWNrU3ViZ3JvdXBzLHA9aHx8ZHx8dXx8Yzt0aGlzLmxhc3RWaXNpYmxlSW50ZXJ2YWw9YSx0aGlzLmxhc3RSYW5nZVN0YXJ0PWUuc3RhcnQsdGhpcy5sYXN0U3RhY2s9by5zdGFjayx0aGlzLmxhc3RTdGFja1N1Ymdyb3Vwcz1vLnN0YWNrU3ViZ3JvdXBzLHRoaXMucHJvcHMubGFzdFdpZHRoPXRoaXMucHJvcHMud2lkdGg7dmFyIGY9dGhpcy5fZmlyc3RHcm91cCgpLG09e2l0ZW06dC5pdGVtLGF4aXM6dC5heGlzfSx2PXtpdGVtOnQuaXRlbSxheGlzOnQuaXRlbS52ZXJ0aWNhbC8yfSxnPTAseT10LmF4aXMrdC5pdGVtLnZlcnRpY2FsO3JldHVybiB0aGlzLmdyb3Vwc1trXS5yZWRyYXcoZSx2LHApLGwuZm9yRWFjaCh0aGlzLmdyb3VwcyxmdW5jdGlvbih0KXt2YXIgaT10PT1mP206dixvPXQucmVkcmF3KGUsaSxwKTtzPW98fHMsZys9dC5oZWlnaHR9KSxnPU1hdGgubWF4KGcseSksci5zdHlsZS5oZWlnaHQ9aShnKSx0aGlzLnByb3BzLndpZHRoPXIub2Zmc2V0V2lkdGgsdGhpcy5wcm9wcy5oZWlnaHQ9Zyx0aGlzLmRvbS5heGlzLnN0eWxlLnRvcD1pKCJ0b3AiPT1uP3RoaXMuYm9keS5kb21Qcm9wcy50b3AuaGVpZ2h0K3RoaXMuYm9keS5kb21Qcm9wcy5ib3JkZXIudG9wOnRoaXMuYm9keS5kb21Qcm9wcy50b3AuaGVpZ2h0K3RoaXMuYm9keS5kb21Qcm9wcy5jZW50ZXJDb250YWluZXIuaGVpZ2h0KSx0aGlzLm9wdGlvbnMucnRsP3RoaXMuZG9tLmF4aXMuc3R5bGUucmlnaHQ9IjAiOnRoaXMuZG9tLmF4aXMuc3R5bGUubGVmdD0iMCIsdGhpcy5pbml0aWFsSXRlbVNldERyYXduPSEwLHM9dGhpcy5faXNSZXNpemVkKCl8fHN9LG4ucHJvdG90eXBlLl9maXJzdEdyb3VwPWZ1bmN0aW9uKCl7dmFyIHQ9InRvcCI9PXRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5pdGVtPzA6dGhpcy5ncm91cElkcy5sZW5ndGgtMSxlPXRoaXMuZ3JvdXBJZHNbdF07cmV0dXJuIHRoaXMuZ3JvdXBzW2VdfHx0aGlzLmdyb3Vwc1t4XXx8bnVsbH0sbi5wcm90b3R5cGUuX3VwZGF0ZVVuZ3JvdXBlZD1mdW5jdGlvbigpe3ZhciB0LGUsaT10aGlzLmdyb3Vwc1t4XTt0aGlzLmdyb3Vwc1trXTtpZih0aGlzLmdyb3Vwc0RhdGEpe2lmKGkpe2kuaGlkZSgpLGRlbGV0ZSB0aGlzLmdyb3Vwc1t4XTtmb3IoZSBpbiB0aGlzLml0ZW1zKWlmKHRoaXMuaXRlbXMuaGFzT3duUHJvcGVydHkoZSkpe3Q9dGhpcy5pdGVtc1tlXSx0LnBhcmVudCYmdC5wYXJlbnQucmVtb3ZlKHQpO3ZhciBvPXRoaXMuX2dldEdyb3VwSWQodC5kYXRhKSxuPXRoaXMuZ3JvdXBzW29dO24mJm4uYWRkKHQpfHx0LmhpZGUoKX19fWVsc2UgaWYoIWkpe2k9bmV3IG0obnVsbCxudWxsLHRoaXMpLHRoaXMuZ3JvdXBzW3hdPWk7Zm9yKGUgaW4gdGhpcy5pdGVtcyl0aGlzLml0ZW1zLmhhc093blByb3BlcnR5KGUpJiYodD10aGlzLml0ZW1zW2VdLGkuYWRkKHQpKTtpLnNob3coKX19LG4ucHJvdG90eXBlLmdldExhYmVsU2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tLmxhYmVsU2V0fSxuLnByb3RvdHlwZS5zZXRJdGVtcz1mdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMsbz10aGlzLml0ZW1zRGF0YTtpZih0KXtpZighKHQgaW5zdGFuY2VvZiB1fHx0IGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGF0YSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIERhdGFTZXQgb3IgRGF0YVZpZXciKTt0aGlzLml0ZW1zRGF0YT10fWVsc2UgdGhpcy5pdGVtc0RhdGE9bnVsbDtpZihvJiYobC5mb3JFYWNoKHRoaXMuaXRlbUxpc3RlbmVycyxmdW5jdGlvbih0LGUpe28ub2ZmKGUsdCl9KSxlPW8uZ2V0SWRzKCksdGhpcy5fb25SZW1vdmUoZSkpLHRoaXMuaXRlbXNEYXRhKXt2YXIgbj10aGlzLmlkO2wuZm9yRWFjaCh0aGlzLml0ZW1MaXN0ZW5lcnMsZnVuY3Rpb24odCxlKXtpLml0ZW1zRGF0YS5vbihlLHQsbil9KSxlPXRoaXMuaXRlbXNEYXRhLmdldElkcygpLHRoaXMuX29uQWRkKGUpLHRoaXMuX3VwZGF0ZVVuZ3JvdXBlZCgpfXRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9jaGFuZ2UiLHtxdWV1ZTohMH0pfSxuLnByb3RvdHlwZS5nZXRJdGVtcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZW1zRGF0YX0sbi5wcm90b3R5cGUuc2V0R3JvdXBzPWZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcztpZih0aGlzLmdyb3Vwc0RhdGEmJihsLmZvckVhY2godGhpcy5ncm91cExpc3RlbmVycyxmdW5jdGlvbih0LGUpe2kuZ3JvdXBzRGF0YS5vZmYoZSx0KX0pLGU9dGhpcy5ncm91cHNEYXRhLmdldElkcygpLHRoaXMuZ3JvdXBzRGF0YT1udWxsLHRoaXMuX29uUmVtb3ZlR3JvdXBzKGUpKSx0KXtpZighKHQgaW5zdGFuY2VvZiB1fHx0IGluc3RhbmNlb2YgYykpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGF0YSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIERhdGFTZXQgb3IgRGF0YVZpZXciKTt0aGlzLmdyb3Vwc0RhdGE9dH1lbHNlIHRoaXMuZ3JvdXBzRGF0YT1udWxsO2lmKHRoaXMuZ3JvdXBzRGF0YSl7dmFyIG89dGhpcy5ncm91cHNEYXRhO3RoaXMuZ3JvdXBzRGF0YSBpbnN0YW5jZW9mIGMmJihvPXRoaXMuZ3JvdXBzRGF0YS5nZXREYXRhU2V0KCkpLG8uZ2V0KCkuZm9yRWFjaChmdW5jdGlvbih0KXt0Lm5lc3RlZEdyb3VwcyYmdC5uZXN0ZWRHcm91cHMuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgaT1vLmdldChlKTtpLm5lc3RlZEluR3JvdXA9dC5pZCwwPT10LnNob3dOZXN0ZWQmJihpLnZpc2libGU9ITEpLG8udXBkYXRlKGkpfSl9KTt2YXIgbj10aGlzLmlkO2wuZm9yRWFjaCh0aGlzLmdyb3VwTGlzdGVuZXJzLGZ1bmN0aW9uKHQsZSl7aS5ncm91cHNEYXRhLm9uKGUsdCxuKX0pLGU9dGhpcy5ncm91cHNEYXRhLmdldElkcygpLHRoaXMuX29uQWRkR3JvdXBzKGUpfXRoaXMuX3VwZGF0ZVVuZ3JvdXBlZCgpLHRoaXMuX29yZGVyKCksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX2NoYW5nZSIse3F1ZXVlOiEwfSl9LG4ucHJvdG90eXBlLmdldEdyb3Vwcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdyb3Vwc0RhdGF9LG4ucHJvdG90eXBlLnJlbW92ZUl0ZW09ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pdGVtc0RhdGEuZ2V0KHQpLGk9dGhpcy5pdGVtc0RhdGEuZ2V0RGF0YVNldCgpO3RoaXMuaXRlbXNbdF07ZSYmdGhpcy5vcHRpb25zLm9uUmVtb3ZlKGUsZnVuY3Rpb24oZSl7ZSYmaS5yZW1vdmUodCl9KX0sbi5wcm90b3R5cGUuX2dldFR5cGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZXx8dGhpcy5vcHRpb25zLnR5cGV8fCh0LmVuZD8icmFuZ2UiOiJib3giKX0sbi5wcm90b3R5cGUuX2dldEdyb3VwSWQ9ZnVuY3Rpb24odCl7cmV0dXJuImJhY2tncm91bmQiPT10aGlzLl9nZXRUeXBlKHQpJiZ2b2lkIDA9PXQuZ3JvdXA/azp0aGlzLmdyb3Vwc0RhdGE/dC5ncm91cDp4fSxuLnByb3RvdHlwZS5fb25VcGRhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0LmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGksbz1lLml0ZW1zRGF0YS5nZXQodCxlLml0ZW1PcHRpb25zKSxzPWUuaXRlbXNbdF0scj1vP2UuX2dldFR5cGUobyk6bnVsbCxhPW4udHlwZXNbcl07aWYocyYmKGEmJnMgaW5zdGFuY2VvZiBhP2UuX3VwZGF0ZUl0ZW0ocyxvKTooaT1zLnNlbGVjdGVkLGUuX3JlbW92ZUl0ZW0ocykscz1udWxsKSksIXMmJm8pe2lmKCFhKXRocm93InJhbmdlb3ZlcmZsb3ciPT1yP25ldyBUeXBlRXJyb3IoJ0l0ZW0gdHlwZSAicmFuZ2VvdmVyZmxvdyIgaXMgZGVwcmVjYXRlZC4gVXNlIGNzcyBzdHlsaW5nIGluc3RlYWQ6IC52aXMtaXRlbS52aXMtcmFuZ2UgLnZpcy1pdGVtLWNvbnRlbnQge292ZXJmbG93OiB2aXNpYmxlO30nKTpuZXcgVHlwZUVycm9yKCdVbmtub3duIGl0ZW0gdHlwZSAiJytyKyciJyk7cz1uZXcgYShvLGUuY29udmVyc2lvbixlLm9wdGlvbnMpLHMuaWQ9dCxlLl9hZGRJdGVtKHMpLGkmJih0aGlzLnNlbGVjdGlvbi5wdXNoKHQpLHMuc2VsZWN0KCkpfX0uYmluZCh0aGlzKSksdGhpcy5fb3JkZXIoKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfY2hhbmdlIix7cXVldWU6ITB9KX0sbi5wcm90b3R5cGUuX29uQWRkPW4ucHJvdG90eXBlLl9vblVwZGF0ZSxuLnByb3RvdHlwZS5fb25SZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9MCxpPXRoaXM7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBvPWkuaXRlbXNbdF07byYmKGUrKyxpLl9yZW1vdmVJdGVtKG8pKX0pLGUmJih0aGlzLl9vcmRlcigpLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9jaGFuZ2UiLHtxdWV1ZTohMH0pKX0sbi5wcm90b3R5cGUuX29yZGVyPWZ1bmN0aW9uKCl7bC5mb3JFYWNoKHRoaXMuZ3JvdXBzLGZ1bmN0aW9uKHQpe3Qub3JkZXIoKX0pfSxuLnByb3RvdHlwZS5fb25VcGRhdGVHcm91cHM9ZnVuY3Rpb24odCl7dGhpcy5fb25BZGRHcm91cHModCl9LG4ucHJvdG90eXBlLl9vbkFkZEdyb3Vwcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3QuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgaT1lLmdyb3Vwc0RhdGEuZ2V0KHQpLG89ZS5ncm91cHNbdF07aWYobylvLnNldERhdGEoaSk7ZWxzZXtpZih0PT14fHx0PT1rKXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBncm91cCBpZC4gIit0KyIgaXMgYSByZXNlcnZlZCBpZC4iKTt2YXIgbj0oMCxyLmRlZmF1bHQpKGUub3B0aW9ucyk7bC5leHRlbmQobix7aGVpZ2h0Om51bGx9KSxvPW5ldyBtKHQsaSxlKSxlLmdyb3Vwc1t0XT1vO2Zvcih2YXIgcyBpbiBlLml0ZW1zKWlmKGUuaXRlbXMuaGFzT3duUHJvcGVydHkocykpe3ZhciBhPWUuaXRlbXNbc107YS5kYXRhLmdyb3VwPT10JiZvLmFkZChhKX1vLm9yZGVyKCksby5zaG93KCl9fSksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX2NoYW5nZSIse3F1ZXVlOiEwfSl9LG4ucHJvdG90eXBlLl9vblJlbW92ZUdyb3Vwcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdyb3Vwczt0LmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGk9ZVt0XTtpJiYoaS5oaWRlKCksZGVsZXRlIGVbdF0pfSksdGhpcy5tYXJrRGlydHkoKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfY2hhbmdlIix7cXVldWU6ITB9KX0sbi5wcm90b3R5cGUuX29yZGVyR3JvdXBzPWZ1bmN0aW9uKCl7aWYodGhpcy5ncm91cHNEYXRhKXt2YXIgdD10aGlzLmdyb3Vwc0RhdGEuZ2V0SWRzKHtvcmRlcjp0aGlzLm9wdGlvbnMuZ3JvdXBPcmRlcn0pO3Q9dGhpcy5fb3JkZXJOZXN0ZWRHcm91cHModCk7dmFyIGU9IWwuZXF1YWxBcnJheSh0LHRoaXMuZ3JvdXBJZHMpO2lmKGUpe3ZhciBpPXRoaXMuZ3JvdXBzO3QuZm9yRWFjaChmdW5jdGlvbih0KXtpW3RdLmhpZGUoKX0pLHQuZm9yRWFjaChmdW5jdGlvbih0KXtpW3RdLnNob3coKX0pLHRoaXMuZ3JvdXBJZHM9dH1yZXR1cm4gZX1yZXR1cm4hMX0sbi5wcm90b3R5cGUuX29yZGVyTmVzdGVkR3JvdXBzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5ncm91cHNEYXRhLmdldCh0KTtpZihpLm5lc3RlZEluR3JvdXB8fGUucHVzaCh0KSxpLm5lc3RlZEdyb3Vwcyl7dmFyIG89dGhpcy5ncm91cHNEYXRhLmdldCh7ZmlsdGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlLm5lc3RlZEluR3JvdXA9PXR9LG9yZGVyOnRoaXMub3B0aW9ucy5ncm91cE9yZGVyfSksbj1vLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pO2U9ZS5jb25jYXQobil9fSx0aGlzKSxlfSxuLnByb3RvdHlwZS5fYWRkSXRlbT1mdW5jdGlvbih0KXt0aGlzLml0ZW1zW3QuaWRdPXQ7dmFyIGU9dGhpcy5fZ2V0R3JvdXBJZCh0LmRhdGEpLGk9dGhpcy5ncm91cHNbZV07aT9pJiZpLmRhdGEmJmkuZGF0YS5zaG93TmVzdGVkJiYodC5ncm91cFNob3dpbmc9ITApOnQuZ3JvdXBTaG93aW5nPSExLGkmJmkuYWRkKHQpfSxuLnByb3RvdHlwZS5fdXBkYXRlSXRlbT1mdW5jdGlvbih0LGUpe3Quc2V0RGF0YShlKTt2YXIgaT10aGlzLl9nZXRHcm91cElkKHQuZGF0YSksbz10aGlzLmdyb3Vwc1tpXTtvP28mJm8uZGF0YSYmby5kYXRhLnNob3dOZXN0ZWQmJih0Lmdyb3VwU2hvd2luZz0hMCk6dC5ncm91cFNob3dpbmc9ITF9LG4ucHJvdG90eXBlLl9yZW1vdmVJdGVtPWZ1bmN0aW9uKHQpe3QuaGlkZSgpLGRlbGV0ZSB0aGlzLml0ZW1zW3QuaWRdO3ZhciBlPXRoaXMuc2VsZWN0aW9uLmluZGV4T2YodC5pZCk7LTEhPWUmJnRoaXMuc2VsZWN0aW9uLnNwbGljZShlLDEpLHQucGFyZW50JiZ0LnBhcmVudC5yZW1vdmUodCl9LG4ucHJvdG90eXBlLl9jb25zdHJ1Y3RCeUVuZEFycmF5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxpPTA7aTx0Lmxlbmd0aDtpKyspdFtpXWluc3RhbmNlb2YgYiYmZS5wdXNoKHRbaV0pO3JldHVybiBlfSxuLnByb3RvdHlwZS5fb25Ub3VjaD1mdW5jdGlvbih0KXt0aGlzLnRvdWNoUGFyYW1zLml0ZW09dGhpcy5pdGVtRnJvbVRhcmdldCh0KSx0aGlzLnRvdWNoUGFyYW1zLmRyYWdMZWZ0SXRlbT10LnRhcmdldC5kcmFnTGVmdEl0ZW18fCExLHRoaXMudG91Y2hQYXJhbXMuZHJhZ1JpZ2h0SXRlbT10LnRhcmdldC5kcmFnUmlnaHRJdGVtfHwhMSx0aGlzLnRvdWNoUGFyYW1zLml0ZW1Qcm9wcz1udWxsfSxuLnByb3RvdHlwZS5fZ2V0R3JvdXBJbmRleD1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHRoaXMuZ3JvdXBJZHMubGVuZ3RoO2UrKylpZih0PT10aGlzLmdyb3VwSWRzW2VdKXJldHVybiBlfSxuLnByb3RvdHlwZS5fb25EcmFnU3RhcnQ9ZnVuY3Rpb24odCl7aWYoIXRoaXMudG91Y2hQYXJhbXMuaXRlbUlzRHJhZ2dpbmcpe3ZhciBlLGk9dGhpcy50b3VjaFBhcmFtcy5pdGVtfHxudWxsLG89dGhpcztpZihpJiYoaS5zZWxlY3RlZHx8dGhpcy5vcHRpb25zLml0ZW1zQWx3YXlzRHJhZ2dhYmxlLml0ZW0pKXtpZih0aGlzLm9wdGlvbnMuZWRpdGFibGUub3ZlcnJpZGVJdGVtcyYmIXRoaXMub3B0aW9ucy5lZGl0YWJsZS51cGRhdGVUaW1lJiYhdGhpcy5vcHRpb25zLmVkaXRhYmxlLnVwZGF0ZUdyb3VwKXJldHVybjtpZihudWxsIT1pLmVkaXRhYmxlJiYhaS5lZGl0YWJsZS51cGRhdGVUaW1lJiYhaS5lZGl0YWJsZS51cGRhdGVHcm91cCYmIXRoaXMub3B0aW9ucy5lZGl0YWJsZS5vdmVycmlkZUl0ZW1zKXJldHVybjt2YXIgbj10aGlzLnRvdWNoUGFyYW1zLmRyYWdMZWZ0SXRlbSxzPXRoaXMudG91Y2hQYXJhbXMuZHJhZ1JpZ2h0SXRlbTtpZih0aGlzLnRvdWNoUGFyYW1zLml0ZW1Jc0RyYWdnaW5nPSEwLHRoaXMudG91Y2hQYXJhbXMuc2VsZWN0ZWRJdGVtPWksbillPXtpdGVtOm4saW5pdGlhbFg6dC5jZW50ZXIueCxkcmFnTGVmdDohMCxkYXRhOnRoaXMuX2Nsb25lSXRlbURhdGEoaS5kYXRhKX0sdGhpcy50b3VjaFBhcmFtcy5pdGVtUHJvcHM9W2VdO2Vsc2UgaWYocyllPXtpdGVtOnMsaW5pdGlhbFg6dC5jZW50ZXIueCxkcmFnUmlnaHQ6ITAsZGF0YTp0aGlzLl9jbG9uZUl0ZW1EYXRhKGkuZGF0YSl9LHRoaXMudG91Y2hQYXJhbXMuaXRlbVByb3BzPVtlXTtlbHNle3RoaXMuZ3JvdXBJZHMubGVuZ3RoPDEmJnRoaXMucmVkcmF3KCk7dmFyIHI9dGhpcy5fZ2V0R3JvdXBJbmRleChpLmRhdGEuZ3JvdXApLGE9dGhpcy5vcHRpb25zLml0ZW1zQWx3YXlzRHJhZ2dhYmxlLml0ZW0mJiFpLnNlbGVjdGVkP1tpLmlkXTp0aGlzLmdldFNlbGVjdGlvbigpO3RoaXMudG91Y2hQYXJhbXMuaXRlbVByb3BzPWEubWFwKGZ1bmN0aW9uKGUpe3ZhciBpPW8uaXRlbXNbZV0sbj1vLl9nZXRHcm91cEluZGV4KGkuZGF0YS5ncm91cCk7cmV0dXJue2l0ZW06aSxpbml0aWFsWDp0LmNlbnRlci54LGdyb3VwT2Zmc2V0OnItbixkYXRhOnRoaXMuX2Nsb25lSXRlbURhdGEoaS5kYXRhKX19LmJpbmQodGhpcykpfXQuc3RvcFByb3BhZ2F0aW9uKCl9ZWxzZSB0aGlzLm9wdGlvbnMuZWRpdGFibGUuYWRkJiYodC5zcmNFdmVudC5jdHJsS2V5fHx0LnNyY0V2ZW50Lm1ldGFLZXkpJiZ0aGlzLl9vbkRyYWdTdGFydEFkZEl0ZW0odCl9fSxuLnByb3RvdHlwZS5fb25EcmFnU3RhcnRBZGRJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMub3B0aW9ucy5zbmFwfHxudWxsO2lmKHRoaXMub3B0aW9ucy5ydGwpdmFyIGk9bC5nZXRBYnNvbHV0ZVJpZ2h0KHRoaXMuZG9tLmZyYW1lKSxvPWktdC5jZW50ZXIueCsxMDtlbHNlIHZhciBpPWwuZ2V0QWJzb2x1dGVMZWZ0KHRoaXMuZG9tLmZyYW1lKSxvPXQuY2VudGVyLngtaS0xMDt2YXIgbj10aGlzLmJvZHkudXRpbC50b1RpbWUobykscz10aGlzLmJvZHkudXRpbC5nZXRTY2FsZSgpLHI9dGhpcy5ib2R5LnV0aWwuZ2V0U3RlcCgpLGE9ZT9lKG4scyxyKTpuLGg9YSxkPXt0eXBlOiJyYW5nZSIsc3RhcnQ6YSxlbmQ6aCxjb250ZW50OiJuZXcgaXRlbSJ9LHU9bC5yYW5kb21VVUlEKCk7ZFt0aGlzLml0ZW1zRGF0YS5fZmllbGRJZF09dTt2YXIgYz10aGlzLmdyb3VwRnJvbVRhcmdldCh0KTtjJiYoZC5ncm91cD1jLmdyb3VwSWQpO3ZhciBwPW5ldyBiKGQsdGhpcy5jb252ZXJzaW9uLHRoaXMub3B0aW9ucyk7cC5pZD11LHAuZGF0YT10aGlzLl9jbG9uZUl0ZW1EYXRhKGQpLHRoaXMuX2FkZEl0ZW0ocCksdGhpcy50b3VjaFBhcmFtcy5zZWxlY3RlZEl0ZW09cDt2YXIgZj17aXRlbTpwLGluaXRpYWxYOnQuY2VudGVyLngsZGF0YTpwLmRhdGF9O3RoaXMub3B0aW9ucy5ydGw/Zi5kcmFnTGVmdD0hMDpmLmRyYWdSaWdodD0hMCx0aGlzLnRvdWNoUGFyYW1zLml0ZW1Qcm9wcz1bZl0sdC5zdG9wUHJvcGFnYXRpb24oKX0sbi5wcm90b3R5cGUuX29uRHJhZz1mdW5jdGlvbih0KXtpZih0aGlzLnRvdWNoUGFyYW1zLml0ZW1Qcm9wcyl7dC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgZT10aGlzLGk9dGhpcy5vcHRpb25zLnNuYXB8fG51bGw7aWYodGhpcy5vcHRpb25zLnJ0bCl2YXIgbz10aGlzLmJvZHkuZG9tLnJvb3Qub2Zmc2V0TGVmdCt0aGlzLmJvZHkuZG9tUHJvcHMucmlnaHQud2lkdGg7ZWxzZSB2YXIgbz10aGlzLmJvZHkuZG9tLnJvb3Qub2Zmc2V0TGVmdCt0aGlzLmJvZHkuZG9tUHJvcHMubGVmdC53aWR0aDt2YXIgbj10aGlzLmJvZHkudXRpbC5nZXRTY2FsZSgpLHM9dGhpcy5ib2R5LnV0aWwuZ2V0U3RlcCgpLHI9dGhpcy50b3VjaFBhcmFtcy5zZWxlY3RlZEl0ZW0sYT0odGhpcy5vcHRpb25zLmVkaXRhYmxlLm92ZXJyaWRlSXRlbXN8fG51bGw9PXIuZWRpdGFibGUpJiZ0aGlzLm9wdGlvbnMuZWRpdGFibGUudXBkYXRlR3JvdXB8fCF0aGlzLm9wdGlvbnMuZWRpdGFibGUub3ZlcnJpZGVJdGVtcyYmbnVsbCE9ci5lZGl0YWJsZSYmci5lZGl0YWJsZS51cGRhdGVHcm91cCxoPW51bGw7aWYoYSYmciYmdm9pZCAwIT1yLmRhdGEuZ3JvdXApe3ZhciBkPWUuZ3JvdXBGcm9tVGFyZ2V0KHQpO2QmJihoPXRoaXMuX2dldEdyb3VwSW5kZXgoZC5ncm91cElkKSl9dGhpcy50b3VjaFBhcmFtcy5pdGVtUHJvcHMuZm9yRWFjaChmdW5jdGlvbihkKXt2YXIgdT1lLmJvZHkudXRpbC50b1RpbWUodC5jZW50ZXIueC1vKSxjPWUuYm9keS51dGlsLnRvVGltZShkLmluaXRpYWxYLW8pO2lmKHRoaXMub3B0aW9ucy5ydGwpdmFyIHA9LSh1LWMpO2Vsc2UgdmFyIHA9dS1jO3ZhciBmPXRoaXMuX2Nsb25lSXRlbURhdGEoZC5pdGVtLmRhdGEpO2lmKG51bGw9PWQuaXRlbS5lZGl0YWJsZXx8ZC5pdGVtLmVkaXRhYmxlLnVwZGF0ZVRpbWV8fGQuaXRlbS5lZGl0YWJsZS51cGRhdGVHcm91cHx8ZS5vcHRpb25zLmVkaXRhYmxlLm92ZXJyaWRlSXRlbXMpe2lmKCh0aGlzLm9wdGlvbnMuZWRpdGFibGUub3ZlcnJpZGVJdGVtc3x8bnVsbD09ci5lZGl0YWJsZSkmJnRoaXMub3B0aW9ucy5lZGl0YWJsZS51cGRhdGVUaW1lfHwhdGhpcy5vcHRpb25zLmVkaXRhYmxlLm92ZXJyaWRlSXRlbXMmJm51bGwhPXIuZWRpdGFibGUmJnIuZWRpdGFibGUudXBkYXRlVGltZSlpZihkLmRyYWdMZWZ0KXtpZih0aGlzLm9wdGlvbnMucnRsKXtpZih2b2lkIDAhPWYuZW5kKXt2YXIgbT1sLmNvbnZlcnQoZC5kYXRhLmVuZCwiRGF0ZSIpLHY9bmV3IERhdGUobS52YWx1ZU9mKCkrcCk7Zi5lbmQ9aT9pKHYsbixzKTp2fX1lbHNlIGlmKHZvaWQgMCE9Zi5zdGFydCl7dmFyIGc9bC5jb252ZXJ0KGQuZGF0YS5zdGFydCwiRGF0ZSIpLHk9bmV3IERhdGUoZy52YWx1ZU9mKCkrcCk7Zi5zdGFydD1pP2koeSxuLHMpOnl9fWVsc2UgaWYoZC5kcmFnUmlnaHQpe2lmKHRoaXMub3B0aW9ucy5ydGwpe2lmKHZvaWQgMCE9Zi5zdGFydCl7dmFyIGc9bC5jb252ZXJ0KGQuZGF0YS5zdGFydCwiRGF0ZSIpLHk9bmV3IERhdGUoZy52YWx1ZU9mKCkrcCk7Zi5zdGFydD1pP2koeSxuLHMpOnl9fWVsc2UgaWYodm9pZCAwIT1mLmVuZCl7dmFyIG09bC5jb252ZXJ0KGQuZGF0YS5lbmQsIkRhdGUiKSx2PW5ldyBEYXRlKG0udmFsdWVPZigpK3ApO2YuZW5kPWk/aSh2LG4scyk6dn19ZWxzZSBpZih2b2lkIDAhPWYuc3RhcnQpe3ZhciBnPWwuY29udmVydChkLmRhdGEuc3RhcnQsIkRhdGUiKS52YWx1ZU9mKCkseT1uZXcgRGF0ZShnK3ApO2lmKHZvaWQgMCE9Zi5lbmQpe3ZhciBtPWwuY29udmVydChkLmRhdGEuZW5kLCJEYXRlIiksYj1tLnZhbHVlT2YoKS1nLnZhbHVlT2YoKTtmLnN0YXJ0PWk/aSh5LG4scyk6eSxmLmVuZD1uZXcgRGF0ZShmLnN0YXJ0LnZhbHVlT2YoKStiKX1lbHNlIGYuc3RhcnQ9aT9pKHksbixzKTp5fWlmKGEmJiFkLmRyYWdMZWZ0JiYhZC5kcmFnUmlnaHQmJm51bGwhPWgmJnZvaWQgMCE9Zi5ncm91cCl7dmFyIF89aC1kLmdyb3VwT2Zmc2V0O189TWF0aC5tYXgoMCxfKSxfPU1hdGgubWluKGUuZ3JvdXBJZHMubGVuZ3RoLTEsXyksZi5ncm91cD1lLmdyb3VwSWRzW19dfWY9dGhpcy5fY2xvbmVJdGVtRGF0YShmKSxlLm9wdGlvbnMub25Nb3ZpbmcoZixmdW5jdGlvbih0KXt0JiZkLml0ZW0uc2V0RGF0YSh0aGlzLl9jbG9uZUl0ZW1EYXRhKHQsIkRhdGUiKSl9LmJpbmQodGhpcykpfX0uYmluZCh0aGlzKSksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX2NoYW5nZSIpfX0sbi5wcm90b3R5cGUuX21vdmVUb0dyb3VwPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5ncm91cHNbZV07aWYoaSYmaS5ncm91cElkIT10LmRhdGEuZ3JvdXApe3ZhciBvPXQucGFyZW50O28ucmVtb3ZlKHQpLG8ub3JkZXIoKSx0LmRhdGEuZ3JvdXA9aS5ncm91cElkLGkuYWRkKHQpLGkub3JkZXIoKX19LG4ucHJvdG90eXBlLl9vbkRyYWdFbmQ9ZnVuY3Rpb24odCl7aWYodGhpcy50b3VjaFBhcmFtcy5pdGVtSXNEcmFnZ2luZz0hMSx0aGlzLnRvdWNoUGFyYW1zLml0ZW1Qcm9wcyl7dC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgZT10aGlzLGk9dGhpcy5pdGVtc0RhdGEuZ2V0RGF0YVNldCgpLG89dGhpcy50b3VjaFBhcmFtcy5pdGVtUHJvcHM7dGhpcy50b3VjaFBhcmFtcy5pdGVtUHJvcHM9bnVsbCxvLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG89dC5pdGVtLmlkO2lmKG51bGwhPWUuaXRlbXNEYXRhLmdldChvLGUuaXRlbU9wdGlvbnMpKXt2YXIgbj10aGlzLl9jbG9uZUl0ZW1EYXRhKHQuaXRlbS5kYXRhKTtlLm9wdGlvbnMub25Nb3ZlKG4sZnVuY3Rpb24obil7bj8obltpLl9maWVsZElkXT1vLGkudXBkYXRlKG4pKToodC5pdGVtLnNldERhdGEodC5kYXRhKSxlLmJvZHkuZW1pdHRlci5lbWl0KCJfY2hhbmdlIikpfSl9ZWxzZSBlLm9wdGlvbnMub25BZGQodC5pdGVtLmRhdGEsZnVuY3Rpb24oaSl7ZS5fcmVtb3ZlSXRlbSh0Lml0ZW0pLGkmJmUuaXRlbXNEYXRhLmdldERhdGFTZXQoKS5hZGQoaSksZS5ib2R5LmVtaXR0ZXIuZW1pdCgiX2NoYW5nZSIpfSl9LmJpbmQodGhpcykpfX0sbi5wcm90b3R5cGUuX29uR3JvdXBDbGljaz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmdyb3VwRnJvbVRhcmdldCh0KTtpZihlJiZlLm5lc3RlZEdyb3Vwcyl7dmFyIGk9dGhpcy5ncm91cHNEYXRhO3RoaXMuZ3JvdXBzRGF0YSBpbnN0YW5jZW9mIGMmJihpPXRoaXMuZ3JvdXBzRGF0YS5nZXREYXRhU2V0KCkpLGUuc2hvd05lc3RlZD0hZS5zaG93TmVzdGVkO3ZhciBvPWkuZ2V0KGUubmVzdGVkR3JvdXBzKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09dC52aXNpYmxlJiYodC52aXNpYmxlPSEwKSx0LnZpc2libGU9ISFlLnNob3dOZXN0ZWQsdH0pO2lmKGkudXBkYXRlKG8pLGUuc2hvd05lc3RlZClsLnJlbW92ZUNsYXNzTmFtZShlLmRvbS5sYWJlbCwiY29sbGFwc2VkIiksbC5hZGRDbGFzc05hbWUoZS5kb20ubGFiZWwsImV4cGFuZGVkIik7ZWxzZXtsLnJlbW92ZUNsYXNzTmFtZShlLmRvbS5sYWJlbCwiZXhwYW5kZWQiKTt2YXIgbj10aGlzLm9wdGlvbnMucnRsPyJjb2xsYXBzZWQtcnRsIjoiY29sbGFwc2VkIjtsLmFkZENsYXNzTmFtZShlLmRvbS5sYWJlbCxuKX19fSxuLnByb3RvdHlwZS5fb25Hcm91cERyYWdTdGFydD1mdW5jdGlvbih0KXt0aGlzLm9wdGlvbnMuZ3JvdXBFZGl0YWJsZS5vcmRlciYmKHRoaXMuZ3JvdXBUb3VjaFBhcmFtcy5ncm91cD10aGlzLmdyb3VwRnJvbVRhcmdldCh0KSx0aGlzLmdyb3VwVG91Y2hQYXJhbXMuZ3JvdXAmJih0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuZ3JvdXBUb3VjaFBhcmFtcy5vcmlnaW5hbE9yZGVyPXRoaXMuZ3JvdXBzRGF0YS5nZXRJZHMoe29yZGVyOnRoaXMub3B0aW9ucy5ncm91cE9yZGVyfSkpKX0sbi5wcm90b3R5cGUuX29uR3JvdXBEcmFnPWZ1bmN0aW9uKHQpe2lmKHRoaXMub3B0aW9ucy5ncm91cEVkaXRhYmxlLm9yZGVyJiZ0aGlzLmdyb3VwVG91Y2hQYXJhbXMuZ3JvdXApe3Quc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGU9dGhpcy5ncm91cHNEYXRhO3RoaXMuZ3JvdXBzRGF0YSBpbnN0YW5jZW9mIGMmJihlPXRoaXMuZ3JvdXBzRGF0YS5nZXREYXRhU2V0KCkpO3ZhciBpPXRoaXMuZ3JvdXBGcm9tVGFyZ2V0KHQpO2lmKGkmJmkuaGVpZ2h0IT10aGlzLmdyb3VwVG91Y2hQYXJhbXMuZ3JvdXAuaGVpZ2h0KXt2YXIgbz1pLnRvcDx0aGlzLmdyb3VwVG91Y2hQYXJhbXMuZ3JvdXAudG9wLG49dC5jZW50ZXI/dC5jZW50ZXIueTp0LmNsaWVudFkscz1sLmdldEFic29sdXRlVG9wKGkuZG9tLmZvcmVncm91bmQpLHI9dGhpcy5ncm91cFRvdWNoUGFyYW1zLmdyb3VwLmhlaWdodDtpZihvKXtpZihzK3I8bilyZXR1cm59ZWxzZXtpZihzK2kuaGVpZ2h0LXI+bilyZXR1cm59fWlmKGkmJmkhPXRoaXMuZ3JvdXBUb3VjaFBhcmFtcy5ncm91cCl7dmFyIGE9ZS5nZXQoaS5ncm91cElkKSxoPWUuZ2V0KHRoaXMuZ3JvdXBUb3VjaFBhcmFtcy5ncm91cC5ncm91cElkKTtoJiZhJiYodGhpcy5vcHRpb25zLmdyb3VwT3JkZXJTd2FwKGgsYSxlKSxlLnVwZGF0ZShoKSxlLnVwZGF0ZShhKSk7dmFyIGQ9ZS5nZXRJZHMoe29yZGVyOnRoaXMub3B0aW9ucy5ncm91cE9yZGVyfSk7aWYoIWwuZXF1YWxBcnJheShkLHRoaXMuZ3JvdXBUb3VjaFBhcmFtcy5vcmlnaW5hbE9yZGVyKSlmb3IodmFyIHU9dGhpcy5ncm91cFRvdWNoUGFyYW1zLm9yaWdpbmFsT3JkZXIscD10aGlzLmdyb3VwVG91Y2hQYXJhbXMuZ3JvdXAuZ3JvdXBJZCxmPU1hdGgubWluKHUubGVuZ3RoLGQubGVuZ3RoKSxtPTAsdj0wLGc9MDttPGY7KXtmb3IoO20rdjxmJiZtK2c8ZiYmZFttK3ZdPT11W20rZ107KW0rKztpZihtK3Y+PWYpYnJlYWs7aWYoZFttK3ZdIT1wKWlmKHVbbStnXSE9cCl7dmFyIHk9ZC5pbmRleE9mKHVbbStnXSksYj1lLmdldChkW20rdl0pLF89ZS5nZXQodVttK2ddKTt0aGlzLm9wdGlvbnMuZ3JvdXBPcmRlclN3YXAoYixfLGUpLGUudXBkYXRlKGIpLGUudXBkYXRlKF8pO3ZhciB3PWRbbSt2XTtkW20rdl09dVttK2ddLGRbeV09dyxtKyt9ZWxzZSBnPTE7ZWxzZSB2PTF9fX19LG4ucHJvdG90eXBlLl9vbkdyb3VwRHJhZ0VuZD1mdW5jdGlvbih0KXtpZih0aGlzLm9wdGlvbnMuZ3JvdXBFZGl0YWJsZS5vcmRlciYmdGhpcy5ncm91cFRvdWNoUGFyYW1zLmdyb3VwKXt0LnN0b3BQcm9wYWdhdGlvbigpO3ZhciBlPXRoaXMsaT1lLmdyb3VwVG91Y2hQYXJhbXMuZ3JvdXAuZ3JvdXBJZCxvPWUuZ3JvdXBzRGF0YS5nZXREYXRhU2V0KCksbj1sLmV4dGVuZCh7fSxvLmdldChpKSk7ZS5vcHRpb25zLm9uTW92ZUdyb3VwKG4sZnVuY3Rpb24odCl7aWYodCl0W28uX2ZpZWxkSWRdPWksby51cGRhdGUodCk7ZWxzZXt2YXIgbj1vLmdldElkcyh7b3JkZXI6ZS5vcHRpb25zLmdyb3VwT3JkZXJ9KTtpZighbC5lcXVhbEFycmF5KG4sZS5ncm91cFRvdWNoUGFyYW1zLm9yaWdpbmFsT3JkZXIpKWZvcih2YXIgcz1lLmdyb3VwVG91Y2hQYXJhbXMub3JpZ2luYWxPcmRlcixyPU1hdGgubWluKHMubGVuZ3RoLG4ubGVuZ3RoKSxhPTA7YTxyOyl7Zm9yKDthPHImJm5bYV09PXNbYV07KWErKztpZihhPj1yKWJyZWFrO3ZhciBoPW4uaW5kZXhPZihzW2FdKSxkPW8uZ2V0KG5bYV0pLHU9by5nZXQoc1thXSk7ZS5vcHRpb25zLmdyb3VwT3JkZXJTd2FwKGQsdSxvKSxvLnVwZGF0ZShkKSxvLnVwZGF0ZSh1KTt2YXIgYz1uW2FdO25bYV09c1thXSxuW2hdPWMsYSsrfX19KSxlLmJvZHkuZW1pdHRlci5lbWl0KCJncm91cERyYWdnZWQiLHtncm91cElkOml9KX19LG4ucHJvdG90eXBlLl9vblNlbGVjdEl0ZW09ZnVuY3Rpb24odCl7aWYodGhpcy5vcHRpb25zLnNlbGVjdGFibGUpe3ZhciBlPXQuc3JjRXZlbnQmJih0LnNyY0V2ZW50LmN0cmxLZXl8fHQuc3JjRXZlbnQubWV0YUtleSksaT10LnNyY0V2ZW50JiZ0LnNyY0V2ZW50LnNoaWZ0S2V5O2lmKGV8fGkpcmV0dXJuIHZvaWQgdGhpcy5fb25NdWx0aVNlbGVjdEl0ZW0odCk7dmFyIG89dGhpcy5nZXRTZWxlY3Rpb24oKSxuPXRoaXMuaXRlbUZyb21UYXJnZXQodCkscz1uP1tuLmlkXTpbXTt0aGlzLnNldFNlbGVjdGlvbihzKTt2YXIgcj10aGlzLmdldFNlbGVjdGlvbigpOyhyLmxlbmd0aD4wfHxvLmxlbmd0aD4wKSYmdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgic2VsZWN0Iix7aXRlbXM6cixldmVudDp0fSl9fSxuLnByb3RvdHlwZS5fb25Nb3VzZU92ZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pdGVtRnJvbVRhcmdldCh0KTtpZihlKXtpZihlIT09dGhpcy5pdGVtRnJvbVJlbGF0ZWRUYXJnZXQodCkpe3ZhciBpPWUuZ2V0VGl0bGUoKTtpZih0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBzJiZpKXtudWxsPT10aGlzLnBvcHVwJiYodGhpcy5wb3B1cD1uZXcgdyh0aGlzLmJvZHkuZG9tLnJvb3QsdGhpcy5vcHRpb25zLnRvb2x0aXAub3ZlcmZsb3dNZXRob2R8fCJmbGlwIikpLHRoaXMucG9wdXAuc2V0VGV4dChpKTt2YXIgbz10aGlzLmJvZHkuZG9tLmNlbnRlckNvbnRhaW5lcjt0aGlzLnBvcHVwLnNldFBvc2l0aW9uKHQuY2xpZW50WC1sLmdldEFic29sdXRlTGVmdChvKStvLm9mZnNldExlZnQsdC5jbGllbnRZLWwuZ2V0QWJzb2x1dGVUb3Aobykrby5vZmZzZXRUb3ApLHRoaXMucG9wdXAuc2hvdygpfWVsc2UgbnVsbCE9dGhpcy5wb3B1cCYmdGhpcy5wb3B1cC5oaWRlKCk7dGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiaXRlbW92ZXIiLHtpdGVtOmUuaWQsZXZlbnQ6dH0pfX19LG4ucHJvdG90eXBlLl9vbk1vdXNlT3V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaXRlbUZyb21UYXJnZXQodCk7aWYoZSl7ZSE9PXRoaXMuaXRlbUZyb21SZWxhdGVkVGFyZ2V0KHQpJiYobnVsbCE9dGhpcy5wb3B1cCYmdGhpcy5wb3B1cC5oaWRlKCksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiaXRlbW91dCIse2l0ZW06ZS5pZCxldmVudDp0fSkpfX0sbi5wcm90b3R5cGUuX29uTW91c2VNb3ZlPWZ1bmN0aW9uKHQpe2lmKHRoaXMuaXRlbUZyb21UYXJnZXQodCkmJnRoaXMub3B0aW9ucy5zaG93VG9vbHRpcHMmJnRoaXMub3B0aW9ucy50b29sdGlwLmZvbGxvd01vdXNlJiZ0aGlzLnBvcHVwJiYhdGhpcy5wb3B1cC5oaWRkZW4pe3ZhciBlPXRoaXMuYm9keS5kb20uY2VudGVyQ29udGFpbmVyO3RoaXMucG9wdXAuc2V0UG9zaXRpb24odC5jbGllbnRYLWwuZ2V0QWJzb2x1dGVMZWZ0KGUpK2Uub2Zmc2V0TGVmdCx0LmNsaWVudFktbC5nZXRBYnNvbHV0ZVRvcChlKStlLm9mZnNldFRvcCksdGhpcy5wb3B1cC5zaG93KCl9fSxuLnByb3RvdHlwZS5fb25Nb3VzZVdoZWVsPWZ1bmN0aW9uKHQpe3RoaXMudG91Y2hQYXJhbXMuaXRlbUlzRHJhZ2dpbmcmJnRoaXMuX29uRHJhZ0VuZCh0KX0sbi5wcm90b3R5cGUuX29uVXBkYXRlSXRlbT1mdW5jdGlvbih0KXtpZih0aGlzLm9wdGlvbnMuc2VsZWN0YWJsZSYmdGhpcy5vcHRpb25zLmVkaXRhYmxlLmFkZCl7dmFyIGU9dGhpcztpZih0KXt2YXIgaT1lLml0ZW1zRGF0YS5nZXQodC5pZCk7dGhpcy5vcHRpb25zLm9uVXBkYXRlKGksZnVuY3Rpb24odCl7dCYmZS5pdGVtc0RhdGEuZ2V0RGF0YVNldCgpLnVwZGF0ZSh0KX0pfX19LG4ucHJvdG90eXBlLl9vbkFkZEl0ZW09ZnVuY3Rpb24odCl7aWYodGhpcy5vcHRpb25zLnNlbGVjdGFibGUmJnRoaXMub3B0aW9ucy5lZGl0YWJsZS5hZGQpe3ZhciBlPXRoaXMsaT10aGlzLm9wdGlvbnMuc25hcHx8bnVsbDtpZighdGhpcy5pdGVtRnJvbVRhcmdldCh0KSl7aWYodGhpcy5vcHRpb25zLnJ0bCl2YXIgbz1sLmdldEFic29sdXRlUmlnaHQodGhpcy5kb20uZnJhbWUpLG49by10LmNlbnRlci54O2Vsc2UgdmFyIG89bC5nZXRBYnNvbHV0ZUxlZnQodGhpcy5kb20uZnJhbWUpLG49dC5jZW50ZXIueC1vO3ZhciBzLHI9dGhpcy5ib2R5LnV0aWwudG9UaW1lKG4pLGE9dGhpcy5ib2R5LnV0aWwuZ2V0U2NhbGUoKSxoPXRoaXMuYm9keS51dGlsLmdldFN0ZXAoKTtpZigiZHJvcCI9PXQudHlwZSl7aWYocz1KU09OLnBhcnNlKHQuZGF0YVRyYW5zZmVyLmdldERhdGEoInRleHQiKSkscy5jb250ZW50PXMuY29udGVudD9zLmNvbnRlbnQ6Im5ldyBpdGVtIixzLnN0YXJ0PXMuc3RhcnQ/cy5zdGFydDppP2kocixhLGgpOnIscy50eXBlPXMudHlwZXx8ImJveCIsc1t0aGlzLml0ZW1zRGF0YS5fZmllbGRJZF09cy5pZHx8bC5yYW5kb21VVUlEKCksInJhbmdlIj09cy50eXBlJiYhcy5lbmQpe3ZhciBkPXRoaXMuYm9keS51dGlsLnRvVGltZShuK3RoaXMucHJvcHMud2lkdGgvNSk7cy5lbmQ9aT9pKGQsYSxoKTpkfX1lbHNlIGlmKHM9e3N0YXJ0Omk/aShyLGEsaCk6cixjb250ZW50OiJuZXcgaXRlbSJ9LHNbdGhpcy5pdGVtc0RhdGEuX2ZpZWxkSWRdPWwucmFuZG9tVVVJRCgpLCJyYW5nZSI9PT10aGlzLm9wdGlvbnMudHlwZSl7dmFyIGQ9dGhpcy5ib2R5LnV0aWwudG9UaW1lKG4rdGhpcy5wcm9wcy53aWR0aC81KTtzLmVuZD1pP2koZCxhLGgpOmR9dmFyIHU9dGhpcy5ncm91cEZyb21UYXJnZXQodCk7dSYmKHMuZ3JvdXA9dS5ncm91cElkKSxzPXRoaXMuX2Nsb25lSXRlbURhdGEocyksdGhpcy5vcHRpb25zLm9uQWRkKHMsZnVuY3Rpb24oaSl7aSYmKGUuaXRlbXNEYXRhLmdldERhdGFTZXQoKS5hZGQoaSksImRyb3AiPT10LnR5cGUmJmUuc2V0U2VsZWN0aW9uKFtpLmlkXSkpfSl9fX0sbi5wcm90b3R5cGUuX29uTXVsdGlTZWxlY3RJdGVtPWZ1bmN0aW9uKHQpe2lmKHRoaXMub3B0aW9ucy5zZWxlY3RhYmxlKXt2YXIgZT10aGlzLml0ZW1Gcm9tVGFyZ2V0KHQpO2lmKGUpe3ZhciBpPXRoaXMub3B0aW9ucy5tdWx0aXNlbGVjdD90aGlzLmdldFNlbGVjdGlvbigpOltdO2lmKCh0LnNyY0V2ZW50JiZ0LnNyY0V2ZW50LnNoaWZ0S2V5fHwhMSkmJnRoaXMub3B0aW9ucy5tdWx0aXNlbGVjdCl7dmFyIG89dGhpcy5pdGVtc0RhdGEuZ2V0KGUuaWQpLmdyb3VwLHM9dm9pZCAwO3RoaXMub3B0aW9ucy5tdWx0aXNlbGVjdFBlckdyb3VwJiZpLmxlbmd0aD4wJiYocz10aGlzLml0ZW1zRGF0YS5nZXQoaVswXSkuZ3JvdXApLHRoaXMub3B0aW9ucy5tdWx0aXNlbGVjdFBlckdyb3VwJiZ2b2lkIDAhPXMmJnMhPW98fGkucHVzaChlLmlkKTt2YXIgcj1uLl9nZXRJdGVtUmFuZ2UodGhpcy5pdGVtc0RhdGEuZ2V0KGksdGhpcy5pdGVtT3B0aW9ucykpO2lmKCF0aGlzLm9wdGlvbnMubXVsdGlzZWxlY3RQZXJHcm91cHx8cz09byl7aT1bXTtmb3IodmFyIGEgaW4gdGhpcy5pdGVtcylpZih0aGlzLml0ZW1zLmhhc093blByb3BlcnR5KGEpKXt2YXIgaD10aGlzLml0ZW1zW2FdLGQ9aC5kYXRhLnN0YXJ0LGw9dm9pZCAwIT09aC5kYXRhLmVuZD9oLmRhdGEuZW5kOmQ7IShkPj1yLm1pbiYmbDw9ci5tYXgpfHx0aGlzLm9wdGlvbnMubXVsdGlzZWxlY3RQZXJHcm91cCYmcyE9dGhpcy5pdGVtc0RhdGEuZ2V0KGguaWQpLmdyb3VwfHxoIGluc3RhbmNlb2YgX3x8aS5wdXNoKGguaWQpfX19ZWxzZXt2YXIgdT1pLmluZGV4T2YoZS5pZCk7LTE9PXU/aS5wdXNoKGUuaWQpOmkuc3BsaWNlKHUsMSl9dGhpcy5zZXRTZWxlY3Rpb24oaSksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgic2VsZWN0Iix7aXRlbXM6dGhpcy5nZXRTZWxlY3Rpb24oKSxldmVudDp0fSl9fX0sbi5fZ2V0SXRlbVJhbmdlPWZ1bmN0aW9uKHQpe3ZhciBlPW51bGwsaT1udWxsO3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24odCl7KG51bGw9PWl8fHQuc3RhcnQ8aSkmJihpPXQuc3RhcnQpLHZvaWQgMCE9dC5lbmQ/KG51bGw9PWV8fHQuZW5kPmUpJiYoZT10LmVuZCk6KG51bGw9PWV8fHQuc3RhcnQ+ZSkmJihlPXQuc3RhcnQpfSkse21pbjppLG1heDplfX0sbi5wcm90b3R5cGUuaXRlbUZyb21FbGVtZW50PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10O2U7KXtpZihlLmhhc093blByb3BlcnR5KCJ0aW1lbGluZS1pdGVtIikpcmV0dXJuIGVbInRpbWVsaW5lLWl0ZW0iXTtlPWUucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH0sbi5wcm90b3R5cGUuaXRlbUZyb21UYXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaXRlbUZyb21FbGVtZW50KHQudGFyZ2V0KX0sbi5wcm90b3R5cGUuaXRlbUZyb21SZWxhdGVkVGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLml0ZW1Gcm9tRWxlbWVudCh0LnJlbGF0ZWRUYXJnZXQpfSxuLnByb3RvdHlwZS5ncm91cEZyb21UYXJnZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5jZW50ZXI/dC5jZW50ZXIueTp0LmNsaWVudFksaT10aGlzLmdyb3VwSWRzO2kubGVuZ3RoPD0wJiZ0aGlzLmdyb3Vwc0RhdGEmJihpPXRoaXMuZ3JvdXBzRGF0YS5nZXRJZHMoe29yZGVyOnRoaXMub3B0aW9ucy5ncm91cE9yZGVyfSkpO2Zvcih2YXIgbz0wO288aS5sZW5ndGg7bysrKXt2YXIgbj1pW29dLHM9dGhpcy5ncm91cHNbbl0scj1zLmRvbS5mb3JlZ3JvdW5kLGE9bC5nZXRBYnNvbHV0ZVRvcChyKTtpZihlPmEmJmU8YStyLm9mZnNldEhlaWdodClyZXR1cm4gcztpZigidG9wIj09PXRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5pdGVtKXtpZihvPT09dGhpcy5ncm91cElkcy5sZW5ndGgtMSYmZT5hKXJldHVybiBzfWVsc2UgaWYoMD09PW8mJmU8YStyLm9mZnNldClyZXR1cm4gc31yZXR1cm4gbnVsbH0sbi5pdGVtU2V0RnJvbVRhcmdldD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC50YXJnZXQ7ZTspe2lmKGUuaGFzT3duUHJvcGVydHkoInRpbWVsaW5lLWl0ZW1zZXQiKSlyZXR1cm4gZVsidGltZWxpbmUtaXRlbXNldCJdO2U9ZS5wYXJlbnROb2RlfXJldHVybiBudWxsfSxuLnByb3RvdHlwZS5fY2xvbmVJdGVtRGF0YT1mdW5jdGlvbih0LGUpe3ZhciBpPWwuZXh0ZW5kKHt9LHQpO3JldHVybiBlfHwoZT10aGlzLml0ZW1zRGF0YS5nZXREYXRhU2V0KCkuX29wdGlvbnMudHlwZSksdm9pZCAwIT1pLnN0YXJ0JiYoaS5zdGFydD1sLmNvbnZlcnQoaS5zdGFydCxlJiZlLnN0YXJ0fHwiRGF0ZSIpKSx2b2lkIDAhPWkuZW5kJiYoaS5lbmQ9bC5jb252ZXJ0KGkuZW5kLGUmJmUuZW5kfHwiRGF0ZSIpKSxpfSx0LmV4cG9ydHM9bn0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlLGkscyl7dGhpcy5tb21lbnQ9bix0aGlzLmN1cnJlbnQ9dGhpcy5tb21lbnQoKSx0aGlzLl9zdGFydD10aGlzLm1vbWVudCgpLHRoaXMuX2VuZD10aGlzLm1vbWVudCgpLHRoaXMuYXV0b1NjYWxlPSEwLHRoaXMuc2NhbGU9ImRheSIsdGhpcy5zdGVwPTEsdGhpcy5zZXRSYW5nZSh0LGUsaSksdGhpcy5zd2l0Y2hlZERheT0hMSx0aGlzLnN3aXRjaGVkTW9udGg9ITEsdGhpcy5zd2l0Y2hlZFllYXI9ITEsQXJyYXkuaXNBcnJheShzKT90aGlzLmhpZGRlbkRhdGVzPXM6dGhpcy5oaWRkZW5EYXRlcz12b2lkIDAhPXM/W3NdOltdLHRoaXMuZm9ybWF0PW8uRk9STUFUfXZhciBuPWkoODIpLHM9aSgxMjIpLHI9aSgxKTtvLkZPUk1BVD17bWlub3JMYWJlbHM6e21pbGxpc2Vjb25kOiJTU1MiLHNlY29uZDoicyIsbWludXRlOiJISDptbSIsaG91cjoiSEg6bW0iLHdlZWtkYXk6ImRkZCBEIixkYXk6IkQiLHdlZWs6InciLG1vbnRoOiJNTU0iLHllYXI6IllZWVkifSxtYWpvckxhYmVsczp7bWlsbGlzZWNvbmQ6IkhIOm1tOnNzIixzZWNvbmQ6IkQgTU1NTSBISDptbSIsbWludXRlOiJkZGQgRCBNTU1NIixob3VyOiJkZGQgRCBNTU1NIix3ZWVrZGF5OiJNTU1NIFlZWVkiLGRheToiTU1NTSBZWVlZIix3ZWVrOiJNTU1NIFlZWVkiLG1vbnRoOiJZWVlZIix5ZWFyOiIifX0sby5wcm90b3R5cGUuc2V0TW9tZW50PWZ1bmN0aW9uKHQpe3RoaXMubW9tZW50PXQsdGhpcy5jdXJyZW50PXRoaXMubW9tZW50KHRoaXMuY3VycmVudC52YWx1ZU9mKCkpLHRoaXMuX3N0YXJ0PXRoaXMubW9tZW50KHRoaXMuX3N0YXJ0LnZhbHVlT2YoKSksdGhpcy5fZW5kPXRoaXMubW9tZW50KHRoaXMuX2VuZC52YWx1ZU9mKCkpfSxvLnByb3RvdHlwZS5zZXRGb3JtYXQ9ZnVuY3Rpb24odCl7dmFyIGU9ci5kZWVwRXh0ZW5kKHt9LG8uRk9STUFUKTt0aGlzLmZvcm1hdD1yLmRlZXBFeHRlbmQoZSx0KX0sby5wcm90b3R5cGUuc2V0UmFuZ2U9ZnVuY3Rpb24odCxlLGkpe2lmKCEodCBpbnN0YW5jZW9mIERhdGUmJmUgaW5zdGFuY2VvZiBEYXRlKSl0aHJvdyJObyBsZWdhbCBzdGFydCBvciBlbmQgZGF0ZSBpbiBtZXRob2Qgc2V0UmFuZ2UiO3RoaXMuX3N0YXJ0PXZvaWQgMCE9dD90aGlzLm1vbWVudCh0LnZhbHVlT2YoKSk6bmV3IERhdGUsdGhpcy5fZW5kPXZvaWQgMCE9ZT90aGlzLm1vbWVudChlLnZhbHVlT2YoKSk6bmV3IERhdGUsdGhpcy5hdXRvU2NhbGUmJnRoaXMuc2V0TWluaW11bVN0ZXAoaSl9LG8ucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50PXRoaXMuX3N0YXJ0LmNsb25lKCksdGhpcy5yb3VuZFRvTWlub3IoKX0sby5wcm90b3R5cGUucm91bmRUb01pbm9yPWZ1bmN0aW9uKCl7c3dpdGNoKCJ3ZWVrIj09dGhpcy5zY2FsZSYmdGhpcy5jdXJyZW50LndlZWtkYXkoMCksdGhpcy5zY2FsZSl7Y2FzZSJ5ZWFyIjp0aGlzLmN1cnJlbnQueWVhcih0aGlzLnN0ZXAqTWF0aC5mbG9vcih0aGlzLmN1cnJlbnQueWVhcigpL3RoaXMuc3RlcCkpLHRoaXMuY3VycmVudC5tb250aCgwKTtjYXNlIm1vbnRoIjp0aGlzLmN1cnJlbnQuZGF0ZSgxKTtjYXNlIndlZWsiOmNhc2UiZGF5IjpjYXNlIndlZWtkYXkiOnRoaXMuY3VycmVudC5ob3VycygwKTtjYXNlImhvdXIiOnRoaXMuY3VycmVudC5taW51dGVzKDApO2Nhc2UibWludXRlIjp0aGlzLmN1cnJlbnQuc2Vjb25kcygwKTtjYXNlInNlY29uZCI6dGhpcy5jdXJyZW50Lm1pbGxpc2Vjb25kcygwKX1pZigxIT10aGlzLnN0ZXApc3dpdGNoKHRoaXMuc2NhbGUpe2Nhc2UibWlsbGlzZWNvbmQiOnRoaXMuY3VycmVudC5zdWJ0cmFjdCh0aGlzLmN1cnJlbnQubWlsbGlzZWNvbmRzKCkldGhpcy5zdGVwLCJtaWxsaXNlY29uZHMiKTticmVhaztjYXNlInNlY29uZCI6dGhpcy5jdXJyZW50LnN1YnRyYWN0KHRoaXMuY3VycmVudC5zZWNvbmRzKCkldGhpcy5zdGVwLCJzZWNvbmRzIik7YnJlYWs7Y2FzZSJtaW51dGUiOnRoaXMuY3VycmVudC5zdWJ0cmFjdCh0aGlzLmN1cnJlbnQubWludXRlcygpJXRoaXMuc3RlcCwibWludXRlcyIpO2JyZWFrO2Nhc2UiaG91ciI6dGhpcy5jdXJyZW50LnN1YnRyYWN0KHRoaXMuY3VycmVudC5ob3VycygpJXRoaXMuc3RlcCwiaG91cnMiKTticmVhaztjYXNlIndlZWtkYXkiOmNhc2UiZGF5Ijp0aGlzLmN1cnJlbnQuc3VidHJhY3QoKHRoaXMuY3VycmVudC5kYXRlKCktMSkldGhpcy5zdGVwLCJkYXkiKTticmVhaztjYXNlIndlZWsiOnRoaXMuY3VycmVudC5zdWJ0cmFjdCh0aGlzLmN1cnJlbnQud2VlaygpJXRoaXMuc3RlcCwid2VlayIpO2JyZWFrO2Nhc2UibW9udGgiOnRoaXMuY3VycmVudC5zdWJ0cmFjdCh0aGlzLmN1cnJlbnQubW9udGgoKSV0aGlzLnN0ZXAsIm1vbnRoIik7YnJlYWs7Y2FzZSJ5ZWFyIjp0aGlzLmN1cnJlbnQuc3VidHJhY3QodGhpcy5jdXJyZW50LnllYXIoKSV0aGlzLnN0ZXAsInllYXIiKX19LG8ucHJvdG90eXBlLmhhc05leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50LnZhbHVlT2YoKTw9dGhpcy5fZW5kLnZhbHVlT2YoKX0sby5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuY3VycmVudC52YWx1ZU9mKCk7c3dpdGNoKHRoaXMuc2NhbGUpe2Nhc2UibWlsbGlzZWNvbmQiOnRoaXMuY3VycmVudC5hZGQodGhpcy5zdGVwLCJtaWxsaXNlY29uZCIpO2JyZWFrO2Nhc2Uic2Vjb25kIjp0aGlzLmN1cnJlbnQuYWRkKHRoaXMuc3RlcCwic2Vjb25kIik7YnJlYWs7Y2FzZSJtaW51dGUiOnRoaXMuY3VycmVudC5hZGQodGhpcy5zdGVwLCJtaW51dGUiKTticmVhaztjYXNlImhvdXIiOnRoaXMuY3VycmVudC5hZGQodGhpcy5zdGVwLCJob3VyIiksdGhpcy5jdXJyZW50Lm1vbnRoKCk8Nj90aGlzLmN1cnJlbnQuc3VidHJhY3QodGhpcy5jdXJyZW50LmhvdXJzKCkldGhpcy5zdGVwLCJob3VyIik6dGhpcy5jdXJyZW50LmhvdXJzKCkldGhpcy5zdGVwIT0wJiZ0aGlzLmN1cnJlbnQuYWRkKHRoaXMuc3RlcC10aGlzLmN1cnJlbnQuaG91cnMoKSV0aGlzLnN0ZXAsImhvdXIiKTticmVhaztjYXNlIndlZWtkYXkiOmNhc2UiZGF5Ijp0aGlzLmN1cnJlbnQuYWRkKHRoaXMuc3RlcCwiZGF5Iik7YnJlYWs7Y2FzZSJ3ZWVrIjppZigwIT09dGhpcy5jdXJyZW50LndlZWtkYXkoKSl0aGlzLmN1cnJlbnQud2Vla2RheSgwKSx0aGlzLmN1cnJlbnQuYWRkKHRoaXMuc3RlcCwid2VlayIpO2Vsc2V7dmFyIGU9dGhpcy5jdXJyZW50LmNsb25lKCk7ZS5hZGQoMSwid2VlayIpLGUuaXNTYW1lKHRoaXMuY3VycmVudCwibW9udGgiKT90aGlzLmN1cnJlbnQuYWRkKHRoaXMuc3RlcCwid2VlayIpOih0aGlzLmN1cnJlbnQuYWRkKHRoaXMuc3RlcCwid2VlayIpLHRoaXMuY3VycmVudC5kYXRlKDEpKX1icmVhaztjYXNlIm1vbnRoIjp0aGlzLmN1cnJlbnQuYWRkKHRoaXMuc3RlcCwibW9udGgiKTticmVhaztjYXNlInllYXIiOnRoaXMuY3VycmVudC5hZGQodGhpcy5zdGVwLCJ5ZWFyIil9aWYoMSE9dGhpcy5zdGVwKXN3aXRjaCh0aGlzLnNjYWxlKXtjYXNlIm1pbGxpc2Vjb25kIjp0aGlzLmN1cnJlbnQubWlsbGlzZWNvbmRzKCk+MCYmdGhpcy5jdXJyZW50Lm1pbGxpc2Vjb25kcygpPHRoaXMuc3RlcCYmdGhpcy5jdXJyZW50Lm1pbGxpc2Vjb25kcygwKTticmVhaztjYXNlInNlY29uZCI6dGhpcy5jdXJyZW50LnNlY29uZHMoKT4wJiZ0aGlzLmN1cnJlbnQuc2Vjb25kcygpPHRoaXMuc3RlcCYmdGhpcy5jdXJyZW50LnNlY29uZHMoMCk7YnJlYWs7Y2FzZSJtaW51dGUiOnRoaXMuY3VycmVudC5taW51dGVzKCk+MCYmdGhpcy5jdXJyZW50Lm1pbnV0ZXMoKTx0aGlzLnN0ZXAmJnRoaXMuY3VycmVudC5taW51dGVzKDApO2JyZWFrO2Nhc2UiaG91ciI6dGhpcy5jdXJyZW50LmhvdXJzKCk+MCYmdGhpcy5jdXJyZW50LmhvdXJzKCk8dGhpcy5zdGVwJiZ0aGlzLmN1cnJlbnQuaG91cnMoMCk7YnJlYWs7Y2FzZSJ3ZWVrZGF5IjpjYXNlImRheSI6dGhpcy5jdXJyZW50LmRhdGUoKTx0aGlzLnN0ZXArMSYmdGhpcy5jdXJyZW50LmRhdGUoMSk7YnJlYWs7Y2FzZSJ3ZWVrIjp0aGlzLmN1cnJlbnQud2VlaygpPHRoaXMuc3RlcCYmdGhpcy5jdXJyZW50LndlZWsoMSk7YnJlYWs7Y2FzZSJtb250aCI6dGhpcy5jdXJyZW50Lm1vbnRoKCk8dGhpcy5zdGVwJiZ0aGlzLmN1cnJlbnQubW9udGgoMCl9dGhpcy5jdXJyZW50LnZhbHVlT2YoKT09dCYmKHRoaXMuY3VycmVudD10aGlzLl9lbmQuY2xvbmUoKSksdGhpcy5zd2l0Y2hlZERheT0hMSx0aGlzLnN3aXRjaGVkTW9udGg9ITEsdGhpcy5zd2l0Y2hlZFllYXI9ITEscy5zdGVwT3ZlckhpZGRlbkRhdGVzKHRoaXMubW9tZW50LHRoaXMsdCl9LG8ucHJvdG90eXBlLmdldEN1cnJlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50fSxvLnByb3RvdHlwZS5zZXRTY2FsZT1mdW5jdGlvbih0KXt0JiYic3RyaW5nIj09dHlwZW9mIHQuc2NhbGUmJih0aGlzLnNjYWxlPXQuc2NhbGUsdGhpcy5zdGVwPXQuc3RlcD4wP3Quc3RlcDoxLHRoaXMuYXV0b1NjYWxlPSExKX0sby5wcm90b3R5cGUuc2V0QXV0b1NjYWxlPWZ1bmN0aW9uKHQpe3RoaXMuYXV0b1NjYWxlPXR9LG8ucHJvdG90eXBlLnNldE1pbmltdW1TdGVwPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9dCl7MzExMDRlOT50JiYodGhpcy5zY2FsZT0ieWVhciIsdGhpcy5zdGVwPTFlMyksMTU1NTJlOT50JiYodGhpcy5zY2FsZT0ieWVhciIsdGhpcy5zdGVwPTUwMCksMzExMDRlOD50JiYodGhpcy5zY2FsZT0ieWVhciIsdGhpcy5zdGVwPTEwMCksMTU1NTJlOD50JiYodGhpcy5zY2FsZT0ieWVhciIsdGhpcy5zdGVwPTUwKSwzMTEwNGU3PnQmJih0aGlzLnNjYWxlPSJ5ZWFyIix0aGlzLnN0ZXA9MTApLDE1NTUyZTc+dCYmKHRoaXMuc2NhbGU9InllYXIiLHRoaXMuc3RlcD01KSwzMTEwNGU2PnQmJih0aGlzLnNjYWxlPSJ5ZWFyIix0aGlzLnN0ZXA9MSksNzc3NmU2PnQmJih0aGlzLnNjYWxlPSJtb250aCIsdGhpcy5zdGVwPTMpLDI1OTJlNj50JiYodGhpcy5zY2FsZT0ibW9udGgiLHRoaXMuc3RlcD0xKSw0MzJlNj50JiYodGhpcy5zY2FsZT0iZGF5Iix0aGlzLnN0ZXA9NSksMTcyOGU1PnQmJih0aGlzLnNjYWxlPSJkYXkiLHRoaXMuc3RlcD0yKSw4NjRlNT50JiYodGhpcy5zY2FsZT0iZGF5Iix0aGlzLnN0ZXA9MSksNDMyZTU+dCYmKHRoaXMuc2NhbGU9IndlZWtkYXkiLHRoaXMuc3RlcD0xKSwxNDRlNT50JiYodGhpcy5zY2FsZT0iaG91ciIsdGhpcy5zdGVwPTQpLDM2ZTU+dCYmKHRoaXMuc2NhbGU9ImhvdXIiLHRoaXMuc3RlcD0xKSw5ZTU+dCYmKHRoaXMuc2NhbGU9Im1pbnV0ZSIsdGhpcy5zdGVwPTE1KSw2ZTU+dCYmKHRoaXMuc2NhbGU9Im1pbnV0ZSIsdGhpcy5zdGVwPTEwKSwzZTU+dCYmKHRoaXMuc2NhbGU9Im1pbnV0ZSIsdGhpcy5zdGVwPTUpLDZlND50JiYodGhpcy5zY2FsZT0ibWludXRlIix0aGlzLnN0ZXA9MSksMTVlMz50JiYodGhpcy5zY2FsZT0ic2Vjb25kIix0aGlzLnN0ZXA9MTUpLDFlND50JiYodGhpcy5zY2FsZT0ic2Vjb25kIix0aGlzLnN0ZXA9MTApLDVlMz50JiYodGhpcy5zY2FsZT0ic2Vjb25kIix0aGlzLnN0ZXA9NSksMWUzPnQmJih0aGlzLnNjYWxlPSJzZWNvbmQiLHRoaXMuc3RlcD0xKSwyMDA+dCYmKHRoaXMuc2NhbGU9Im1pbGxpc2Vjb25kIix0aGlzLnN0ZXA9MjAwKSwxMDA+dCYmKHRoaXMuc2NhbGU9Im1pbGxpc2Vjb25kIix0aGlzLnN0ZXA9MTAwKSw1MD50JiYodGhpcy5zY2FsZT0ibWlsbGlzZWNvbmQiLHRoaXMuc3RlcD01MCksMTA+dCYmKHRoaXMuc2NhbGU9Im1pbGxpc2Vjb25kIix0aGlzLnN0ZXA9MTApLDU+dCYmKHRoaXMuc2NhbGU9Im1pbGxpc2Vjb25kIix0aGlzLnN0ZXA9NSksMT50JiYodGhpcy5zY2FsZT0ibWlsbGlzZWNvbmQiLHRoaXMuc3RlcD0xKX19LG8uc25hcD1mdW5jdGlvbih0LGUsaSl7dmFyIG89bih0KTtpZigieWVhciI9PWUpe3ZhciBzPW8ueWVhcigpK01hdGgucm91bmQoby5tb250aCgpLzEyKTtvLnllYXIoTWF0aC5yb3VuZChzL2kpKmkpLG8ubW9udGgoMCksby5kYXRlKDApLG8uaG91cnMoMCksby5taW51dGVzKDApLG8uc2Vjb25kcygwKSxvLm1pbGxpc2Vjb25kcygwKX1lbHNlIGlmKCJtb250aCI9PWUpby5kYXRlKCk+MTU/KG8uZGF0ZSgxKSxvLmFkZCgxLCJtb250aCIpKTpvLmRhdGUoMSksby5ob3VycygwKSxvLm1pbnV0ZXMoMCksby5zZWNvbmRzKDApLG8ubWlsbGlzZWNvbmRzKDApO2Vsc2UgaWYoIndlZWsiPT1lKW8ud2Vla2RheSgpPjI/KG8ud2Vla2RheSgwKSxvLmFkZCgxLCJ3ZWVrIikpOm8ud2Vla2RheSgwKSxvLmhvdXJzKDApLG8ubWludXRlcygwKSxvLnNlY29uZHMoMCksby5taWxsaXNlY29uZHMoMCk7ZWxzZSBpZigiZGF5Ij09ZSl7c3dpdGNoKGkpe2Nhc2UgNTpjYXNlIDI6by5ob3VycygyNCpNYXRoLnJvdW5kKG8uaG91cnMoKS8yNCkpO2JyZWFrO2RlZmF1bHQ6by5ob3VycygxMipNYXRoLnJvdW5kKG8uaG91cnMoKS8xMikpfW8ubWludXRlcygwKSxvLnNlY29uZHMoMCksby5taWxsaXNlY29uZHMoMCl9ZWxzZSBpZigid2Vla2RheSI9PWUpe3N3aXRjaChpKXtjYXNlIDU6Y2FzZSAyOm8uaG91cnMoMTIqTWF0aC5yb3VuZChvLmhvdXJzKCkvMTIpKTticmVhaztkZWZhdWx0Om8uaG91cnMoNipNYXRoLnJvdW5kKG8uaG91cnMoKS82KSl9by5taW51dGVzKDApLG8uc2Vjb25kcygwKSxvLm1pbGxpc2Vjb25kcygwKX1lbHNlIGlmKCJob3VyIj09ZSl7c3dpdGNoKGkpe2Nhc2UgNDpvLm1pbnV0ZXMoNjAqTWF0aC5yb3VuZChvLm1pbnV0ZXMoKS82MCkpO2JyZWFrO2RlZmF1bHQ6by5taW51dGVzKDMwKk1hdGgucm91bmQoby5taW51dGVzKCkvMzApKX1vLnNlY29uZHMoMCksby5taWxsaXNlY29uZHMoMCl9ZWxzZSBpZigibWludXRlIj09ZSl7c3dpdGNoKGkpe2Nhc2UgMTU6Y2FzZSAxMDpvLm1pbnV0ZXMoNSpNYXRoLnJvdW5kKG8ubWludXRlcygpLzUpKSxvLnNlY29uZHMoMCk7YnJlYWs7Y2FzZSA1Om8uc2Vjb25kcyg2MCpNYXRoLnJvdW5kKG8uc2Vjb25kcygpLzYwKSk7YnJlYWs7ZGVmYXVsdDpvLnNlY29uZHMoMzAqTWF0aC5yb3VuZChvLnNlY29uZHMoKS8zMCkpfW8ubWlsbGlzZWNvbmRzKDApfWVsc2UgaWYoInNlY29uZCI9PWUpc3dpdGNoKGkpe2Nhc2UgMTU6Y2FzZSAxMDpvLnNlY29uZHMoNSpNYXRoLnJvdW5kKG8uc2Vjb25kcygpLzUpKSxvLm1pbGxpc2Vjb25kcygwKTticmVhaztjYXNlIDU6by5taWxsaXNlY29uZHMoMWUzKk1hdGgucm91bmQoby5taWxsaXNlY29uZHMoKS8xZTMpKTticmVhaztkZWZhdWx0Om8ubWlsbGlzZWNvbmRzKDUwMCpNYXRoLnJvdW5kKG8ubWlsbGlzZWNvbmRzKCkvNTAwKSl9ZWxzZSBpZigibWlsbGlzZWNvbmQiPT1lKXt2YXIgcj1pPjU/aS8yOjE7by5taWxsaXNlY29uZHMoTWF0aC5yb3VuZChvLm1pbGxpc2Vjb25kcygpL3IpKnIpfXJldHVybiBvfSxvLnByb3RvdHlwZS5pc01ham9yPWZ1bmN0aW9uKCl7aWYoMT09dGhpcy5zd2l0Y2hlZFllYXIpc3dpdGNoKHRoaXMuc2NhbGUpe2Nhc2UieWVhciI6Y2FzZSJtb250aCI6Y2FzZSJ3ZWVrIjpjYXNlIndlZWtkYXkiOmNhc2UiZGF5IjpjYXNlImhvdXIiOmNhc2UibWludXRlIjpjYXNlInNlY29uZCI6Y2FzZSJtaWxsaXNlY29uZCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX1lbHNlIGlmKDE9PXRoaXMuc3dpdGNoZWRNb250aClzd2l0Y2godGhpcy5zY2FsZSl7Y2FzZSJ3ZWVrIjpjYXNlIndlZWtkYXkiOmNhc2UiZGF5IjpjYXNlImhvdXIiOmNhc2UibWludXRlIjpjYXNlInNlY29uZCI6Y2FzZSJtaWxsaXNlY29uZCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX1lbHNlIGlmKDE9PXRoaXMuc3dpdGNoZWREYXkpc3dpdGNoKHRoaXMuc2NhbGUpe2Nhc2UibWlsbGlzZWNvbmQiOmNhc2Uic2Vjb25kIjpjYXNlIm1pbnV0ZSI6Y2FzZSJob3VyIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfXZhciB0PXRoaXMubW9tZW50KHRoaXMuY3VycmVudCk7c3dpdGNoKHRoaXMuc2NhbGUpe2Nhc2UibWlsbGlzZWNvbmQiOnJldHVybiAwPT10Lm1pbGxpc2Vjb25kcygpO2Nhc2Uic2Vjb25kIjpyZXR1cm4gMD09dC5zZWNvbmRzKCk7Y2FzZSJtaW51dGUiOnJldHVybiAwPT10LmhvdXJzKCkmJjA9PXQubWludXRlcygpO2Nhc2UiaG91ciI6cmV0dXJuIDA9PXQuaG91cnMoKTtjYXNlIndlZWtkYXkiOmNhc2UiZGF5IjpjYXNlIndlZWsiOnJldHVybiAxPT10LmRhdGUoKTtjYXNlIm1vbnRoIjpyZXR1cm4gMD09dC5tb250aCgpO2Nhc2UieWVhciI6ZGVmYXVsdDpyZXR1cm4hMX19LG8ucHJvdG90eXBlLmdldExhYmVsTWlub3I9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT10JiYodD10aGlzLmN1cnJlbnQpLHQgaW5zdGFuY2VvZiBEYXRlJiYodD10aGlzLm1vbWVudCh0KSksImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuZm9ybWF0Lm1pbm9yTGFiZWxzKXJldHVybiB0aGlzLmZvcm1hdC5taW5vckxhYmVscyh0LHRoaXMuc2NhbGUsdGhpcy5zdGVwKTt2YXIgZT10aGlzLmZvcm1hdC5taW5vckxhYmVsc1t0aGlzLnNjYWxlXTtzd2l0Y2godGhpcy5zY2FsZSl7Y2FzZSJ3ZWVrIjppZih0aGlzLmlzTWFqb3IoKSYmMCE9PXQud2Vla2RheSgpKXJldHVybiIiO2RlZmF1bHQ6cmV0dXJuIGUmJmUubGVuZ3RoPjA/dGhpcy5tb21lbnQodCkuZm9ybWF0KGUpOiIifX0sby5wcm90b3R5cGUuZ2V0TGFiZWxNYWpvcj1mdW5jdGlvbih0KXtpZih2b2lkIDA9PXQmJih0PXRoaXMuY3VycmVudCksDQp0IGluc3RhbmNlb2YgRGF0ZSYmKHQ9dGhpcy5tb21lbnQodCkpLCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmZvcm1hdC5tYWpvckxhYmVscylyZXR1cm4gdGhpcy5mb3JtYXQubWFqb3JMYWJlbHModCx0aGlzLnNjYWxlLHRoaXMuc3RlcCk7dmFyIGU9dGhpcy5mb3JtYXQubWFqb3JMYWJlbHNbdGhpcy5zY2FsZV07cmV0dXJuIGUmJmUubGVuZ3RoPjA/dGhpcy5tb21lbnQodCkuZm9ybWF0KGUpOiIifSxvLnByb3RvdHlwZS5nZXRDbGFzc05hbWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3JldHVybiB0L2ElMj09MD8iIHZpcy1ldmVuIjoiIHZpcy1vZGQifWZ1bmN0aW9uIGUodCl7cmV0dXJuIHQuaXNTYW1lKG5ldyBEYXRlLCJkYXkiKT8iIHZpcy10b2RheSI6dC5pc1NhbWUobigpLmFkZCgxLCJkYXkiKSwiZGF5Iik/IiB2aXMtdG9tb3Jyb3ciOnQuaXNTYW1lKG4oKS5hZGQoLTEsImRheSIpLCJkYXkiKT8iIHZpcy15ZXN0ZXJkYXkiOiIifWZ1bmN0aW9uIGkodCl7cmV0dXJuIHQuaXNTYW1lKG5ldyBEYXRlLCJ3ZWVrIik/IiB2aXMtY3VycmVudC13ZWVrIjoiIn1mdW5jdGlvbiBvKHQpe3JldHVybiB0LmlzU2FtZShuZXcgRGF0ZSwibW9udGgiKT8iIHZpcy1jdXJyZW50LW1vbnRoIjoiIn12YXIgbj10aGlzLm1vbWVudCxzPXRoaXMubW9tZW50KHRoaXMuY3VycmVudCkscj1zLmxvY2FsZT9zLmxvY2FsZSgiZW4iKTpzLmxhbmcoImVuIiksYT10aGlzLnN0ZXAsaD1bXTtzd2l0Y2godGhpcy5zY2FsZSl7Y2FzZSJtaWxsaXNlY29uZCI6aC5wdXNoKGUocikpLGgucHVzaCh0KHIubWlsbGlzZWNvbmRzKCkpKTticmVhaztjYXNlInNlY29uZCI6aC5wdXNoKGUocikpLGgucHVzaCh0KHIuc2Vjb25kcygpKSk7YnJlYWs7Y2FzZSJtaW51dGUiOmgucHVzaChlKHIpKSxoLnB1c2godChyLm1pbnV0ZXMoKSkpO2JyZWFrO2Nhc2UiaG91ciI6aC5wdXNoKCJ2aXMtaCIrci5ob3VycygpK3RoaXMuc3RlcD09ND8iLWgiKyhyLmhvdXJzKCkrNCk6IiIpLGgucHVzaChlKHIpKSxoLnB1c2godChyLmhvdXJzKCkpKTticmVhaztjYXNlIndlZWtkYXkiOmgucHVzaCgidmlzLSIrci5mb3JtYXQoImRkZGQiKS50b0xvd2VyQ2FzZSgpKSxoLnB1c2goZShyKSksaC5wdXNoKGkocikpLGgucHVzaCh0KHIuZGF0ZSgpKSk7YnJlYWs7Y2FzZSJkYXkiOmgucHVzaCgidmlzLWRheSIrci5kYXRlKCkpLGgucHVzaCgidmlzLSIrci5mb3JtYXQoIk1NTU0iKS50b0xvd2VyQ2FzZSgpKSxoLnB1c2goZShyKSksaC5wdXNoKG8ocikpLGgucHVzaCh0aGlzLnN0ZXA8PTI/ZShyKToiIiksaC5wdXNoKHRoaXMuc3RlcDw9Mj8idmlzLSIrci5mb3JtYXQoImRkZGQiKS50b0xvd2VyQ2FzZSgpOiIiKSxoLnB1c2godChyLmRhdGUoKS0xKSk7YnJlYWs7Y2FzZSJ3ZWVrIjpoLnB1c2goInZpcy13ZWVrIityLmZvcm1hdCgidyIpKSxoLnB1c2goaShyKSksaC5wdXNoKHQoci53ZWVrKCkpKTticmVhaztjYXNlIm1vbnRoIjpoLnB1c2goInZpcy0iK3IuZm9ybWF0KCJNTU1NIikudG9Mb3dlckNhc2UoKSksaC5wdXNoKG8ocikpLGgucHVzaCh0KHIubW9udGgoKSkpO2JyZWFrO2Nhc2UieWVhciI6aC5wdXNoKCJ2aXMteWVhciIrci55ZWFyKCkpLGgucHVzaChmdW5jdGlvbih0KXtyZXR1cm4gdC5pc1NhbWUobmV3IERhdGUsInllYXIiKT8iIHZpcy1jdXJyZW50LXllYXIiOiIifShyKSksaC5wdXNoKHQoci55ZWFyKCkpKX1yZXR1cm4gaC5maWx0ZXIoU3RyaW5nKS5qb2luKCIgIil9LHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUsaSl7dGhpcy5ncm91cElkPXQsdGhpcy5zdWJncm91cHM9e30sdGhpcy5zdWJncm91cEluZGV4PTAsdGhpcy5zdWJncm91cE9yZGVyZXI9ZSYmZS5zdWJncm91cE9yZGVyLHRoaXMuaXRlbVNldD1pLHRoaXMuaXNWaXNpYmxlPW51bGwsdGhpcy5zdGFja0RpcnR5PSEwLGUmJmUubmVzdGVkR3JvdXBzJiYodGhpcy5uZXN0ZWRHcm91cHM9ZS5uZXN0ZWRHcm91cHMsMD09ZS5zaG93TmVzdGVkP3RoaXMuc2hvd05lc3RlZD0hMTp0aGlzLnNob3dOZXN0ZWQ9ITApLHRoaXMubmVzdGVkSW5Hcm91cD1udWxsLHRoaXMuZG9tPXt9LHRoaXMucHJvcHM9e2xhYmVsOnt3aWR0aDowLGhlaWdodDowfX0sdGhpcy5jbGFzc05hbWU9bnVsbCx0aGlzLml0ZW1zPXt9LHRoaXMudmlzaWJsZUl0ZW1zPVtdLHRoaXMuaXRlbXNJblJhbmdlPVtdLHRoaXMub3JkZXJlZEl0ZW1zPXtieVN0YXJ0OltdLGJ5RW5kOltdfSx0aGlzLmNoZWNrUmFuZ2VkSXRlbXM9ITE7dmFyIG89dGhpczt0aGlzLml0ZW1TZXQuYm9keS5lbWl0dGVyLm9uKCJjaGVja1JhbmdlZEl0ZW1zIixmdW5jdGlvbigpe28uY2hlY2tSYW5nZWRJdGVtcz0hMH0pLHRoaXMuX2NyZWF0ZSgpLHRoaXMuc2V0RGF0YShlKX12YXIgbj1pKDU4KSxzPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX0obikscj1pKDEpLGE9aSgxMjcpO2koMTI4KTtvLnByb3RvdHlwZS5fY3JlYXRlPWZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dGhpcy5pdGVtU2V0Lm9wdGlvbnMuZ3JvdXBFZGl0YWJsZS5vcmRlcj90LmNsYXNzTmFtZT0idmlzLWxhYmVsIGRyYWdnYWJsZSI6dC5jbGFzc05hbWU9InZpcy1sYWJlbCIsdGhpcy5kb20ubGFiZWw9dDt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLmNsYXNzTmFtZT0idmlzLWlubmVyIix0LmFwcGVuZENoaWxkKGUpLHRoaXMuZG9tLmlubmVyPWU7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aS5jbGFzc05hbWU9InZpcy1ncm91cCIsaVsidGltZWxpbmUtZ3JvdXAiXT10aGlzLHRoaXMuZG9tLmZvcmVncm91bmQ9aSx0aGlzLmRvbS5iYWNrZ3JvdW5kPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLmJhY2tncm91bmQuY2xhc3NOYW1lPSJ2aXMtZ3JvdXAiLHRoaXMuZG9tLmF4aXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uYXhpcy5jbGFzc05hbWU9InZpcy1ncm91cCIsdGhpcy5kb20ubWFya2VyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLm1hcmtlci5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHRoaXMuZG9tLm1hcmtlci5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHRoaXMuZG9tLm1hcmtlci5pbm5lckhUTUw9IiIsdGhpcy5kb20uYmFja2dyb3VuZC5hcHBlbmRDaGlsZCh0aGlzLmRvbS5tYXJrZXIpfSxvLnByb3RvdHlwZS5zZXREYXRhPWZ1bmN0aW9uKHQpe3ZhciBlLGk7aWYodGhpcy5pdGVtU2V0Lm9wdGlvbnMmJnRoaXMuaXRlbVNldC5vcHRpb25zLmdyb3VwVGVtcGxhdGU/KGk9dGhpcy5pdGVtU2V0Lm9wdGlvbnMuZ3JvdXBUZW1wbGF0ZS5iaW5kKHRoaXMpLGU9aSh0LHRoaXMuZG9tLmlubmVyKSk6ZT10JiZ0LmNvbnRlbnQsZSBpbnN0YW5jZW9mIEVsZW1lbnQpe2Zvcih0aGlzLmRvbS5pbm5lci5hcHBlbmRDaGlsZChlKTt0aGlzLmRvbS5pbm5lci5maXJzdENoaWxkOyl0aGlzLmRvbS5pbm5lci5yZW1vdmVDaGlsZCh0aGlzLmRvbS5pbm5lci5maXJzdENoaWxkKTt0aGlzLmRvbS5pbm5lci5hcHBlbmRDaGlsZChlKX1lbHNlIGUgaW5zdGFuY2VvZiBPYmplY3Q/aSh0LHRoaXMuZG9tLmlubmVyKTp0aGlzLmRvbS5pbm5lci5pbm5lckhUTUw9dm9pZCAwIT09ZSYmbnVsbCE9PWU/ZTp0aGlzLmdyb3VwSWR8fCIiO2lmKHRoaXMuZG9tLmxhYmVsLnRpdGxlPXQmJnQudGl0bGV8fCIiLHRoaXMuZG9tLmlubmVyLmZpcnN0Q2hpbGQ/ci5yZW1vdmVDbGFzc05hbWUodGhpcy5kb20uaW5uZXIsInZpcy1oaWRkZW4iKTpyLmFkZENsYXNzTmFtZSh0aGlzLmRvbS5pbm5lciwidmlzLWhpZGRlbiIpLHQmJnQubmVzdGVkR3JvdXBzKXt0aGlzLm5lc3RlZEdyb3VwcyYmdGhpcy5uZXN0ZWRHcm91cHM9PXQubmVzdGVkR3JvdXBzfHwodGhpcy5uZXN0ZWRHcm91cHM9dC5uZXN0ZWRHcm91cHMpLHZvaWQgMD09PXQuc2hvd05lc3RlZCYmdm9pZCAwIT09dGhpcy5zaG93TmVzdGVkfHwoMD09dC5zaG93TmVzdGVkP3RoaXMuc2hvd05lc3RlZD0hMTp0aGlzLnNob3dOZXN0ZWQ9ITApLHIuYWRkQ2xhc3NOYW1lKHRoaXMuZG9tLmxhYmVsLCJ2aXMtbmVzdGluZy1ncm91cCIpO3ZhciBvPXRoaXMuaXRlbVNldC5vcHRpb25zLnJ0bD8iY29sbGFwc2VkLXJ0bCI6ImNvbGxhcHNlZCI7dGhpcy5zaG93TmVzdGVkPyhyLnJlbW92ZUNsYXNzTmFtZSh0aGlzLmRvbS5sYWJlbCxvKSxyLmFkZENsYXNzTmFtZSh0aGlzLmRvbS5sYWJlbCwiZXhwYW5kZWQiKSk6KHIucmVtb3ZlQ2xhc3NOYW1lKHRoaXMuZG9tLmxhYmVsLCJleHBhbmRlZCIpLHIuYWRkQ2xhc3NOYW1lKHRoaXMuZG9tLmxhYmVsLG8pKX1lbHNlIGlmKHRoaXMubmVzdGVkR3JvdXBzKXt0aGlzLm5lc3RlZEdyb3Vwcz1udWxsO3ZhciBvPXRoaXMuaXRlbVNldC5vcHRpb25zLnJ0bD8iY29sbGFwc2VkLXJ0bCI6ImNvbGxhcHNlZCI7ci5yZW1vdmVDbGFzc05hbWUodGhpcy5kb20ubGFiZWwsbyksci5yZW1vdmVDbGFzc05hbWUodGhpcy5kb20ubGFiZWwsImV4cGFuZGVkIiksci5yZW1vdmVDbGFzc05hbWUodGhpcy5kb20ubGFiZWwsInZpcy1uZXN0aW5nLWdyb3VwIil9dCYmdC5uZXN0ZWRJbkdyb3VwJiYoci5hZGRDbGFzc05hbWUodGhpcy5kb20ubGFiZWwsInZpcy1uZXN0ZWQtZ3JvdXAiKSx0aGlzLml0ZW1TZXQub3B0aW9ucyYmdGhpcy5pdGVtU2V0Lm9wdGlvbnMucnRsP3RoaXMuZG9tLmlubmVyLnN0eWxlLnBhZGRpbmdSaWdodD0iMzBweCI6dGhpcy5kb20uaW5uZXIuc3R5bGUucGFkZGluZ0xlZnQ9IjMwcHgiKTt2YXIgbj10JiZ0LmNsYXNzTmFtZXx8bnVsbDtuIT10aGlzLmNsYXNzTmFtZSYmKHRoaXMuY2xhc3NOYW1lJiYoci5yZW1vdmVDbGFzc05hbWUodGhpcy5kb20ubGFiZWwsdGhpcy5jbGFzc05hbWUpLHIucmVtb3ZlQ2xhc3NOYW1lKHRoaXMuZG9tLmZvcmVncm91bmQsdGhpcy5jbGFzc05hbWUpLHIucmVtb3ZlQ2xhc3NOYW1lKHRoaXMuZG9tLmJhY2tncm91bmQsdGhpcy5jbGFzc05hbWUpLHIucmVtb3ZlQ2xhc3NOYW1lKHRoaXMuZG9tLmF4aXMsdGhpcy5jbGFzc05hbWUpKSxyLmFkZENsYXNzTmFtZSh0aGlzLmRvbS5sYWJlbCxuKSxyLmFkZENsYXNzTmFtZSh0aGlzLmRvbS5mb3JlZ3JvdW5kLG4pLHIuYWRkQ2xhc3NOYW1lKHRoaXMuZG9tLmJhY2tncm91bmQsbiksci5hZGRDbGFzc05hbWUodGhpcy5kb20uYXhpcyxuKSx0aGlzLmNsYXNzTmFtZT1uKSx0aGlzLnN0eWxlJiYoci5yZW1vdmVDc3NUZXh0KHRoaXMuZG9tLmxhYmVsLHRoaXMuc3R5bGUpLHRoaXMuc3R5bGU9bnVsbCksdCYmdC5zdHlsZSYmKHIuYWRkQ3NzVGV4dCh0aGlzLmRvbS5sYWJlbCx0LnN0eWxlKSx0aGlzLnN0eWxlPXQuc3R5bGUpfSxvLnByb3RvdHlwZS5nZXRMYWJlbFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMubGFiZWwud2lkdGh9LG8ucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbih0LGUsaSl7dmFyIG89ITEsbj10aGlzLmRvbS5tYXJrZXIuY2xpZW50SGVpZ2h0O24hPXRoaXMubGFzdE1hcmtlckhlaWdodCYmKHRoaXMubGFzdE1hcmtlckhlaWdodD1uLHIuZm9yRWFjaCh0aGlzLml0ZW1zLGZ1bmN0aW9uKHQpe3QuZGlydHk9ITAsdC5kaXNwbGF5ZWQmJnQucmVkcmF3KCl9KSxpPSEwKSx0aGlzLl9jYWxjdWxhdGVTdWJHcm91cEhlaWdodHMoZSk7dmFyIHM9dGhpcy5kb20uZm9yZWdyb3VuZDt0aGlzLnRvcD1zLm9mZnNldFRvcCx0aGlzLnJpZ2h0PXMub2Zmc2V0TGVmdCx0aGlzLndpZHRoPXMub2Zmc2V0V2lkdGg7dmFyIGg9dGhpcy5pc1Zpc2libGU7dGhpcy5pc1Zpc2libGU9dGhpcy5faXNHcm91cFZpc2libGUodCxlKTt2YXIgZD1pfHx0aGlzLnN0YWNrRGlydHl8fHRoaXMuaXNWaXNpYmxlJiYhaDtpZih0aGlzLl91cGRhdGVTdWJncm91cHNTaXplcygpLGQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLml0ZW1TZXQub3B0aW9ucy5vcmRlcil7dmFyIGw9dGhpcztyLmZvckVhY2godGhpcy5pdGVtcyxmdW5jdGlvbih0KXt0LmRpc3BsYXllZHx8KHQucmVkcmF3KCksbC52aXNpYmxlSXRlbXMucHVzaCh0KSksdC5yZXBvc2l0aW9uWCghMSl9KTt2YXIgdT10aGlzLm9yZGVyZWRJdGVtcy5ieVN0YXJ0LnNsaWNlKCkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBsLml0ZW1TZXQub3B0aW9ucy5vcmRlcih0LmRhdGEsZS5kYXRhKX0pO2Euc3RhY2sodSxlLCEwKSx0aGlzLnZpc2libGVJdGVtcz10aGlzLl91cGRhdGVJdGVtc0luUmFuZ2UodGhpcy5vcmRlcmVkSXRlbXMsdGhpcy52aXNpYmxlSXRlbXMsdCl9ZWxzZSB0aGlzLnZpc2libGVJdGVtcz10aGlzLl91cGRhdGVJdGVtc0luUmFuZ2UodGhpcy5vcmRlcmVkSXRlbXMsdGhpcy52aXNpYmxlSXRlbXMsdCksdGhpcy5pdGVtU2V0Lm9wdGlvbnMuc3RhY2s/YS5zdGFjayh0aGlzLnZpc2libGVJdGVtcyxlLCEwKTphLm5vc3RhY2sodGhpcy52aXNpYmxlSXRlbXMsZSx0aGlzLnN1Ymdyb3Vwcyx0aGlzLml0ZW1TZXQub3B0aW9ucy5zdGFja1N1Ymdyb3Vwcyk7dGhpcy5zdGFja0RpcnR5PSExfXZhciBjPXRoaXMuX2NhbGN1bGF0ZUhlaWdodChlKSxzPXRoaXMuZG9tLmZvcmVncm91bmQ7dGhpcy50b3A9cy5vZmZzZXRUb3AsdGhpcy5yaWdodD1zLm9mZnNldExlZnQsdGhpcy53aWR0aD1zLm9mZnNldFdpZHRoLG89ci51cGRhdGVQcm9wZXJ0eSh0aGlzLCJoZWlnaHQiLGMpfHxvLG89ci51cGRhdGVQcm9wZXJ0eSh0aGlzLnByb3BzLmxhYmVsLCJ3aWR0aCIsdGhpcy5kb20uaW5uZXIuY2xpZW50V2lkdGgpfHxvLG89ci51cGRhdGVQcm9wZXJ0eSh0aGlzLnByb3BzLmxhYmVsLCJoZWlnaHQiLHRoaXMuZG9tLmlubmVyLmNsaWVudEhlaWdodCl8fG8sdGhpcy5kb20uYmFja2dyb3VuZC5zdHlsZS5oZWlnaHQ9YysicHgiLHRoaXMuZG9tLmZvcmVncm91bmQuc3R5bGUuaGVpZ2h0PWMrInB4Iix0aGlzLmRvbS5sYWJlbC5zdHlsZS5oZWlnaHQ9YysicHgiO2Zvcih2YXIgcD0wLGY9dGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoO3A8ZjtwKyspe3ZhciBtPXRoaXMudmlzaWJsZUl0ZW1zW3BdO20ucmVwb3NpdGlvblkoZSksdGhpcy5pc1Zpc2libGV8fCJfX2JhY2tncm91bmRfXyI9PXRoaXMuZ3JvdXBJZHx8bS5kaXNwbGF5ZWQmJm0uaGlkZSgpfXJldHVybiF0aGlzLmlzVmlzaWJsZSYmdGhpcy5oZWlnaHQ/bz0hMTpvfSxvLnByb3RvdHlwZS5fY2FsY3VsYXRlU3ViR3JvdXBIZWlnaHRzPWZ1bmN0aW9uKHQpe2lmKCgwLHMuZGVmYXVsdCkodGhpcy5zdWJncm91cHMpLmxlbmd0aD4wKXt2YXIgZT10aGlzO3RoaXMucmVzZXRTdWJncm91cHMoKSxyLmZvckVhY2godGhpcy52aXNpYmxlSXRlbXMsZnVuY3Rpb24oaSl7dm9pZCAwIT09aS5kYXRhLnN1Ymdyb3VwJiYoZS5zdWJncm91cHNbaS5kYXRhLnN1Ymdyb3VwXS5oZWlnaHQ9TWF0aC5tYXgoZS5zdWJncm91cHNbaS5kYXRhLnN1Ymdyb3VwXS5oZWlnaHQsaS5oZWlnaHQrdC5pdGVtLnZlcnRpY2FsKSxlLnN1Ymdyb3Vwc1tpLmRhdGEuc3ViZ3JvdXBdLnZpc2libGU9ITApfSl9fSxvLnByb3RvdHlwZS5faXNHcm91cFZpc2libGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy50b3A8PXQuYm9keS5kb21Qcm9wcy5jZW50ZXJDb250YWluZXIuaGVpZ2h0LXQuYm9keS5kb21Qcm9wcy5zY3JvbGxUb3ArZS5heGlzJiZ0aGlzLnRvcCt0aGlzLmhlaWdodCtlLmF4aXM+PS10LmJvZHkuZG9tUHJvcHMuc2Nyb2xsVG9wfSxvLnByb3RvdHlwZS5fY2FsY3VsYXRlSGVpZ2h0PWZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy52aXNpYmxlSXRlbXM7aWYoaS5sZW5ndGg+MCl7dmFyIG89aVswXS50b3Asbj1pWzBdLnRvcCtpWzBdLmhlaWdodDtpZihyLmZvckVhY2goaSxmdW5jdGlvbih0KXtvPU1hdGgubWluKG8sdC50b3ApLG49TWF0aC5tYXgobix0LnRvcCt0LmhlaWdodCl9KSxvPnQuYXhpcyl7dmFyIHM9by10LmF4aXM7bi09cyxyLmZvckVhY2goaSxmdW5jdGlvbih0KXt0LnRvcC09c30pfWU9bit0Lml0ZW0udmVydGljYWwvMn1lbHNlIGU9MDtyZXR1cm4gZT1NYXRoLm1heChlLHRoaXMucHJvcHMubGFiZWwuaGVpZ2h0KX0sby5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe3RoaXMuZG9tLmxhYmVsLnBhcmVudE5vZGV8fHRoaXMuaXRlbVNldC5kb20ubGFiZWxTZXQuYXBwZW5kQ2hpbGQodGhpcy5kb20ubGFiZWwpLHRoaXMuZG9tLmZvcmVncm91bmQucGFyZW50Tm9kZXx8dGhpcy5pdGVtU2V0LmRvbS5mb3JlZ3JvdW5kLmFwcGVuZENoaWxkKHRoaXMuZG9tLmZvcmVncm91bmQpLHRoaXMuZG9tLmJhY2tncm91bmQucGFyZW50Tm9kZXx8dGhpcy5pdGVtU2V0LmRvbS5iYWNrZ3JvdW5kLmFwcGVuZENoaWxkKHRoaXMuZG9tLmJhY2tncm91bmQpLHRoaXMuZG9tLmF4aXMucGFyZW50Tm9kZXx8dGhpcy5pdGVtU2V0LmRvbS5heGlzLmFwcGVuZENoaWxkKHRoaXMuZG9tLmF4aXMpfSxvLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kb20ubGFiZWw7dC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCk7dmFyIGU9dGhpcy5kb20uZm9yZWdyb3VuZDtlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKTt2YXIgaT10aGlzLmRvbS5iYWNrZ3JvdW5kO2kucGFyZW50Tm9kZSYmaS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGkpO3ZhciBvPXRoaXMuZG9tLmF4aXM7by5wYXJlbnROb2RlJiZvLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobyl9LG8ucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0KXtpZih0aGlzLml0ZW1zW3QuaWRdPXQsdC5zZXRQYXJlbnQodGhpcyksdGhpcy5zdGFja0RpcnR5PSEwLHZvaWQgMCE9PXQuZGF0YS5zdWJncm91cCYmKHRoaXMuX2FkZFRvU3ViZ3JvdXAodCksdGhpcy5vcmRlclN1Ymdyb3VwcygpKSwtMT09dGhpcy52aXNpYmxlSXRlbXMuaW5kZXhPZih0KSl7dmFyIGU9dGhpcy5pdGVtU2V0LmJvZHkucmFuZ2U7dGhpcy5fY2hlY2tJZlZpc2libGUodCx0aGlzLnZpc2libGVJdGVtcyxlKX19LG8ucHJvdG90eXBlLl9hZGRUb1N1Ymdyb3VwPWZ1bmN0aW9uKHQsZSl7ZT1lfHx0LmRhdGEuc3ViZ3JvdXAsdm9pZCAwIT1lJiZ2b2lkIDA9PT10aGlzLnN1Ymdyb3Vwc1tlXSYmKHRoaXMuc3ViZ3JvdXBzW2VdPXtoZWlnaHQ6MCx0b3A6MCxzdGFydDp0LmRhdGEuc3RhcnQsZW5kOnQuZGF0YS5lbmQsdmlzaWJsZTohMSxpbmRleDp0aGlzLnN1Ymdyb3VwSW5kZXgsaXRlbXM6W119LHRoaXMuc3ViZ3JvdXBJbmRleCsrKSxuZXcgRGF0ZSh0LmRhdGEuc3RhcnQpPG5ldyBEYXRlKHRoaXMuc3ViZ3JvdXBzW2VdLnN0YXJ0KSYmKHRoaXMuc3ViZ3JvdXBzW2VdLnN0YXJ0PXQuZGF0YS5zdGFydCksbmV3IERhdGUodC5kYXRhLmVuZCk+bmV3IERhdGUodGhpcy5zdWJncm91cHNbZV0uZW5kKSYmKHRoaXMuc3ViZ3JvdXBzW2VdLmVuZD10LmRhdGEuZW5kKSx0aGlzLnN1Ymdyb3Vwc1tlXS5pdGVtcy5wdXNoKHQpfSxvLnByb3RvdHlwZS5fdXBkYXRlU3ViZ3JvdXBzU2l6ZXM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKHQuc3ViZ3JvdXBzKWZvcih2YXIgZSBpbiB0LnN1Ymdyb3Vwcyl7dmFyIGk9dC5zdWJncm91cHNbZV0uaXRlbXNbMF0uZGF0YS5zdGFydCxvPXQuc3ViZ3JvdXBzW2VdLml0ZW1zWzBdLmRhdGEuZW5kLTE7dC5zdWJncm91cHNbZV0uaXRlbXMuZm9yRWFjaChmdW5jdGlvbih0KXtuZXcgRGF0ZSh0LmRhdGEuc3RhcnQpPG5ldyBEYXRlKGkpJiYoaT10LmRhdGEuc3RhcnQpLG5ldyBEYXRlKHQuZGF0YS5lbmQpPm5ldyBEYXRlKG8pJiYobz10LmRhdGEuZW5kKX0pLHQuc3ViZ3JvdXBzW2VdLnN0YXJ0PWksdC5zdWJncm91cHNbZV0uZW5kPW5ldyBEYXRlKG8tMSl9fSxvLnByb3RvdHlwZS5vcmRlclN1Ymdyb3Vwcz1mdW5jdGlvbigpe2lmKHZvaWQgMCE9PXRoaXMuc3ViZ3JvdXBPcmRlcmVyKXt2YXIgdD1bXTtpZigic3RyaW5nIj09dHlwZW9mIHRoaXMuc3ViZ3JvdXBPcmRlcmVyKXtmb3IodmFyIGUgaW4gdGhpcy5zdWJncm91cHMpdC5wdXNoKHtzdWJncm91cDplLHNvcnRGaWVsZDp0aGlzLnN1Ymdyb3Vwc1tlXS5pdGVtc1swXS5kYXRhW3RoaXMuc3ViZ3JvdXBPcmRlcmVyXX0pO3Quc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LnNvcnRGaWVsZC1lLnNvcnRGaWVsZH0pfWVsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuc3ViZ3JvdXBPcmRlcmVyKXtmb3IodmFyIGUgaW4gdGhpcy5zdWJncm91cHMpdC5wdXNoKHRoaXMuc3ViZ3JvdXBzW2VdLml0ZW1zWzBdLmRhdGEpO3Quc29ydCh0aGlzLnN1Ymdyb3VwT3JkZXJlcil9aWYodC5sZW5ndGg+MClmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKyl0aGlzLnN1Ymdyb3Vwc1t0W2ldLnN1Ymdyb3VwXS5pbmRleD1pfX0sby5wcm90b3R5cGUucmVzZXRTdWJncm91cHM9ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5zdWJncm91cHMpdGhpcy5zdWJncm91cHMuaGFzT3duUHJvcGVydHkodCkmJih0aGlzLnN1Ymdyb3Vwc1t0XS52aXNpYmxlPSExLHRoaXMuc3ViZ3JvdXBzW3RdLmhlaWdodD0wKX0sby5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe2RlbGV0ZSB0aGlzLml0ZW1zW3QuaWRdLHQuc2V0UGFyZW50KG51bGwpLHRoaXMuc3RhY2tEaXJ0eT0hMDt2YXIgZT10aGlzLnZpc2libGVJdGVtcy5pbmRleE9mKHQpOy0xIT1lJiZ0aGlzLnZpc2libGVJdGVtcy5zcGxpY2UoZSwxKSx2b2lkIDAhPT10LmRhdGEuc3ViZ3JvdXAmJih0aGlzLl9yZW1vdmVGcm9tU3ViZ3JvdXAodCksdGhpcy5vcmRlclN1Ymdyb3VwcygpKX0sby5wcm90b3R5cGUuX3JlbW92ZUZyb21TdWJncm91cD1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMCE9KGU9ZXx8dC5kYXRhLnN1Ymdyb3VwKSl7dmFyIGk9dGhpcy5zdWJncm91cHNbZV07aWYoaSl7dmFyIG89aS5pdGVtcy5pbmRleE9mKHQpO28+PTAmJihpLml0ZW1zLnNwbGljZShvLDEpLGkuaXRlbXMubGVuZ3RoP3RoaXMuX3VwZGF0ZVN1Ymdyb3Vwc1NpemVzKCk6ZGVsZXRlIHRoaXMuc3ViZ3JvdXBzW2VdKX19fSxvLnByb3RvdHlwZS5yZW1vdmVGcm9tRGF0YVNldD1mdW5jdGlvbih0KXt0aGlzLml0ZW1TZXQucmVtb3ZlSXRlbSh0LmlkKX0sby5wcm90b3R5cGUub3JkZXI9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9ci50b0FycmF5KHRoaXMuaXRlbXMpLGU9W10saT1bXSxvPTA7bzx0Lmxlbmd0aDtvKyspdm9pZCAwIT09dFtvXS5kYXRhLmVuZCYmaS5wdXNoKHRbb10pLGUucHVzaCh0W29dKTt0aGlzLm9yZGVyZWRJdGVtcz17YnlTdGFydDplLGJ5RW5kOml9LGEub3JkZXJCeVN0YXJ0KHRoaXMub3JkZXJlZEl0ZW1zLmJ5U3RhcnQpLGEub3JkZXJCeUVuZCh0aGlzLm9yZGVyZWRJdGVtcy5ieUVuZCl9LG8ucHJvdG90eXBlLl91cGRhdGVJdGVtc0luUmFuZ2U9ZnVuY3Rpb24odCxlLGkpe3ZhciBvPVtdLG49e30scz0oaS5lbmQtaS5zdGFydCkvNCxhPWkuc3RhcnQtcyxoPWkuZW5kK3MsZD1mdW5jdGlvbih0KXtyZXR1cm4gdDxhPy0xOnQ8PWg/MDoxfTtpZihlLmxlbmd0aD4wKWZvcih2YXIgbD0wO2w8ZS5sZW5ndGg7bCsrKXRoaXMuX2NoZWNrSWZWaXNpYmxlV2l0aFJlZmVyZW5jZShlW2xdLG8sbixpKTt2YXIgdT1yLmJpbmFyeVNlYXJjaEN1c3RvbSh0LmJ5U3RhcnQsZCwiZGF0YSIsInN0YXJ0Iik7aWYodGhpcy5fdHJhY2VWaXNpYmxlKHUsdC5ieVN0YXJ0LG8sbixmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhLnN0YXJ0PGF8fHQuZGF0YS5zdGFydD5ofSksMT09dGhpcy5jaGVja1JhbmdlZEl0ZW1zKWZvcih0aGlzLmNoZWNrUmFuZ2VkSXRlbXM9ITEsbD0wO2w8dC5ieUVuZC5sZW5ndGg7bCsrKXRoaXMuX2NoZWNrSWZWaXNpYmxlV2l0aFJlZmVyZW5jZSh0LmJ5RW5kW2xdLG8sbixpKTtlbHNle3ZhciBjPXIuYmluYXJ5U2VhcmNoQ3VzdG9tKHQuYnlFbmQsZCwiZGF0YSIsImVuZCIpO3RoaXMuX3RyYWNlVmlzaWJsZShjLHQuYnlFbmQsbyxuLGZ1bmN0aW9uKHQpe3JldHVybiB0LmRhdGEuZW5kPGF8fHQuZGF0YS5lbmQ+aH0pfWZvcih2YXIgbD0wO2w8by5sZW5ndGg7bCsrKXt2YXIgcD1vW2xdO3AuZGlzcGxheWVkfHxwLnNob3coKSxwLnJlcG9zaXRpb25YKCl9cmV0dXJuIG99LG8ucHJvdG90eXBlLl90cmFjZVZpc2libGU9ZnVuY3Rpb24odCxlLGksbyxuKXtpZigtMSE9dCl7Zm9yKHZhciBzPXQ7cz49MDtzLS0pe3ZhciByPWVbc107aWYobihyKSlicmVhazt2b2lkIDA9PT1vW3IuaWRdJiYob1tyLmlkXT0hMCxpLnB1c2gocikpfWZvcih2YXIgcz10KzE7czxlLmxlbmd0aDtzKyspe3ZhciByPWVbc107aWYobihyKSlicmVhazt2b2lkIDA9PT1vW3IuaWRdJiYob1tyLmlkXT0hMCxpLnB1c2gocikpfX19LG8ucHJvdG90eXBlLl9jaGVja0lmVmlzaWJsZT1mdW5jdGlvbih0LGUsaSl7dC5pc1Zpc2libGUoaSk/KHQuZGlzcGxheWVkfHx0LnNob3coKSx0LnJlcG9zaXRpb25YKCksZS5wdXNoKHQpKTp0LmRpc3BsYXllZCYmdC5oaWRlKCl9LG8ucHJvdG90eXBlLl9jaGVja0lmVmlzaWJsZVdpdGhSZWZlcmVuY2U9ZnVuY3Rpb24odCxlLGksbyl7dC5pc1Zpc2libGUobyk/dm9pZCAwPT09aVt0LmlkXSYmKGlbdC5pZF09ITAsZS5wdXNoKHQpKTp0LmRpc3BsYXllZCYmdC5oaWRlKCl9LG8ucHJvdG90eXBlLmNoYW5nZVN1Ymdyb3VwPWZ1bmN0aW9uKHQsZSxpKXt0aGlzLl9yZW1vdmVGcm9tU3ViZ3JvdXAodCxlKSx0aGlzLl9hZGRUb1N1Ymdyb3VwKHQsaSksdGhpcy5vcmRlclN1Ymdyb3VwcygpfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlKXtlLm9yZGVyQnlTdGFydD1mdW5jdGlvbih0KXt0LnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kYXRhLnN0YXJ0LWUuZGF0YS5zdGFydH0pfSxlLm9yZGVyQnlFbmQ9ZnVuY3Rpb24odCl7dC5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuKCJlbmQiaW4gdC5kYXRhP3QuZGF0YS5lbmQ6dC5kYXRhLnN0YXJ0KS0oImVuZCJpbiBlLmRhdGE/ZS5kYXRhLmVuZDplLmRhdGEuc3RhcnQpfSl9LGUuc3RhY2s9ZnVuY3Rpb24odCxpLG8pe2lmKG8pZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXS50b3A9bnVsbDtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHM9dFtuXTtpZihzLnN0YWNrJiZudWxsPT09cy50b3Ape3MudG9wPWkuYXhpcztkb3tmb3IodmFyIHI9bnVsbCxhPTAsaD10Lmxlbmd0aDthPGg7YSsrKXt2YXIgZD10W2FdO2lmKG51bGwhPT1kLnRvcCYmZCE9PXMmJmQuc3RhY2smJmUuY29sbGlzaW9uKHMsZCxpLml0ZW0sZC5vcHRpb25zLnJ0bCkpe3I9ZDticmVha319bnVsbCE9ciYmKHMudG9wPXIudG9wK3IuaGVpZ2h0K2kuaXRlbS52ZXJ0aWNhbCl9d2hpbGUocil9fX0sZS5ub3N0YWNrPWZ1bmN0aW9uKHQsaSxvLG4pe2Zvcih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKWlmKHZvaWQgMD09dFtzXS5kYXRhLnN1Ymdyb3VwKXRbc10udG9wPWkuaXRlbS52ZXJ0aWNhbDtlbHNlIGlmKHZvaWQgMCE9PXRbc10uZGF0YS5zdWJncm91cCYmbil7dmFyIHI9MDtmb3IodmFyIGEgaW4gbylvLmhhc093blByb3BlcnR5KGEpJiYxPT1vW2FdLnZpc2libGUmJm9bYV0uaW5kZXg8b1t0W3NdLmRhdGEuc3ViZ3JvdXBdLmluZGV4JiYocis9b1thXS5oZWlnaHQsb1t0W3NdLmRhdGEuc3ViZ3JvdXBdLnRvcD1yKTt0W3NdLnRvcD1yKy41KmkuaXRlbS52ZXJ0aWNhbH1ufHxlLnN0YWNrU3ViZ3JvdXBzKHQsaSxvKX0sZS5zdGFja1N1Ymdyb3Vwcz1mdW5jdGlvbih0LGksbyl7Zm9yKHZhciBuIGluIG8paWYoby5oYXNPd25Qcm9wZXJ0eShuKSl7b1tuXS50b3A9MDtkb3t2YXIgcz1udWxsO2Zvcih2YXIgciBpbiBvKWlmKG51bGwhPT1vW3JdLnRvcCYmciE9PW4mJm9bbl0uaW5kZXg+b1tyXS5pbmRleCYmZS5jb2xsaXNpb25CeVRpbWVzKG9bbl0sb1tyXSkpe3M9b1tyXTticmVha31udWxsIT1zJiYob1tuXS50b3A9cy50b3Arcy5oZWlnaHQpfXdoaWxlKHMpfWZvcih2YXIgYT0wO2E8dC5sZW5ndGg7YSsrKXZvaWQgMCE9PXRbYV0uZGF0YS5zdWJncm91cCYmKHRbYV0udG9wPW9bdFthXS5kYXRhLnN1Ymdyb3VwXS50b3ArLjUqaS5pdGVtLnZlcnRpY2FsKX0sZS5jb2xsaXNpb249ZnVuY3Rpb24odCxlLGksbyl7cmV0dXJuIG8/dC5yaWdodC1pLmhvcml6b250YWwrLjAwMTxlLnJpZ2h0K2Uud2lkdGgmJnQucmlnaHQrdC53aWR0aCtpLmhvcml6b250YWwtLjAwMT5lLnJpZ2h0JiZ0LnRvcC1pLnZlcnRpY2FsKy4wMDE8ZS50b3ArZS5oZWlnaHQmJnQudG9wK3QuaGVpZ2h0K2kudmVydGljYWwtLjAwMT5lLnRvcDp0LmxlZnQtaS5ob3Jpem9udGFsKy4wMDE8ZS5sZWZ0K2Uud2lkdGgmJnQubGVmdCt0LndpZHRoK2kuaG9yaXpvbnRhbC0uMDAxPmUubGVmdCYmdC50b3AtaS52ZXJ0aWNhbCsuMDAxPGUudG9wK2UuaGVpZ2h0JiZ0LnRvcCt0LmhlaWdodCtpLnZlcnRpY2FsLS4wMDE+ZS50b3B9LGUuY29sbGlzaW9uQnlUaW1lcz1mdW5jdGlvbih0LGUpe3JldHVybiB0LnN0YXJ0PD1lLnN0YXJ0JiZ0LmVuZD49ZS5zdGFydCYmdC50b3A8ZS50b3ArZS5oZWlnaHQmJnQudG9wK3QuaGVpZ2h0PmUudG9wfHxlLnN0YXJ0PD10LnN0YXJ0JiZlLmVuZD49dC5zdGFydCYmZS50b3A8dC50b3ArdC5oZWlnaHQmJmUudG9wK2UuaGVpZ2h0PnQudG9wfX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlLGkpe2lmKHRoaXMucHJvcHM9e2NvbnRlbnQ6e3dpZHRoOjB9fSx0aGlzLm92ZXJmbG93PSExLHRoaXMub3B0aW9ucz1pLHQpe2lmKHZvaWQgMD09dC5zdGFydCl0aHJvdyBuZXcgRXJyb3IoJ1Byb3BlcnR5ICJzdGFydCIgbWlzc2luZyBpbiBpdGVtICcrdC5pZCk7aWYodm9pZCAwPT10LmVuZCl0aHJvdyBuZXcgRXJyb3IoJ1Byb3BlcnR5ICJlbmQiIG1pc3NpbmcgaW4gaXRlbSAnK3QuaWQpfW4uY2FsbCh0aGlzLHQsZSxpKX12YXIgbj0oaSgxMTMpLGkoMTI5KSk7by5wcm90b3R5cGU9bmV3IG4obnVsbCxudWxsLG51bGwpLG8ucHJvdG90eXBlLmJhc2VDbGFzc05hbWU9InZpcy1pdGVtIHZpcy1yYW5nZSIsby5wcm90b3R5cGUuaXNWaXNpYmxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRhdGEuc3RhcnQ8dC5lbmQmJnRoaXMuZGF0YS5lbmQ+dC5zdGFydH0sby5wcm90b3R5cGUucmVkcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kb207aWYodHx8KHRoaXMuZG9tPXt9LHQ9dGhpcy5kb20sdC5ib3g9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdC5mcmFtZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0LmZyYW1lLmNsYXNzTmFtZT0idmlzLWl0ZW0tb3ZlcmZsb3ciLHQuYm94LmFwcGVuZENoaWxkKHQuZnJhbWUpLHQudmlzaWJsZUZyYW1lPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQudmlzaWJsZUZyYW1lLmNsYXNzTmFtZT0idmlzLWl0ZW0tdmlzaWJsZS1mcmFtZSIsdC5ib3guYXBwZW5kQ2hpbGQodC52aXNpYmxlRnJhbWUpLHQuY29udGVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0LmNvbnRlbnQuY2xhc3NOYW1lPSJ2aXMtaXRlbS1jb250ZW50Iix0LmZyYW1lLmFwcGVuZENoaWxkKHQuY29udGVudCksdC5ib3hbInRpbWVsaW5lLWl0ZW0iXT10aGlzLHRoaXMuZGlydHk9ITApLCF0aGlzLnBhcmVudCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWRyYXcgaXRlbTogbm8gcGFyZW50IGF0dGFjaGVkIik7aWYoIXQuYm94LnBhcmVudE5vZGUpe3ZhciBlPXRoaXMucGFyZW50LmRvbS5mb3JlZ3JvdW5kO2lmKCFlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZHJhdyBpdGVtOiBwYXJlbnQgaGFzIG5vIGZvcmVncm91bmQgY29udGFpbmVyIGVsZW1lbnQiKTtlLmFwcGVuZENoaWxkKHQuYm94KX1pZih0aGlzLmRpc3BsYXllZD0hMCx0aGlzLmRpcnR5KXt0aGlzLl91cGRhdGVDb250ZW50cyh0aGlzLmRvbS5jb250ZW50KSx0aGlzLl91cGRhdGVEYXRhQXR0cmlidXRlcyh0aGlzLmRvbS5ib3gpLHRoaXMuX3VwZGF0ZVN0eWxlKHRoaXMuZG9tLmJveCk7dmFyIGk9dGhpcy5lZGl0YWJsZS51cGRhdGVUaW1lfHx0aGlzLmVkaXRhYmxlLnVwZGF0ZUdyb3VwLG89KHRoaXMuZGF0YS5jbGFzc05hbWU/IiAiK3RoaXMuZGF0YS5jbGFzc05hbWU6IiIpKyh0aGlzLnNlbGVjdGVkPyIgdmlzLXNlbGVjdGVkIjoiIikrKGk/IiB2aXMtZWRpdGFibGUiOiIgdmlzLXJlYWRvbmx5Iik7dC5ib3guY2xhc3NOYW1lPXRoaXMuYmFzZUNsYXNzTmFtZStvLHRoaXMub3ZlcmZsb3c9ImhpZGRlbiIhPT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0LmZyYW1lKS5vdmVyZmxvdyx0aGlzLmRvbS5jb250ZW50LnN0eWxlLm1heFdpZHRoPSJub25lIix0aGlzLnByb3BzLmNvbnRlbnQud2lkdGg9dGhpcy5kb20uY29udGVudC5vZmZzZXRXaWR0aCx0aGlzLmhlaWdodD10aGlzLmRvbS5ib3gub2Zmc2V0SGVpZ2h0LHRoaXMuZG9tLmNvbnRlbnQuc3R5bGUubWF4V2lkdGg9IiIsdGhpcy5kaXJ0eT0hMX10aGlzLl9yZXBhaW50T25JdGVtVXBkYXRlVGltZVRvb2x0aXAodC5ib3gpLHRoaXMuX3JlcGFpbnREZWxldGVCdXR0b24odC5ib3gpLHRoaXMuX3JlcGFpbnREcmFnQ2VudGVyKCksdGhpcy5fcmVwYWludERyYWdMZWZ0KCksdGhpcy5fcmVwYWludERyYWdSaWdodCgpfSxvLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dGhpcy5kaXNwbGF5ZWR8fHRoaXMucmVkcmF3KCl9LG8ucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oKXtpZih0aGlzLmRpc3BsYXllZCl7dmFyIHQ9dGhpcy5kb20uYm94O3QucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLHRoaXMuZGlzcGxheWVkPSExfX0sby5wcm90b3R5cGUucmVwb3NpdGlvblg9ZnVuY3Rpb24odCl7dmFyIGUsaSxvPXRoaXMucGFyZW50LndpZHRoLG49dGhpcy5jb252ZXJzaW9uLnRvU2NyZWVuKHRoaXMuZGF0YS5zdGFydCkscz10aGlzLmNvbnZlcnNpb24udG9TY3JlZW4odGhpcy5kYXRhLmVuZCkscj12b2lkIDA9PT10aGlzLmRhdGEuYWxpZ24/dGhpcy5vcHRpb25zLmFsaWduOnRoaXMuZGF0YS5hbGlnbjt2b2lkIDAhPT10JiYhMCE9PXR8fChuPC1vJiYobj0tbykscz4yKm8mJihzPTIqbykpO3ZhciBhPU1hdGgubWF4KHMtbisuNSwxKTtzd2l0Y2godGhpcy5vdmVyZmxvdz8odGhpcy5vcHRpb25zLnJ0bD90aGlzLnJpZ2h0PW46dGhpcy5sZWZ0PW4sdGhpcy53aWR0aD1hK3RoaXMucHJvcHMuY29udGVudC53aWR0aCxpPXRoaXMucHJvcHMuY29udGVudC53aWR0aCk6KHRoaXMub3B0aW9ucy5ydGw/dGhpcy5yaWdodD1uOnRoaXMubGVmdD1uLHRoaXMud2lkdGg9YSxpPU1hdGgubWluKHMtbix0aGlzLnByb3BzLmNvbnRlbnQud2lkdGgpKSx0aGlzLm9wdGlvbnMucnRsP3RoaXMuZG9tLmJveC5zdHlsZS5yaWdodD10aGlzLnJpZ2h0KyJweCI6dGhpcy5kb20uYm94LnN0eWxlLmxlZnQ9dGhpcy5sZWZ0KyJweCIsdGhpcy5kb20uYm94LnN0eWxlLndpZHRoPWErInB4IixyKXtjYXNlImxlZnQiOnRoaXMub3B0aW9ucy5ydGw/dGhpcy5kb20uY29udGVudC5zdHlsZS5yaWdodD0iMCI6dGhpcy5kb20uY29udGVudC5zdHlsZS5sZWZ0PSIwIjticmVhaztjYXNlInJpZ2h0Ijp0aGlzLm9wdGlvbnMucnRsP3RoaXMuZG9tLmNvbnRlbnQuc3R5bGUucmlnaHQ9TWF0aC5tYXgoYS1pLDApKyJweCI6dGhpcy5kb20uY29udGVudC5zdHlsZS5sZWZ0PU1hdGgubWF4KGEtaSwwKSsicHgiO2JyZWFrO2Nhc2UiY2VudGVyIjp0aGlzLm9wdGlvbnMucnRsP3RoaXMuZG9tLmNvbnRlbnQuc3R5bGUucmlnaHQ9TWF0aC5tYXgoKGEtaSkvMiwwKSsicHgiOnRoaXMuZG9tLmNvbnRlbnQuc3R5bGUubGVmdD1NYXRoLm1heCgoYS1pKS8yLDApKyJweCI7YnJlYWs7ZGVmYXVsdDplPXRoaXMub3ZlcmZsb3c/cz4wP01hdGgubWF4KC1uLDApOi1pOm48MD8tbjowLHRoaXMub3B0aW9ucy5ydGw/dGhpcy5kb20uY29udGVudC5zdHlsZS5yaWdodD1lKyJweCI6KHRoaXMuZG9tLmNvbnRlbnQuc3R5bGUubGVmdD1lKyJweCIsdGhpcy5kb20uY29udGVudC5zdHlsZS53aWR0aD0iY2FsYygxMDAlIC0gIitlKyJweCkiKX19LG8ucHJvdG90eXBlLnJlcG9zaXRpb25ZPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLm9yaWVudGF0aW9uLml0ZW0sZT10aGlzLmRvbS5ib3g7ZS5zdHlsZS50b3A9InRvcCI9PXQ/dGhpcy50b3ArInB4Ijp0aGlzLnBhcmVudC5oZWlnaHQtdGhpcy50b3AtdGhpcy5oZWlnaHQrInB4In0sby5wcm90b3R5cGUuX3JlcGFpbnREcmFnTGVmdD1mdW5jdGlvbigpe2lmKCh0aGlzLnNlbGVjdGVkfHx0aGlzLm9wdGlvbnMuaXRlbXNBbHdheXNEcmFnZ2FibGUucmFuZ2UpJiZ0aGlzLm9wdGlvbnMuZWRpdGFibGUudXBkYXRlVGltZSYmIXRoaXMuZG9tLmRyYWdMZWZ0KXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LmNsYXNzTmFtZT0idmlzLWRyYWctbGVmdCIsdC5kcmFnTGVmdEl0ZW09dGhpcyx0aGlzLmRvbS5ib3guYXBwZW5kQ2hpbGQodCksdGhpcy5kb20uZHJhZ0xlZnQ9dH1lbHNlIHRoaXMuc2VsZWN0ZWR8fHRoaXMub3B0aW9ucy5pdGVtc0Fsd2F5c0RyYWdnYWJsZS5yYW5nZXx8IXRoaXMuZG9tLmRyYWdMZWZ0fHwodGhpcy5kb20uZHJhZ0xlZnQucGFyZW50Tm9kZSYmdGhpcy5kb20uZHJhZ0xlZnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbS5kcmFnTGVmdCksdGhpcy5kb20uZHJhZ0xlZnQ9bnVsbCl9LG8ucHJvdG90eXBlLl9yZXBhaW50RHJhZ1JpZ2h0PWZ1bmN0aW9uKCl7aWYoKHRoaXMuc2VsZWN0ZWR8fHRoaXMub3B0aW9ucy5pdGVtc0Fsd2F5c0RyYWdnYWJsZS5yYW5nZSkmJnRoaXMub3B0aW9ucy5lZGl0YWJsZS51cGRhdGVUaW1lJiYhdGhpcy5kb20uZHJhZ1JpZ2h0KXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LmNsYXNzTmFtZT0idmlzLWRyYWctcmlnaHQiLHQuZHJhZ1JpZ2h0SXRlbT10aGlzLHRoaXMuZG9tLmJveC5hcHBlbmRDaGlsZCh0KSx0aGlzLmRvbS5kcmFnUmlnaHQ9dH1lbHNlIHRoaXMuc2VsZWN0ZWR8fHRoaXMub3B0aW9ucy5pdGVtc0Fsd2F5c0RyYWdnYWJsZS5yYW5nZXx8IXRoaXMuZG9tLmRyYWdSaWdodHx8KHRoaXMuZG9tLmRyYWdSaWdodC5wYXJlbnROb2RlJiZ0aGlzLmRvbS5kcmFnUmlnaHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbS5kcmFnUmlnaHQpLHRoaXMuZG9tLmRyYWdSaWdodD1udWxsKX0sdC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1mdW5jdGlvbiBuKHQsZSxpKXt0aGlzLmlkPW51bGwsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmRhdGE9dCx0aGlzLmRvbT1udWxsLHRoaXMuY29udmVyc2lvbj1lfHx7fSx0aGlzLm9wdGlvbnM9aXx8e30sdGhpcy5zZWxlY3RlZD0hMSx0aGlzLmRpc3BsYXllZD0hMSx0aGlzLmdyb3VwU2hvd2luZz0hMCx0aGlzLmRpcnR5PSEwLHRoaXMudG9wPW51bGwsdGhpcy5yaWdodD1udWxsLHRoaXMubGVmdD1udWxsLHRoaXMud2lkdGg9bnVsbCx0aGlzLmhlaWdodD1udWxsLHRoaXMuZWRpdGFibGU9bnVsbCx0aGlzLl91cGRhdGVFZGl0U3RhdHVzKCl9dmFyIHM9aSg2Mikscj1vKHMpLGE9aSg1OCksaD1vKGEpLGQ9aSgxMTMpLGw9aSgxKSx1PWkoODIpO24ucHJvdG90eXBlLnN0YWNrPSEwLG4ucHJvdG90eXBlLnNlbGVjdD1mdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWQ9ITAsdGhpcy5kaXJ0eT0hMCx0aGlzLmRpc3BsYXllZCYmdGhpcy5yZWRyYXcoKX0sbi5wcm90b3R5cGUudW5zZWxlY3Q9ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkPSExLHRoaXMuZGlydHk9ITAsdGhpcy5kaXNwbGF5ZWQmJnRoaXMucmVkcmF3KCl9LG4ucHJvdG90eXBlLnNldERhdGE9ZnVuY3Rpb24odCl7dm9pZCAwIT10Lmdyb3VwJiZ0aGlzLmRhdGEuZ3JvdXAhPXQuZ3JvdXAmJm51bGwhPXRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5pdGVtU2V0Ll9tb3ZlVG9Hcm91cCh0aGlzLHQuZ3JvdXApLHRoaXMucGFyZW50LnN0YWNrRGlydHk9ITAsdm9pZCAwIT10LnN1Ymdyb3VwJiZ0aGlzLmRhdGEuc3ViZ3JvdXAhPXQuc3ViZ3JvdXAmJm51bGwhPXRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5jaGFuZ2VTdWJncm91cCh0aGlzLHRoaXMuZGF0YS5zdWJncm91cCx0LnN1Ymdyb3VwKSx0aGlzLmRhdGE9dCx0aGlzLl91cGRhdGVFZGl0U3RhdHVzKCksdGhpcy5kaXJ0eT0hMCx0aGlzLmRpc3BsYXllZCYmdGhpcy5yZWRyYXcoKX0sbi5wcm90b3R5cGUuc2V0UGFyZW50PWZ1bmN0aW9uKHQpe3RoaXMuZGlzcGxheWVkPyh0aGlzLmhpZGUoKSx0aGlzLnBhcmVudD10LHRoaXMucGFyZW50JiZ0aGlzLnNob3coKSk6dGhpcy5wYXJlbnQ9dH0sbi5wcm90b3R5cGUuaXNWaXNpYmxlPWZ1bmN0aW9uKHQpe3JldHVybiExfSxuLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7cmV0dXJuITF9LG4ucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sbi5wcm90b3R5cGUucmVkcmF3PWZ1bmN0aW9uKCl7fSxuLnByb3RvdHlwZS5yZXBvc2l0aW9uWD1mdW5jdGlvbigpe30sbi5wcm90b3R5cGUucmVwb3NpdGlvblk9ZnVuY3Rpb24oKXt9LG4ucHJvdG90eXBlLl9yZXBhaW50RHJhZ0NlbnRlcj1mdW5jdGlvbigpe2lmKHRoaXMuc2VsZWN0ZWQmJnRoaXMub3B0aW9ucy5lZGl0YWJsZS51cGRhdGVUaW1lJiYhdGhpcy5kb20uZHJhZ0NlbnRlcil7dmFyIHQ9dGhpcyxlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NOYW1lPSJ2aXMtZHJhZy1jZW50ZXIiLGUuZHJhZ0NlbnRlckl0ZW09dGhpczt2YXIgaT1uZXcgZChlKTtpLm9uKCJ0YXAiLGZ1bmN0aW9uKGUpe3QucGFyZW50Lml0ZW1TZXQuYm9keS5lbWl0dGVyLmVtaXQoImNsaWNrIix7ZXZlbnQ6ZSxpdGVtOnQuaWR9KX0pLGkub24oImRvdWJsZXRhcCIsZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKSx0LnBhcmVudC5pdGVtU2V0Ll9vblVwZGF0ZUl0ZW0odCksdC5wYXJlbnQuaXRlbVNldC5ib2R5LmVtaXR0ZXIuZW1pdCgiZG91YmxlQ2xpY2siLHtldmVudDplLGl0ZW06dC5pZH0pfSksdGhpcy5kb20uYm94P3RoaXMuZG9tLmRyYWdMZWZ0P3RoaXMuZG9tLmJveC5pbnNlcnRCZWZvcmUoZSx0aGlzLmRvbS5kcmFnTGVmdCk6dGhpcy5kb20uYm94LmFwcGVuZENoaWxkKGUpOnRoaXMuZG9tLnBvaW50JiZ0aGlzLmRvbS5wb2ludC5hcHBlbmRDaGlsZChlKSx0aGlzLmRvbS5kcmFnQ2VudGVyPWV9ZWxzZSF0aGlzLnNlbGVjdGVkJiZ0aGlzLmRvbS5kcmFnQ2VudGVyJiYodGhpcy5kb20uZHJhZ0NlbnRlci5wYXJlbnROb2RlJiZ0aGlzLmRvbS5kcmFnQ2VudGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kb20uZHJhZ0NlbnRlciksdGhpcy5kb20uZHJhZ0NlbnRlcj1udWxsKX0sbi5wcm90b3R5cGUuX3JlcGFpbnREZWxldGVCdXR0b249ZnVuY3Rpb24odCl7dmFyIGU9KHRoaXMub3B0aW9ucy5lZGl0YWJsZS5vdmVycmlkZUl0ZW1zfHxudWxsPT10aGlzLmVkaXRhYmxlKSYmdGhpcy5vcHRpb25zLmVkaXRhYmxlLnJlbW92ZXx8IXRoaXMub3B0aW9ucy5lZGl0YWJsZS5vdmVycmlkZUl0ZW1zJiZudWxsIT10aGlzLmVkaXRhYmxlJiZ0aGlzLmVkaXRhYmxlLnJlbW92ZTtpZih0aGlzLnNlbGVjdGVkJiZlJiYhdGhpcy5kb20uZGVsZXRlQnV0dG9uKXt2YXIgaT10aGlzLG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dGhpcy5vcHRpb25zLnJ0bD9vLmNsYXNzTmFtZT0idmlzLWRlbGV0ZS1ydGwiOm8uY2xhc3NOYW1lPSJ2aXMtZGVsZXRlIixvLnRpdGxlPSJEZWxldGUgdGhpcyBpdGVtIixuZXcgZChvKS5vbigidGFwIixmdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpLGkucGFyZW50LnJlbW92ZUZyb21EYXRhU2V0KGkpfSksdC5hcHBlbmRDaGlsZChvKSx0aGlzLmRvbS5kZWxldGVCdXR0b249b31lbHNlIXRoaXMuc2VsZWN0ZWQmJnRoaXMuZG9tLmRlbGV0ZUJ1dHRvbiYmKHRoaXMuZG9tLmRlbGV0ZUJ1dHRvbi5wYXJlbnROb2RlJiZ0aGlzLmRvbS5kZWxldGVCdXR0b24ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbS5kZWxldGVCdXR0b24pLHRoaXMuZG9tLmRlbGV0ZUJ1dHRvbj1udWxsKX0sbi5wcm90b3R5cGUuX3JlcGFpbnRPbkl0ZW1VcGRhdGVUaW1lVG9vbHRpcD1mdW5jdGlvbih0KXtpZih0aGlzLm9wdGlvbnMudG9vbHRpcE9uSXRlbVVwZGF0ZVRpbWUpe3ZhciBlPSh0aGlzLm9wdGlvbnMuZWRpdGFibGUudXBkYXRlVGltZXx8ITA9PT10aGlzLmRhdGEuZWRpdGFibGUpJiYhMSE9PXRoaXMuZGF0YS5lZGl0YWJsZTtpZih0aGlzLnNlbGVjdGVkJiZlJiYhdGhpcy5kb20ub25JdGVtVXBkYXRlVGltZVRvb2x0aXApe3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2kuY2xhc3NOYW1lPSJ2aXMtb25VcGRhdGVUaW1lLXRvb2x0aXAiLHQuYXBwZW5kQ2hpbGQoaSksdGhpcy5kb20ub25JdGVtVXBkYXRlVGltZVRvb2x0aXA9aX1lbHNlIXRoaXMuc2VsZWN0ZWQmJnRoaXMuZG9tLm9uSXRlbVVwZGF0ZVRpbWVUb29sdGlwJiYodGhpcy5kb20ub25JdGVtVXBkYXRlVGltZVRvb2x0aXAucGFyZW50Tm9kZSYmdGhpcy5kb20ub25JdGVtVXBkYXRlVGltZVRvb2x0aXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbS5vbkl0ZW1VcGRhdGVUaW1lVG9vbHRpcCksdGhpcy5kb20ub25JdGVtVXBkYXRlVGltZVRvb2x0aXA9bnVsbCk7aWYodGhpcy5kb20ub25JdGVtVXBkYXRlVGltZVRvb2x0aXApe3RoaXMuZG9tLm9uSXRlbVVwZGF0ZVRpbWVUb29sdGlwLnN0eWxlLnZpc2liaWxpdHk9dGhpcy5wYXJlbnQuaXRlbVNldC50b3VjaFBhcmFtcy5pdGVtSXNEcmFnZ2luZz8idmlzaWJsZSI6ImhpZGRlbiIsdGhpcy5vcHRpb25zLnJ0bD90aGlzLmRvbS5vbkl0ZW1VcGRhdGVUaW1lVG9vbHRpcC5zdHlsZS5yaWdodD10aGlzLmRvbS5jb250ZW50LnN0eWxlLnJpZ2h0OnRoaXMuZG9tLm9uSXRlbVVwZGF0ZVRpbWVUb29sdGlwLnN0eWxlLmxlZnQ9dGhpcy5kb20uY29udGVudC5zdHlsZS5sZWZ0O3ZhciBvLG49dGhpcy5wYXJlbnQuaXRlbVNldC5ib2R5LmRvbVByb3BzLnNjcm9sbFRvcDtvPSJ0b3AiPT10aGlzLm9wdGlvbnMub3JpZW50YXRpb24uaXRlbT90aGlzLnRvcDp0aGlzLnBhcmVudC5oZWlnaHQtdGhpcy50b3AtdGhpcy5oZWlnaHQ7byt0aGlzLnBhcmVudC50b3AtNTA8LW4/KHRoaXMuZG9tLm9uSXRlbVVwZGF0ZVRpbWVUb29sdGlwLnN0eWxlLmJvdHRvbT0iIix0aGlzLmRvbS5vbkl0ZW1VcGRhdGVUaW1lVG9vbHRpcC5zdHlsZS50b3A9dGhpcy5oZWlnaHQrMisicHgiKToodGhpcy5kb20ub25JdGVtVXBkYXRlVGltZVRvb2x0aXAuc3R5bGUudG9wPSIiLHRoaXMuZG9tLm9uSXRlbVVwZGF0ZVRpbWVUb29sdGlwLnN0eWxlLmJvdHRvbT10aGlzLmhlaWdodCsyKyJweCIpO3ZhciBzLHI7dGhpcy5vcHRpb25zLnRvb2x0aXBPbkl0ZW1VcGRhdGVUaW1lJiZ0aGlzLm9wdGlvbnMudG9vbHRpcE9uSXRlbVVwZGF0ZVRpbWUudGVtcGxhdGU/KHI9dGhpcy5vcHRpb25zLnRvb2x0aXBPbkl0ZW1VcGRhdGVUaW1lLnRlbXBsYXRlLmJpbmQodGhpcykscz1yKHRoaXMuZGF0YSkpOihzPSJzdGFydDogIit1KHRoaXMuZGF0YS5zdGFydCkuZm9ybWF0KCJNTS9ERC9ZWVlZIGhoOm1tIiksdGhpcy5kYXRhLmVuZCYmKHMrPSI8YnI+IGVuZDogIit1KHRoaXMuZGF0YS5lbmQpLmZvcm1hdCgiTU0vREQvWVlZWSBoaDptbSIpKSksdGhpcy5kb20ub25JdGVtVXBkYXRlVGltZVRvb2x0aXAuaW5uZXJIVE1MPXN9fX0sbi5wcm90b3R5cGUuX3VwZGF0ZUNvbnRlbnRzPWZ1bmN0aW9uKHQpe3ZhciBlLGksbyxuLHM9dGhpcy5wYXJlbnQuaXRlbVNldC5pdGVtc0RhdGEuZ2V0KHRoaXMuaWQpLHI9dGhpcy5kb20uYm94fHx0aGlzLmRvbS5wb2ludCxhPXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgidmlzLWl0ZW0tdmlzaWJsZS1mcmFtZSIpWzBdO2lmKHRoaXMub3B0aW9ucy52aXNpYmxlRnJhbWVUZW1wbGF0ZT8obj10aGlzLm9wdGlvbnMudmlzaWJsZUZyYW1lVGVtcGxhdGUuYmluZCh0aGlzKSxvPW4ocyxyKSk6bz0iIixhKWlmKG8gaW5zdGFuY2VvZiBPYmplY3QmJiEobyBpbnN0YW5jZW9mIEVsZW1lbnQpKW4ocyxhKTtlbHNle3ZhciBoPXRoaXMuX2NvbnRlbnRUb1N0cmluZyh0aGlzLml0ZW1WaXNpYmxlRnJhbWVDb250ZW50KSE9PXRoaXMuX2NvbnRlbnRUb1N0cmluZyhvKTtpZihoKXtpZihvIGluc3RhbmNlb2YgRWxlbWVudClhLmlubmVySFRNTD0iIixhLmFwcGVuZENoaWxkKG8pO2Vsc2UgaWYodm9pZCAwIT1vKWEuaW5uZXJIVE1MPW87ZWxzZSBpZigiYmFja2dyb3VuZCIhPXRoaXMuZGF0YS50eXBlfHx2b2lkIDAhPT10aGlzLmRhdGEuY29udGVudCl0aHJvdyBuZXcgRXJyb3IoJ1Byb3BlcnR5ICJjb250ZW50IiBtaXNzaW5nIGluIGl0ZW0gJyt0aGlzLmlkKTt0aGlzLml0ZW1WaXNpYmxlRnJhbWVDb250ZW50PW99fWlmKHRoaXMub3B0aW9ucy50ZW1wbGF0ZT8oaT10aGlzLm9wdGlvbnMudGVtcGxhdGUuYmluZCh0aGlzKSxlPWkocyx0LHRoaXMuZGF0YSkpOmU9dGhpcy5kYXRhLmNvbnRlbnQsZSBpbnN0YW5jZW9mIE9iamVjdCYmIShlIGluc3RhbmNlb2YgRWxlbWVudCkpaShzLHQpO2Vsc2V7dmFyIGg9dGhpcy5fY29udGVudFRvU3RyaW5nKHRoaXMuY29udGVudCkhPT10aGlzLl9jb250ZW50VG9TdHJpbmcoZSk7aWYoaCl7aWYoZSBpbnN0YW5jZW9mIEVsZW1lbnQpdC5pbm5lckhUTUw9IiIsdC5hcHBlbmRDaGlsZChlKTtlbHNlIGlmKHZvaWQgMCE9ZSl0LmlubmVySFRNTD1lO2Vsc2UgaWYoImJhY2tncm91bmQiIT10aGlzLmRhdGEudHlwZXx8dm9pZCAwIT09dGhpcy5kYXRhLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCdQcm9wZXJ0eSAiY29udGVudCIgbWlzc2luZyBpbiBpdGVtICcrdGhpcy5pZCk7dGhpcy5jb250ZW50PWV9fX0sbi5wcm90b3R5cGUuX3VwZGF0ZURhdGFBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQpe2lmKHRoaXMub3B0aW9ucy5kYXRhQXR0cmlidXRlcyYmdGhpcy5vcHRpb25zLmRhdGFBdHRyaWJ1dGVzLmxlbmd0aD4wKXt2YXIgZT1bXTtpZihBcnJheS5pc0FycmF5KHRoaXMub3B0aW9ucy5kYXRhQXR0cmlidXRlcykpZT10aGlzLm9wdGlvbnMuZGF0YUF0dHJpYnV0ZXM7ZWxzZXtpZigiYWxsIiE9dGhpcy5vcHRpb25zLmRhdGFBdHRyaWJ1dGVzKXJldHVybjtlPSgwLGguZGVmYXVsdCkodGhpcy5kYXRhKX1mb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89ZVtpXSxuPXRoaXMuZGF0YVtvXTtudWxsIT1uP3Quc2V0QXR0cmlidXRlKCJkYXRhLSIrbyxuKTp0LnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS0iK28pfX19LG4ucHJvdG90eXBlLl91cGRhdGVTdHlsZT1mdW5jdGlvbih0KXt0aGlzLnN0eWxlJiYobC5yZW1vdmVDc3NUZXh0KHQsdGhpcy5zdHlsZSksdGhpcy5zdHlsZT1udWxsKSx0aGlzLmRhdGEuc3R5bGUmJihsLmFkZENzc1RleHQodCx0aGlzLmRhdGEuc3R5bGUpLHRoaXMuc3R5bGU9dGhpcy5kYXRhLnN0eWxlKX0sbi5wcm90b3R5cGUuX2NvbnRlbnRUb1N0cmluZz1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dDp0JiYib3V0ZXJIVE1MImluIHQ/dC5vdXRlckhUTUw6dH0sbi5wcm90b3R5cGUuX3VwZGF0ZUVkaXRTdGF0dXM9ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMmJigiYm9vbGVhbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuZWRpdGFibGU/dGhpcy5lZGl0YWJsZT17dXBkYXRlVGltZTp0aGlzLm9wdGlvbnMuZWRpdGFibGUsdXBkYXRlR3JvdXA6dGhpcy5vcHRpb25zLmVkaXRhYmxlLHJlbW92ZTp0aGlzLm9wdGlvbnMuZWRpdGFibGV9OiJvYmplY3QiPT09KDAsci5kZWZhdWx0KSh0aGlzLm9wdGlvbnMuZWRpdGFibGUpJiYodGhpcy5lZGl0YWJsZT17fSxsLnNlbGVjdGl2ZUV4dGVuZChbInVwZGF0ZVRpbWUiLCJ1cGRhdGVHcm91cCIsInJlbW92ZSJdLHRoaXMuZWRpdGFibGUsdGhpcy5vcHRpb25zLmVkaXRhYmxlKSkpLHRoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLmVkaXRhYmxlJiYhMD09PXRoaXMub3B0aW9ucy5lZGl0YWJsZS5vdmVycmlkZUl0ZW1zfHx0aGlzLmRhdGEmJigiYm9vbGVhbiI9PXR5cGVvZiB0aGlzLmRhdGEuZWRpdGFibGU/dGhpcy5lZGl0YWJsZT17dXBkYXRlVGltZTp0aGlzLmRhdGEuZWRpdGFibGUsdXBkYXRlR3JvdXA6dGhpcy5kYXRhLmVkaXRhYmxlLHJlbW92ZTp0aGlzLmRhdGEuZWRpdGFibGV9OiJvYmplY3QiPT09KDAsci5kZWZhdWx0KSh0aGlzLmRhdGEuZWRpdGFibGUpJiYodGhpcy5lZGl0YWJsZT17fSxsLnNlbGVjdGl2ZUV4dGVuZChbInVwZGF0ZVRpbWUiLCJ1cGRhdGVHcm91cCIsInJlbW92ZSJdLHRoaXMuZWRpdGFibGUsdGhpcy5kYXRhLmVkaXRhYmxlKSkpfSxuLnByb3RvdHlwZS5nZXRXaWR0aExlZnQ9ZnVuY3Rpb24oKXtyZXR1cm4gMH0sbi5wcm90b3R5cGUuZ2V0V2lkdGhSaWdodD1mdW5jdGlvbigpe3JldHVybiAwfSxuLnByb3RvdHlwZS5nZXRUaXRsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEudGl0bGV9LHQuZXhwb3J0cz1ufSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUsaSl7ci5jYWxsKHRoaXMsdCxlLGkpLHRoaXMud2lkdGg9MCx0aGlzLmhlaWdodD0wLHRoaXMudG9wPTAsdGhpcy5sZWZ0PTB9dmFyIG49aSg1NSkscz1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19KG4pLHI9KGkoMSksaSgxMjYpKTtvLnByb3RvdHlwZT0oMCxzLmRlZmF1bHQpKHIucHJvdG90eXBlKSxvLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24odCxlLGkpe3RoaXMudmlzaWJsZUl0ZW1zPXRoaXMuX3VwZGF0ZUl0ZW1zSW5SYW5nZSh0aGlzLm9yZGVyZWRJdGVtcyx0aGlzLnZpc2libGVJdGVtcyx0KSx0aGlzLndpZHRoPXRoaXMuZG9tLmJhY2tncm91bmQub2Zmc2V0V2lkdGgsdGhpcy5kb20uYmFja2dyb3VuZC5zdHlsZS5oZWlnaHQ9IjAiO2Zvcih2YXIgbz0wLG49dGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoO288bjtvKyspe3RoaXMudmlzaWJsZUl0ZW1zW29dLnJlcG9zaXRpb25ZKGUpfXJldHVybiExfSxvLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dGhpcy5kb20uYmFja2dyb3VuZC5wYXJlbnROb2RlfHx0aGlzLml0ZW1TZXQuZG9tLmJhY2tncm91bmQuYXBwZW5kQ2hpbGQodGhpcy5kb20uYmFja2dyb3VuZCl9LHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUsaSl7aWYodGhpcy5wcm9wcz17ZG90Ont3aWR0aDowLGhlaWdodDowfSxsaW5lOnt3aWR0aDowLGhlaWdodDowfX0sdGhpcy5vcHRpb25zPWksdCYmdm9pZCAwPT10LnN0YXJ0KXRocm93IG5ldyBFcnJvcignUHJvcGVydHkgInN0YXJ0IiBtaXNzaW5nIGluIGl0ZW0gJyt0KTtuLmNhbGwodGhpcyx0LGUsaSl9dmFyIG49aSgxMjkpO2koMSk7by5wcm90b3R5cGU9bmV3IG4obnVsbCxudWxsLG51bGwpLG8ucHJvdG90eXBlLmlzVmlzaWJsZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlvbnMuYWxpZ24saT10aGlzLndpZHRoKnQuZ2V0TWlsbGlzZWNvbmRzUGVyUGl4ZWwoKTtyZXR1cm4icmlnaHQiPT1lP3RoaXMuZGF0YS5zdGFydC5nZXRUaW1lKCk+dC5zdGFydCYmdGhpcy5kYXRhLnN0YXJ0LmdldFRpbWUoKS1pPHQuZW5kOiJsZWZ0Ij09ZT90aGlzLmRhdGEuc3RhcnQuZ2V0VGltZSgpK2k+dC5zdGFydCYmdGhpcy5kYXRhLnN0YXJ0LmdldFRpbWUoKTx0LmVuZDp0aGlzLmRhdGEuc3RhcnQuZ2V0VGltZSgpK2kvMj50LnN0YXJ0JiZ0aGlzLmRhdGEuc3RhcnQuZ2V0VGltZSgpLWkvMjx0LmVuZH0sby5wcm90b3R5cGUucmVkcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kb207aWYodHx8KHRoaXMuZG9tPXt9LHQ9dGhpcy5kb20sdC5ib3g9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksdC5jb250ZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLHQuY29udGVudC5jbGFzc05hbWU9InZpcy1pdGVtLWNvbnRlbnQiLHQuYm94LmFwcGVuZENoaWxkKHQuY29udGVudCksdC5saW5lPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLHQubGluZS5jbGFzc05hbWU9InZpcy1saW5lIix0LmRvdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSx0LmRvdC5jbGFzc05hbWU9InZpcy1kb3QiLHQuYm94WyJ0aW1lbGluZS1pdGVtIl09dGhpcyx0aGlzLmRpcnR5PSEwKSwhdGhpcy5wYXJlbnQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVkcmF3IGl0ZW06IG5vIHBhcmVudCBhdHRhY2hlZCIpO2lmKCF0LmJveC5wYXJlbnROb2RlKXt2YXIgZT10aGlzLnBhcmVudC5kb20uZm9yZWdyb3VuZDtpZighZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWRyYXcgaXRlbTogcGFyZW50IGhhcyBubyBmb3JlZ3JvdW5kIGNvbnRhaW5lciBlbGVtZW50Iik7ZS5hcHBlbmRDaGlsZCh0LmJveCl9aWYoIXQubGluZS5wYXJlbnROb2RlKXt2YXIgaT10aGlzLnBhcmVudC5kb20uYmFja2dyb3VuZDtpZighaSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWRyYXcgaXRlbTogcGFyZW50IGhhcyBubyBiYWNrZ3JvdW5kIGNvbnRhaW5lciBlbGVtZW50Iik7aS5hcHBlbmRDaGlsZCh0LmxpbmUpfWlmKCF0LmRvdC5wYXJlbnROb2RlKXt2YXIgbz10aGlzLnBhcmVudC5kb20uYXhpcztpZighaSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWRyYXcgaXRlbTogcGFyZW50IGhhcyBubyBheGlzIGNvbnRhaW5lciBlbGVtZW50Iik7by5hcHBlbmRDaGlsZCh0LmRvdCl9aWYodGhpcy5kaXNwbGF5ZWQ9ITAsdGhpcy5kaXJ0eSl7dGhpcy5fdXBkYXRlQ29udGVudHModGhpcy5kb20uY29udGVudCksdGhpcy5fdXBkYXRlRGF0YUF0dHJpYnV0ZXModGhpcy5kb20uYm94KSx0aGlzLl91cGRhdGVTdHlsZSh0aGlzLmRvbS5ib3gpO3ZhciBuPXRoaXMuZWRpdGFibGUudXBkYXRlVGltZXx8dGhpcy5lZGl0YWJsZS51cGRhdGVHcm91cCxzPSh0aGlzLmRhdGEuY2xhc3NOYW1lPyIgIit0aGlzLmRhdGEuY2xhc3NOYW1lOiIiKSsodGhpcy5zZWxlY3RlZD8iIHZpcy1zZWxlY3RlZCI6IiIpKyhuPyIgdmlzLWVkaXRhYmxlIjoiIHZpcy1yZWFkb25seSIpO3QuYm94LmNsYXNzTmFtZT0idmlzLWl0ZW0gdmlzLWJveCIrcyx0LmxpbmUuY2xhc3NOYW1lPSJ2aXMtaXRlbSB2aXMtbGluZSIrcyx0LmRvdC5jbGFzc05hbWU9InZpcy1pdGVtIHZpcy1kb3QiK3M7dmFyIHI9dC5ib3guc3R5bGUucmlnaHQsYT10LmJveC5zdHlsZS5sZWZ0O3RoaXMub3B0aW9ucy5ydGw/dC5ib3guc3R5bGUucmlnaHQ9IjBweCI6dC5ib3guc3R5bGUubGVmdD0iMHB4Iix0aGlzLnByb3BzLmRvdC5oZWlnaHQ9dC5kb3Qub2Zmc2V0SGVpZ2h0LHRoaXMucHJvcHMuZG90LndpZHRoPXQuZG90Lm9mZnNldFdpZHRoLHRoaXMucHJvcHMubGluZS53aWR0aD10LmxpbmUub2Zmc2V0V2lkdGgsdGhpcy53aWR0aD10LmJveC5vZmZzZXRXaWR0aCx0aGlzLmhlaWdodD10LmJveC5vZmZzZXRIZWlnaHQsdGhpcy5vcHRpb25zLnJ0bD90LmJveC5zdHlsZS5yaWdodD1yOnQuYm94LnN0eWxlLmxlZnQ9YSx0aGlzLmRpcnR5PSExfXRoaXMuX3JlcGFpbnRPbkl0ZW1VcGRhdGVUaW1lVG9vbHRpcCh0LmJveCksdGhpcy5fcmVwYWludERyYWdDZW50ZXIoKSx0aGlzLl9yZXBhaW50RGVsZXRlQnV0dG9uKHQuYm94KX0sby5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe3RoaXMuZGlzcGxheWVkfHx0aGlzLnJlZHJhdygpfSxvLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKCl7aWYodGhpcy5kaXNwbGF5ZWQpe3ZhciB0PXRoaXMuZG9tO3QuYm94LnBhcmVudE5vZGUmJnQuYm94LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodC5ib3gpLHQubGluZS5wYXJlbnROb2RlJiZ0LmxpbmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0LmxpbmUpLHQuZG90LnBhcmVudE5vZGUmJnQuZG90LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodC5kb3QpLHRoaXMuZGlzcGxheWVkPSExfX0sby5wcm90b3R5cGUucmVwb3NpdGlvblg9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnZlcnNpb24udG9TY3JlZW4odGhpcy5kYXRhLnN0YXJ0KSxlPXRoaXMub3B0aW9ucy5hbGlnbjsicmlnaHQiPT1lP3RoaXMub3B0aW9ucy5ydGw/KHRoaXMucmlnaHQ9dC10aGlzLndpZHRoLHRoaXMuZG9tLmJveC5zdHlsZS5yaWdodD10aGlzLnJpZ2h0KyJweCIsdGhpcy5kb20ubGluZS5zdHlsZS5yaWdodD10LXRoaXMucHJvcHMubGluZS53aWR0aCsicHgiLHRoaXMuZG9tLmRvdC5zdHlsZS5yaWdodD10LXRoaXMucHJvcHMubGluZS53aWR0aC8yLXRoaXMucHJvcHMuZG90LndpZHRoLzIrInB4Iik6KHRoaXMubGVmdD10LXRoaXMud2lkdGgsdGhpcy5kb20uYm94LnN0eWxlLmxlZnQ9dGhpcy5sZWZ0KyJweCIsdGhpcy5kb20ubGluZS5zdHlsZS5sZWZ0PXQtdGhpcy5wcm9wcy5saW5lLndpZHRoKyJweCIsdGhpcy5kb20uZG90LnN0eWxlLmxlZnQ9dC10aGlzLnByb3BzLmxpbmUud2lkdGgvMi10aGlzLnByb3BzLmRvdC53aWR0aC8yKyJweCIpOiJsZWZ0Ij09ZT90aGlzLm9wdGlvbnMucnRsPyh0aGlzLnJpZ2h0PXQsdGhpcy5kb20uYm94LnN0eWxlLnJpZ2h0PXRoaXMucmlnaHQrInB4Iix0aGlzLmRvbS5saW5lLnN0eWxlLnJpZ2h0PXQrInB4Iix0aGlzLmRvbS5kb3Quc3R5bGUucmlnaHQ9dCt0aGlzLnByb3BzLmxpbmUud2lkdGgvMi10aGlzLnByb3BzLmRvdC53aWR0aC8yKyJweCIpOih0aGlzLmxlZnQ9dCx0aGlzLmRvbS5ib3guc3R5bGUubGVmdD10aGlzLmxlZnQrInB4Iix0aGlzLmRvbS5saW5lLnN0eWxlLmxlZnQ9dCsicHgiLHRoaXMuZG9tLmRvdC5zdHlsZS5sZWZ0PXQrdGhpcy5wcm9wcy5saW5lLndpZHRoLzItdGhpcy5wcm9wcy5kb3Qud2lkdGgvMisicHgiKTp0aGlzLm9wdGlvbnMucnRsPyh0aGlzLnJpZ2h0PXQtdGhpcy53aWR0aC8yLHRoaXMuZG9tLmJveC5zdHlsZS5yaWdodD10aGlzLnJpZ2h0KyJweCIsdGhpcy5kb20ubGluZS5zdHlsZS5yaWdodD10LXRoaXMucHJvcHMubGluZS53aWR0aCsicHgiLHRoaXMuZG9tLmRvdC5zdHlsZS5yaWdodD10LXRoaXMucHJvcHMuZG90LndpZHRoLzIrInB4Iik6KHRoaXMubGVmdD10LXRoaXMud2lkdGgvMix0aGlzLmRvbS5ib3guc3R5bGUubGVmdD10aGlzLmxlZnQrInB4Iix0aGlzLmRvbS5saW5lLnN0eWxlLmxlZnQ9dC10aGlzLnByb3BzLmxpbmUud2lkdGgvMisicHgiLHRoaXMuZG9tLmRvdC5zdHlsZS5sZWZ0PXQtdGhpcy5wcm9wcy5kb3Qud2lkdGgvMisicHgiKX0sby5wcm90b3R5cGUucmVwb3NpdGlvblk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMub3JpZW50YXRpb24uaXRlbSxlPXRoaXMuZG9tLmJveCxpPXRoaXMuZG9tLmxpbmUsbz10aGlzLmRvbS5kb3Q7aWYoInRvcCI9PXQpZS5zdHlsZS50b3A9KHRoaXMudG9wfHwwKSsicHgiLGkuc3R5bGUudG9wPSIwIixpLnN0eWxlLmhlaWdodD10aGlzLnBhcmVudC50b3ArdGhpcy50b3ArMSsicHgiLGkuc3R5bGUuYm90dG9tPSIiO2Vsc2V7dmFyIG49dGhpcy5wYXJlbnQuaXRlbVNldC5wcm9wcy5oZWlnaHQscz1uLXRoaXMucGFyZW50LnRvcC10aGlzLnBhcmVudC5oZWlnaHQrdGhpcy50b3A7ZS5zdHlsZS50b3A9KHRoaXMucGFyZW50LmhlaWdodC10aGlzLnRvcC10aGlzLmhlaWdodHx8MCkrInB4IixpLnN0eWxlLnRvcD1uLXMrInB4IixpLnN0eWxlLmJvdHRvbT0iMCJ9by5zdHlsZS50b3A9LXRoaXMucHJvcHMuZG90LmhlaWdodC8yKyJweCJ9LG8ucHJvdG90eXBlLmdldFdpZHRoTGVmdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLndpZHRoLzJ9LG8ucHJvdG90eXBlLmdldFdpZHRoUmlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53aWR0aC8yfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlLGkpe2lmKHRoaXMucHJvcHM9e2RvdDp7dG9wOjAsd2lkdGg6MCxoZWlnaHQ6MH0sY29udGVudDp7aGVpZ2h0OjAsbWFyZ2luTGVmdDowLG1hcmdpblJpZ2h0OjB9fSx0aGlzLm9wdGlvbnM9aSx0JiZ2b2lkIDA9PXQuc3RhcnQpdGhyb3cgbmV3IEVycm9yKCdQcm9wZXJ0eSAic3RhcnQiIG1pc3NpbmcgaW4gaXRlbSAnK3QpO24uY2FsbCh0aGlzLHQsZSxpKX12YXIgbj1pKDEyOSk7by5wcm90b3R5cGU9bmV3IG4obnVsbCxudWxsLG51bGwpLG8ucHJvdG90eXBlLmlzVmlzaWJsZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLndpZHRoKnQuZ2V0TWlsbGlzZWNvbmRzUGVyUGl4ZWwoKTtyZXR1cm4gdGhpcy5kYXRhLnN0YXJ0LmdldFRpbWUoKStlPnQuc3RhcnQmJnRoaXMuZGF0YS5zdGFydDx0LmVuZA0KfSxvLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRvbTtpZih0fHwodGhpcy5kb209e30sdD10aGlzLmRvbSx0LnBvaW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQuY29udGVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0LmNvbnRlbnQuY2xhc3NOYW1lPSJ2aXMtaXRlbS1jb250ZW50Iix0LnBvaW50LmFwcGVuZENoaWxkKHQuY29udGVudCksdC5kb3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdC5wb2ludC5hcHBlbmRDaGlsZCh0LmRvdCksdC5wb2ludFsidGltZWxpbmUtaXRlbSJdPXRoaXMsdGhpcy5kaXJ0eT0hMCksIXRoaXMucGFyZW50KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZHJhdyBpdGVtOiBubyBwYXJlbnQgYXR0YWNoZWQiKTtpZighdC5wb2ludC5wYXJlbnROb2RlKXt2YXIgZT10aGlzLnBhcmVudC5kb20uZm9yZWdyb3VuZDtpZighZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWRyYXcgaXRlbTogcGFyZW50IGhhcyBubyBmb3JlZ3JvdW5kIGNvbnRhaW5lciBlbGVtZW50Iik7ZS5hcHBlbmRDaGlsZCh0LnBvaW50KX1pZih0aGlzLmRpc3BsYXllZD0hMCx0aGlzLmRpcnR5KXt0aGlzLl91cGRhdGVDb250ZW50cyh0aGlzLmRvbS5jb250ZW50KSx0aGlzLl91cGRhdGVEYXRhQXR0cmlidXRlcyh0aGlzLmRvbS5wb2ludCksdGhpcy5fdXBkYXRlU3R5bGUodGhpcy5kb20ucG9pbnQpO3ZhciBpPXRoaXMuZWRpdGFibGUudXBkYXRlVGltZXx8dGhpcy5lZGl0YWJsZS51cGRhdGVHcm91cCxvPSh0aGlzLmRhdGEuY2xhc3NOYW1lPyIgIit0aGlzLmRhdGEuY2xhc3NOYW1lOiIiKSsodGhpcy5zZWxlY3RlZD8iIHZpcy1zZWxlY3RlZCI6IiIpKyhpPyIgdmlzLWVkaXRhYmxlIjoiIHZpcy1yZWFkb25seSIpO3QucG9pbnQuY2xhc3NOYW1lPSJ2aXMtaXRlbSB2aXMtcG9pbnQiK28sdC5kb3QuY2xhc3NOYW1lPSJ2aXMtaXRlbSB2aXMtZG90IitvLHRoaXMucHJvcHMuZG90LndpZHRoPXQuZG90Lm9mZnNldFdpZHRoLHRoaXMucHJvcHMuZG90LmhlaWdodD10LmRvdC5vZmZzZXRIZWlnaHQsdGhpcy5wcm9wcy5jb250ZW50LmhlaWdodD10LmNvbnRlbnQub2Zmc2V0SGVpZ2h0LHRoaXMub3B0aW9ucy5ydGw/dC5jb250ZW50LnN0eWxlLm1hcmdpblJpZ2h0PTIqdGhpcy5wcm9wcy5kb3Qud2lkdGgrInB4Ijp0LmNvbnRlbnQuc3R5bGUubWFyZ2luTGVmdD0yKnRoaXMucHJvcHMuZG90LndpZHRoKyJweCIsdGhpcy53aWR0aD10LnBvaW50Lm9mZnNldFdpZHRoLHRoaXMuaGVpZ2h0PXQucG9pbnQub2Zmc2V0SGVpZ2h0LHQuZG90LnN0eWxlLnRvcD0odGhpcy5oZWlnaHQtdGhpcy5wcm9wcy5kb3QuaGVpZ2h0KS8yKyJweCIsdGhpcy5vcHRpb25zLnJ0bD90LmRvdC5zdHlsZS5yaWdodD10aGlzLnByb3BzLmRvdC53aWR0aC8yKyJweCI6dC5kb3Quc3R5bGUubGVmdD10aGlzLnByb3BzLmRvdC53aWR0aC8yKyJweCIsdGhpcy5kaXJ0eT0hMX10aGlzLl9yZXBhaW50T25JdGVtVXBkYXRlVGltZVRvb2x0aXAodC5wb2ludCksdGhpcy5fcmVwYWludERyYWdDZW50ZXIoKSx0aGlzLl9yZXBhaW50RGVsZXRlQnV0dG9uKHQucG9pbnQpfSxvLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dGhpcy5kaXNwbGF5ZWR8fHRoaXMucmVkcmF3KCl9LG8ucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oKXt0aGlzLmRpc3BsYXllZCYmKHRoaXMuZG9tLnBvaW50LnBhcmVudE5vZGUmJnRoaXMuZG9tLnBvaW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kb20ucG9pbnQpLHRoaXMuZGlzcGxheWVkPSExKX0sby5wcm90b3R5cGUucmVwb3NpdGlvblg9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnZlcnNpb24udG9TY3JlZW4odGhpcy5kYXRhLnN0YXJ0KTt0aGlzLm9wdGlvbnMucnRsPyh0aGlzLnJpZ2h0PXQtdGhpcy5wcm9wcy5kb3Qud2lkdGgsdGhpcy5kb20ucG9pbnQuc3R5bGUucmlnaHQ9dGhpcy5yaWdodCsicHgiKToodGhpcy5sZWZ0PXQtdGhpcy5wcm9wcy5kb3Qud2lkdGgsdGhpcy5kb20ucG9pbnQuc3R5bGUubGVmdD10aGlzLmxlZnQrInB4Iil9LG8ucHJvdG90eXBlLnJlcG9zaXRpb25ZPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLm9yaWVudGF0aW9uLml0ZW0sZT10aGlzLmRvbS5wb2ludDtlLnN0eWxlLnRvcD0idG9wIj09dD90aGlzLnRvcCsicHgiOnRoaXMucGFyZW50LmhlaWdodC10aGlzLnRvcC10aGlzLmhlaWdodCsicHgifSxvLnByb3RvdHlwZS5nZXRXaWR0aExlZnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5kb3Qud2lkdGh9LG8ucHJvdG90eXBlLmdldFdpZHRoUmlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5kb3Qud2lkdGh9LHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUsaSl7aWYodGhpcy5wcm9wcz17Y29udGVudDp7d2lkdGg6MH19LHRoaXMub3ZlcmZsb3c9ITEsdCl7aWYodm9pZCAwPT10LnN0YXJ0KXRocm93IG5ldyBFcnJvcignUHJvcGVydHkgInN0YXJ0IiBtaXNzaW5nIGluIGl0ZW0gJyt0LmlkKTtpZih2b2lkIDA9PXQuZW5kKXRocm93IG5ldyBFcnJvcignUHJvcGVydHkgImVuZCIgbWlzc2luZyBpbiBpdGVtICcrdC5pZCl9bi5jYWxsKHRoaXMsdCxlLGkpfXZhciBuPShpKDExMyksaSgxMjkpKSxzPWkoMTMwKSxyPWkoMTI4KTtvLnByb3RvdHlwZT1uZXcgbihudWxsLG51bGwsbnVsbCksby5wcm90b3R5cGUuYmFzZUNsYXNzTmFtZT0idmlzLWl0ZW0gdmlzLWJhY2tncm91bmQiLG8ucHJvdG90eXBlLnN0YWNrPSExLG8ucHJvdG90eXBlLmlzVmlzaWJsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kYXRhLnN0YXJ0PHQuZW5kJiZ0aGlzLmRhdGEuZW5kPnQuc3RhcnR9LG8ucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZG9tO2lmKHR8fCh0aGlzLmRvbT17fSx0PXRoaXMuZG9tLHQuYm94PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQuZnJhbWU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdC5mcmFtZS5jbGFzc05hbWU9InZpcy1pdGVtLW92ZXJmbG93Iix0LmJveC5hcHBlbmRDaGlsZCh0LmZyYW1lKSx0LmNvbnRlbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdC5jb250ZW50LmNsYXNzTmFtZT0idmlzLWl0ZW0tY29udGVudCIsdC5mcmFtZS5hcHBlbmRDaGlsZCh0LmNvbnRlbnQpLHRoaXMuZGlydHk9ITApLCF0aGlzLnBhcmVudCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWRyYXcgaXRlbTogbm8gcGFyZW50IGF0dGFjaGVkIik7aWYoIXQuYm94LnBhcmVudE5vZGUpe3ZhciBlPXRoaXMucGFyZW50LmRvbS5iYWNrZ3JvdW5kO2lmKCFlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZHJhdyBpdGVtOiBwYXJlbnQgaGFzIG5vIGJhY2tncm91bmQgY29udGFpbmVyIGVsZW1lbnQiKTtlLmFwcGVuZENoaWxkKHQuYm94KX1pZih0aGlzLmRpc3BsYXllZD0hMCx0aGlzLmRpcnR5KXt0aGlzLl91cGRhdGVDb250ZW50cyh0aGlzLmRvbS5jb250ZW50KSx0aGlzLl91cGRhdGVEYXRhQXR0cmlidXRlcyh0aGlzLmRvbS5jb250ZW50KSx0aGlzLl91cGRhdGVTdHlsZSh0aGlzLmRvbS5ib3gpO3ZhciBpPSh0aGlzLmRhdGEuY2xhc3NOYW1lPyIgIit0aGlzLmRhdGEuY2xhc3NOYW1lOiIiKSsodGhpcy5zZWxlY3RlZD8iIHZpcy1zZWxlY3RlZCI6IiIpO3QuYm94LmNsYXNzTmFtZT10aGlzLmJhc2VDbGFzc05hbWUraSx0aGlzLm92ZXJmbG93PSJoaWRkZW4iIT09d2luZG93LmdldENvbXB1dGVkU3R5bGUodC5jb250ZW50KS5vdmVyZmxvdyx0aGlzLnByb3BzLmNvbnRlbnQud2lkdGg9dGhpcy5kb20uY29udGVudC5vZmZzZXRXaWR0aCx0aGlzLmhlaWdodD0wLHRoaXMuZGlydHk9ITF9fSxvLnByb3RvdHlwZS5zaG93PXIucHJvdG90eXBlLnNob3csby5wcm90b3R5cGUuaGlkZT1yLnByb3RvdHlwZS5oaWRlLG8ucHJvdG90eXBlLnJlcG9zaXRpb25YPXIucHJvdG90eXBlLnJlcG9zaXRpb25YLG8ucHJvdG90eXBlLnJlcG9zaXRpb25ZPWZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy5vcHRpb25zLm9yaWVudGF0aW9uLml0ZW07aWYodm9pZCAwIT09dGhpcy5kYXRhLnN1Ymdyb3VwKXt2YXIgbz10aGlzLmRhdGEuc3ViZ3JvdXAsbj10aGlzLnBhcmVudC5zdWJncm91cHM7bltvXS5pbmRleDt0aGlzLmRvbS5ib3guc3R5bGUuaGVpZ2h0PXRoaXMucGFyZW50LnN1Ymdyb3Vwc1tvXS5oZWlnaHQrInB4Iix0aGlzLmRvbS5ib3guc3R5bGUudG9wPSJ0b3AiPT1pP3RoaXMucGFyZW50LnRvcCt0aGlzLnBhcmVudC5zdWJncm91cHNbb10udG9wKyJweCI6dGhpcy5wYXJlbnQudG9wK3RoaXMucGFyZW50LmhlaWdodC10aGlzLnBhcmVudC5zdWJncm91cHNbb10udG9wLXRoaXMucGFyZW50LnN1Ymdyb3Vwc1tvXS5oZWlnaHQrInB4Iix0aGlzLmRvbS5ib3guc3R5bGUuYm90dG9tPSIifWVsc2UgdGhpcy5wYXJlbnQgaW5zdGFuY2VvZiBzPyhlPU1hdGgubWF4KHRoaXMucGFyZW50LmhlaWdodCx0aGlzLnBhcmVudC5pdGVtU2V0LmJvZHkuZG9tUHJvcHMuY2VudGVyLmhlaWdodCx0aGlzLnBhcmVudC5pdGVtU2V0LmJvZHkuZG9tUHJvcHMuY2VudGVyQ29udGFpbmVyLmhlaWdodCksdGhpcy5kb20uYm94LnN0eWxlLmJvdHRvbT0iYm90dG9tIj09aT8iMCI6IiIsdGhpcy5kb20uYm94LnN0eWxlLnRvcD0idG9wIj09aT8iMCI6IiIpOihlPXRoaXMucGFyZW50LmhlaWdodCx0aGlzLmRvbS5ib3guc3R5bGUudG9wPXRoaXMucGFyZW50LnRvcCsicHgiLHRoaXMuZG9tLmJveC5zdHlsZS5ib3R0b209IiIpO3RoaXMuZG9tLmJveC5zdHlsZS5oZWlnaHQ9ZSsicHgifSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDEzNSkscz1vKG4pLHI9aSgxMzYpLGE9byhyKSxoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpeygwLHMuZGVmYXVsdCkodGhpcyx0KSx0aGlzLmNvbnRhaW5lcj1lLHRoaXMub3ZlcmZsb3dNZXRob2Q9aXx8ImNhcCIsdGhpcy54PTAsdGhpcy55PTAsdGhpcy5wYWRkaW5nPTUsdGhpcy5oaWRkZW49ITEsdGhpcy5mcmFtZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmZyYW1lLmNsYXNzTmFtZT0idmlzLXRvb2x0aXAiLHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZnJhbWUpfXJldHVybigwLGEuZGVmYXVsdCkodCxbe2tleToic2V0UG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy54PXBhcnNlSW50KHQpLHRoaXMueT1wYXJzZUludChlKX19LHtrZXk6InNldFRleHQiLHZhbHVlOmZ1bmN0aW9uKHQpe3QgaW5zdGFuY2VvZiBFbGVtZW50Pyh0aGlzLmZyYW1lLmlubmVySFRNTD0iIix0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHQpKTp0aGlzLmZyYW1lLmlubmVySFRNTD10fX0se2tleToic2hvdyIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dCYmKHQ9ITApLCEwPT09dCl7dmFyIGU9dGhpcy5mcmFtZS5jbGllbnRIZWlnaHQsaT10aGlzLmZyYW1lLmNsaWVudFdpZHRoLG89dGhpcy5mcmFtZS5wYXJlbnROb2RlLmNsaWVudEhlaWdodCxuPXRoaXMuZnJhbWUucGFyZW50Tm9kZS5jbGllbnRXaWR0aCxzPTAscj0wO2lmKCJmbGlwIj09dGhpcy5vdmVyZmxvd01ldGhvZCl7dmFyIGE9ITEsaD0hMDt0aGlzLnktZTx0aGlzLnBhZGRpbmcmJihoPSExKSx0aGlzLngraT5uLXRoaXMucGFkZGluZyYmKGE9ITApLHM9YT90aGlzLngtaTp0aGlzLngscj1oP3RoaXMueS1lOnRoaXMueX1lbHNlIHI9dGhpcy55LWUscitlK3RoaXMucGFkZGluZz5vJiYocj1vLWUtdGhpcy5wYWRkaW5nKSxyPHRoaXMucGFkZGluZyYmKHI9dGhpcy5wYWRkaW5nKSxzPXRoaXMueCxzK2krdGhpcy5wYWRkaW5nPm4mJihzPW4taS10aGlzLnBhZGRpbmcpLHM8dGhpcy5wYWRkaW5nJiYocz10aGlzLnBhZGRpbmcpO3RoaXMuZnJhbWUuc3R5bGUubGVmdD1zKyJweCIsdGhpcy5mcmFtZS5zdHlsZS50b3A9cisicHgiLHRoaXMuZnJhbWUuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIsdGhpcy5oaWRkZW49ITF9ZWxzZSB0aGlzLmhpZGUoKX19LHtrZXk6ImhpZGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oaWRkZW49ITAsdGhpcy5mcmFtZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4ifX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5mcmFtZSl9fV0pLHR9KCk7ZS5kZWZhdWx0PWh9LGZ1bmN0aW9uKHQsZSl7ZS5fX2VzTW9kdWxlPSEwLGUuZGVmYXVsdD1mdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfX0sZnVuY3Rpb24odCxlLGkpe2UuX19lc01vZHVsZT0hMDt2YXIgbz1pKDEzNyksbj1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19KG8pO2UuZGVmYXVsdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89ZVtpXTtvLmVudW1lcmFibGU9by5lbnVtZXJhYmxlfHwhMSxvLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbyYmKG8ud3JpdGFibGU9ITApLCgwLG4uZGVmYXVsdCkodCxvLmtleSxvKX19cmV0dXJuIGZ1bmN0aW9uKGUsaSxvKXtyZXR1cm4gaSYmdChlLnByb3RvdHlwZSxpKSxvJiZ0KGUsbyksZX19KCl9LGZ1bmN0aW9uKHQsZSxpKXt0LmV4cG9ydHM9e2RlZmF1bHQ6aSgxMzgpLF9fZXNNb2R1bGU6ITB9fSxmdW5jdGlvbih0LGUsaSl7aSgxMzkpO3ZhciBvPWkoMTcpLk9iamVjdDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBvLmRlZmluZVByb3BlcnR5KHQsZSxpKX19LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDE1KTtvKG8uUytvLkYqIWkoMjUpLCJPYmplY3QiLHtkZWZpbmVQcm9wZXJ0eTppKDIxKS5mfSl9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQsZSl7dGhpcy5kb209e2ZvcmVncm91bmQ6bnVsbCxsaW5lczpbXSxtYWpvclRleHRzOltdLG1pbm9yVGV4dHM6W10scmVkdW5kYW50OntsaW5lczpbXSxtYWpvclRleHRzOltdLG1pbm9yVGV4dHM6W119fSx0aGlzLnByb3BzPXtyYW5nZTp7c3RhcnQ6MCxlbmQ6MCxtaW5pbXVtU3RlcDowfSxsaW5lVG9wOjB9LHRoaXMuZGVmYXVsdE9wdGlvbnM9e29yaWVudGF0aW9uOntheGlzOiJib3R0b20ifSxzaG93TWlub3JMYWJlbHM6ITAsc2hvd01ham9yTGFiZWxzOiEwLG1heE1pbm9yQ2hhcnM6Nyxmb3JtYXQ6aC5GT1JNQVQsbW9tZW50OmwsdGltZUF4aXM6bnVsbH0sdGhpcy5vcHRpb25zPXIuZXh0ZW5kKHt9LHRoaXMuZGVmYXVsdE9wdGlvbnMpLHRoaXMuYm9keT10LHRoaXMuX2NyZWF0ZSgpLHRoaXMuc2V0T3B0aW9ucyhlKX12YXIgbj1pKDYyKSxzPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX0obikscj1pKDEpLGE9aSgxMjEpLGg9aSgxMjUpLGQ9aSgxMjIpLGw9aSg4Mik7by5wcm90b3R5cGU9bmV3IGEsby5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbih0KXt0JiYoci5zZWxlY3RpdmVFeHRlbmQoWyJzaG93TWlub3JMYWJlbHMiLCJzaG93TWFqb3JMYWJlbHMiLCJtYXhNaW5vckNoYXJzIiwiaGlkZGVuRGF0ZXMiLCJ0aW1lQXhpcyIsIm1vbWVudCIsInJ0bCJdLHRoaXMub3B0aW9ucyx0KSxyLnNlbGVjdGl2ZURlZXBFeHRlbmQoWyJmb3JtYXQiXSx0aGlzLm9wdGlvbnMsdCksIm9yaWVudGF0aW9uImluIHQmJigic3RyaW5nIj09dHlwZW9mIHQub3JpZW50YXRpb24/dGhpcy5vcHRpb25zLm9yaWVudGF0aW9uLmF4aXM9dC5vcmllbnRhdGlvbjoib2JqZWN0Ij09PSgwLHMuZGVmYXVsdCkodC5vcmllbnRhdGlvbikmJiJheGlzImluIHQub3JpZW50YXRpb24mJih0aGlzLm9wdGlvbnMub3JpZW50YXRpb24uYXhpcz10Lm9yaWVudGF0aW9uLmF4aXMpKSwibG9jYWxlImluIHQmJigiZnVuY3Rpb24iPT10eXBlb2YgbC5sb2NhbGU/bC5sb2NhbGUodC5sb2NhbGUpOmwubGFuZyh0LmxvY2FsZSkpKX0sby5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbigpe3RoaXMuZG9tLmZvcmVncm91bmQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uYmFja2dyb3VuZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS5mb3JlZ3JvdW5kLmNsYXNzTmFtZT0idmlzLXRpbWUtYXhpcyB2aXMtZm9yZWdyb3VuZCIsdGhpcy5kb20uYmFja2dyb3VuZC5jbGFzc05hbWU9InZpcy10aW1lLWF4aXMgdmlzLWJhY2tncm91bmQifSxvLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5kb20uZm9yZWdyb3VuZC5wYXJlbnROb2RlJiZ0aGlzLmRvbS5mb3JlZ3JvdW5kLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kb20uZm9yZWdyb3VuZCksdGhpcy5kb20uYmFja2dyb3VuZC5wYXJlbnROb2RlJiZ0aGlzLmRvbS5iYWNrZ3JvdW5kLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kb20uYmFja2dyb3VuZCksdGhpcy5ib2R5PW51bGx9LG8ucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbigpe3ZhciB0PXRoaXMucHJvcHMsZT10aGlzLmRvbS5mb3JlZ3JvdW5kLGk9dGhpcy5kb20uYmFja2dyb3VuZCxvPSJ0b3AiPT10aGlzLm9wdGlvbnMub3JpZW50YXRpb24uYXhpcz90aGlzLmJvZHkuZG9tLnRvcDp0aGlzLmJvZHkuZG9tLmJvdHRvbSxuPWUucGFyZW50Tm9kZSE9PW87dGhpcy5fY2FsY3VsYXRlQ2hhclNpemUoKTt2YXIgcz10aGlzLm9wdGlvbnMuc2hvd01pbm9yTGFiZWxzJiYibm9uZSIhPT10aGlzLm9wdGlvbnMub3JpZW50YXRpb24uYXhpcyxyPXRoaXMub3B0aW9ucy5zaG93TWFqb3JMYWJlbHMmJiJub25lIiE9PXRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5heGlzO3QubWlub3JMYWJlbEhlaWdodD1zP3QubWlub3JDaGFySGVpZ2h0OjAsdC5tYWpvckxhYmVsSGVpZ2h0PXI/dC5tYWpvckNoYXJIZWlnaHQ6MCx0LmhlaWdodD10Lm1pbm9yTGFiZWxIZWlnaHQrdC5tYWpvckxhYmVsSGVpZ2h0LHQud2lkdGg9ZS5vZmZzZXRXaWR0aCx0Lm1pbm9yTGluZUhlaWdodD10aGlzLmJvZHkuZG9tUHJvcHMucm9vdC5oZWlnaHQtdC5tYWpvckxhYmVsSGVpZ2h0LSgidG9wIj09dGhpcy5vcHRpb25zLm9yaWVudGF0aW9uLmF4aXM/dGhpcy5ib2R5LmRvbVByb3BzLmJvdHRvbS5oZWlnaHQ6dGhpcy5ib2R5LmRvbVByb3BzLnRvcC5oZWlnaHQpLHQubWlub3JMaW5lV2lkdGg9MSx0Lm1ham9yTGluZUhlaWdodD10Lm1pbm9yTGluZUhlaWdodCt0Lm1ham9yTGFiZWxIZWlnaHQsdC5tYWpvckxpbmVXaWR0aD0xO3ZhciBhPWUubmV4dFNpYmxpbmcsaD1pLm5leHRTaWJsaW5nO3JldHVybiBlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSxpLnBhcmVudE5vZGUmJmkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpKSxlLnN0eWxlLmhlaWdodD10aGlzLnByb3BzLmhlaWdodCsicHgiLHRoaXMuX3JlcGFpbnRMYWJlbHMoKSxhP28uaW5zZXJ0QmVmb3JlKGUsYSk6by5hcHBlbmRDaGlsZChlKSxoP3RoaXMuYm9keS5kb20uYmFja2dyb3VuZFZlcnRpY2FsLmluc2VydEJlZm9yZShpLGgpOnRoaXMuYm9keS5kb20uYmFja2dyb3VuZFZlcnRpY2FsLmFwcGVuZENoaWxkKGkpLHRoaXMuX2lzUmVzaXplZCgpfHxufSxvLnByb3RvdHlwZS5fcmVwYWludExhYmVscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5heGlzLGU9ci5jb252ZXJ0KHRoaXMuYm9keS5yYW5nZS5zdGFydCwiTnVtYmVyIiksaT1yLmNvbnZlcnQodGhpcy5ib2R5LnJhbmdlLmVuZCwiTnVtYmVyIiksbz10aGlzLmJvZHkudXRpbC50b1RpbWUoKHRoaXMucHJvcHMubWlub3JDaGFyV2lkdGh8fDEwKSp0aGlzLm9wdGlvbnMubWF4TWlub3JDaGFycykudmFsdWVPZigpLG49by1kLmdldEhpZGRlbkR1cmF0aW9uQmVmb3JlKHRoaXMub3B0aW9ucy5tb21lbnQsdGhpcy5ib2R5LmhpZGRlbkRhdGVzLHRoaXMuYm9keS5yYW5nZSxvKTtuLT10aGlzLmJvZHkudXRpbC50b1RpbWUoMCkudmFsdWVPZigpO3ZhciBzPW5ldyBoKG5ldyBEYXRlKGUpLG5ldyBEYXRlKGkpLG4sdGhpcy5ib2R5LmhpZGRlbkRhdGVzKTtzLnNldE1vbWVudCh0aGlzLm9wdGlvbnMubW9tZW50KSx0aGlzLm9wdGlvbnMuZm9ybWF0JiZzLnNldEZvcm1hdCh0aGlzLm9wdGlvbnMuZm9ybWF0KSx0aGlzLm9wdGlvbnMudGltZUF4aXMmJnMuc2V0U2NhbGUodGhpcy5vcHRpb25zLnRpbWVBeGlzKSx0aGlzLnN0ZXA9czt2YXIgYT10aGlzLmRvbTthLnJlZHVuZGFudC5saW5lcz1hLmxpbmVzLGEucmVkdW5kYW50Lm1ham9yVGV4dHM9YS5tYWpvclRleHRzLGEucmVkdW5kYW50Lm1pbm9yVGV4dHM9YS5taW5vclRleHRzLGEubGluZXM9W10sYS5tYWpvclRleHRzPVtdLGEubWlub3JUZXh0cz1bXTt2YXIgbCxjLHAsZixtLHYsZyx5LGIsXz0wLHc9dm9pZCAwLHg9MDtmb3Iocy5zdGFydCgpLGw9cy5nZXRDdXJyZW50KCkscD10aGlzLmJvZHkudXRpbC50b1NjcmVlbihsKTtzLmhhc05leHQoKSYmeDwxZTM7KXtzd2l0Y2goeCsrLGY9cy5pc01ham9yKCksYj1zLmdldENsYXNzTmFtZSgpLHk9cy5nZXRMYWJlbE1pbm9yKCksbCxjPXAscy5uZXh0KCksbD1zLmdldEN1cnJlbnQoKSxzLmlzTWFqb3IoKSxwPXRoaXMuYm9keS51dGlsLnRvU2NyZWVuKGwpLHY9XyxfPXAtYyxzLnNjYWxlKXtjYXNlIndlZWsiOm09ITA7YnJlYWs7ZGVmYXVsdDptPV8+PS40KnZ9aWYodGhpcy5vcHRpb25zLnNob3dNaW5vckxhYmVscyYmbSl7dmFyIGs9dGhpcy5fcmVwYWludE1pbm9yVGV4dChjLHksdCxiKTtrLnN0eWxlLndpZHRoPV8rInB4In1mJiZ0aGlzLm9wdGlvbnMuc2hvd01ham9yTGFiZWxzPyhjPjAmJih2b2lkIDA9PXcmJih3PWMpLGs9dGhpcy5fcmVwYWludE1ham9yVGV4dChjLHMuZ2V0TGFiZWxNYWpvcigpLHQsYikpLGc9dGhpcy5fcmVwYWludE1ham9yTGluZShjLF8sdCxiKSk6bT9nPXRoaXMuX3JlcGFpbnRNaW5vckxpbmUoYyxfLHQsYik6ZyYmKGcuc3R5bGUud2lkdGg9cGFyc2VJbnQoZy5zdHlsZS53aWR0aCkrXysicHgiKX1pZigxZTMhPT14fHx1fHwoY29uc29sZS53YXJuKCJTb21ldGhpbmcgaXMgd3Jvbmcgd2l0aCB0aGUgVGltZWxpbmUgc2NhbGUuIExpbWl0ZWQgZHJhd2luZyBvZiBncmlkIGxpbmVzIHRvIDEwMDAgbGluZXMuIiksdT0hMCksdGhpcy5vcHRpb25zLnNob3dNYWpvckxhYmVscyl7dmFyIEQ9dGhpcy5ib2R5LnV0aWwudG9UaW1lKDApLE09cy5nZXRMYWJlbE1ham9yKEQpLFM9TS5sZW5ndGgqKHRoaXMucHJvcHMubWFqb3JDaGFyV2lkdGh8fDEwKSsxMDsodm9pZCAwPT13fHxTPHcpJiZ0aGlzLl9yZXBhaW50TWFqb3JUZXh0KDAsTSx0LGIpfXIuZm9yRWFjaCh0aGlzLmRvbS5yZWR1bmRhbnQsZnVuY3Rpb24odCl7Zm9yKDt0Lmxlbmd0aDspe3ZhciBlPXQucG9wKCk7ZSYmZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9fSl9LG8ucHJvdG90eXBlLl9yZXBhaW50TWlub3JUZXh0PWZ1bmN0aW9uKHQsZSxpLG8pe3ZhciBuPXRoaXMuZG9tLnJlZHVuZGFudC5taW5vclRleHRzLnNoaWZ0KCk7aWYoIW4pe3ZhciBzPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKTtuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLG4uYXBwZW5kQ2hpbGQocyksdGhpcy5kb20uZm9yZWdyb3VuZC5hcHBlbmRDaGlsZChuKX1yZXR1cm4gdGhpcy5kb20ubWlub3JUZXh0cy5wdXNoKG4pLG4uaW5uZXJIVE1MPWUsbi5zdHlsZS50b3A9InRvcCI9PWk/dGhpcy5wcm9wcy5tYWpvckxhYmVsSGVpZ2h0KyJweCI6IjAiLHRoaXMub3B0aW9ucy5ydGw/KG4uc3R5bGUubGVmdD0iIixuLnN0eWxlLnJpZ2h0PXQrInB4Iik6bi5zdHlsZS5sZWZ0PXQrInB4IixuLmNsYXNzTmFtZT0idmlzLXRleHQgdmlzLW1pbm9yICIrbyxufSxvLnByb3RvdHlwZS5fcmVwYWludE1ham9yVGV4dD1mdW5jdGlvbih0LGUsaSxvKXt2YXIgbj10aGlzLmRvbS5yZWR1bmRhbnQubWFqb3JUZXh0cy5zaGlmdCgpO2lmKCFuKXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLG4uYXBwZW5kQ2hpbGQocyksdGhpcy5kb20uZm9yZWdyb3VuZC5hcHBlbmRDaGlsZChuKX1yZXR1cm4gbi5jaGlsZE5vZGVzWzBdLmlubmVySFRNTD1lLG4uY2xhc3NOYW1lPSJ2aXMtdGV4dCB2aXMtbWFqb3IgIitvLG4uc3R5bGUudG9wPSJ0b3AiPT1pPyIwIjp0aGlzLnByb3BzLm1pbm9yTGFiZWxIZWlnaHQrInB4Iix0aGlzLm9wdGlvbnMucnRsPyhuLnN0eWxlLmxlZnQ9IiIsbi5zdHlsZS5yaWdodD10KyJweCIpOm4uc3R5bGUubGVmdD10KyJweCIsdGhpcy5kb20ubWFqb3JUZXh0cy5wdXNoKG4pLG59LG8ucHJvdG90eXBlLl9yZXBhaW50TWlub3JMaW5lPWZ1bmN0aW9uKHQsZSxpLG8pe3ZhciBuPXRoaXMuZG9tLnJlZHVuZGFudC5saW5lcy5zaGlmdCgpO258fChuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLmJhY2tncm91bmQuYXBwZW5kQ2hpbGQobikpLHRoaXMuZG9tLmxpbmVzLnB1c2gobik7dmFyIHM9dGhpcy5wcm9wcztyZXR1cm4gbi5zdHlsZS50b3A9InRvcCI9PWk/cy5tYWpvckxhYmVsSGVpZ2h0KyJweCI6dGhpcy5ib2R5LmRvbVByb3BzLnRvcC5oZWlnaHQrInB4IixuLnN0eWxlLmhlaWdodD1zLm1pbm9yTGluZUhlaWdodCsicHgiLHRoaXMub3B0aW9ucy5ydGw/KG4uc3R5bGUubGVmdD0iIixuLnN0eWxlLnJpZ2h0PXQtcy5taW5vckxpbmVXaWR0aC8yKyJweCIsbi5jbGFzc05hbWU9InZpcy1ncmlkIHZpcy12ZXJ0aWNhbC1ydGwgdmlzLW1pbm9yICIrbyk6KG4uc3R5bGUubGVmdD10LXMubWlub3JMaW5lV2lkdGgvMisicHgiLG4uY2xhc3NOYW1lPSJ2aXMtZ3JpZCB2aXMtdmVydGljYWwgdmlzLW1pbm9yICIrbyksbi5zdHlsZS53aWR0aD1lKyJweCIsbn0sby5wcm90b3R5cGUuX3JlcGFpbnRNYWpvckxpbmU9ZnVuY3Rpb24odCxlLGksbyl7dmFyIG49dGhpcy5kb20ucmVkdW5kYW50LmxpbmVzLnNoaWZ0KCk7bnx8KG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uYmFja2dyb3VuZC5hcHBlbmRDaGlsZChuKSksdGhpcy5kb20ubGluZXMucHVzaChuKTt2YXIgcz10aGlzLnByb3BzO3JldHVybiBuLnN0eWxlLnRvcD0idG9wIj09aT8iMCI6dGhpcy5ib2R5LmRvbVByb3BzLnRvcC5oZWlnaHQrInB4Iix0aGlzLm9wdGlvbnMucnRsPyhuLnN0eWxlLmxlZnQ9IiIsbi5zdHlsZS5yaWdodD10LXMubWFqb3JMaW5lV2lkdGgvMisicHgiLG4uY2xhc3NOYW1lPSJ2aXMtZ3JpZCB2aXMtdmVydGljYWwtcnRsIHZpcy1tYWpvciAiK28pOihuLnN0eWxlLmxlZnQ9dC1zLm1ham9yTGluZVdpZHRoLzIrInB4IixuLmNsYXNzTmFtZT0idmlzLWdyaWQgdmlzLXZlcnRpY2FsIHZpcy1tYWpvciAiK28pLG4uc3R5bGUuaGVpZ2h0PXMubWFqb3JMaW5lSGVpZ2h0KyJweCIsbi5zdHlsZS53aWR0aD1lKyJweCIsbn0sby5wcm90b3R5cGUuX2NhbGN1bGF0ZUNoYXJTaXplPWZ1bmN0aW9uKCl7dGhpcy5kb20ubWVhc3VyZUNoYXJNaW5vcnx8KHRoaXMuZG9tLm1lYXN1cmVDaGFyTWlub3I9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksdGhpcy5kb20ubWVhc3VyZUNoYXJNaW5vci5jbGFzc05hbWU9InZpcy10ZXh0IHZpcy1taW5vciB2aXMtbWVhc3VyZSIsdGhpcy5kb20ubWVhc3VyZUNoYXJNaW5vci5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHRoaXMuZG9tLm1lYXN1cmVDaGFyTWlub3IuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjAiKSksdGhpcy5kb20uZm9yZWdyb3VuZC5hcHBlbmRDaGlsZCh0aGlzLmRvbS5tZWFzdXJlQ2hhck1pbm9yKSksdGhpcy5wcm9wcy5taW5vckNoYXJIZWlnaHQ9dGhpcy5kb20ubWVhc3VyZUNoYXJNaW5vci5jbGllbnRIZWlnaHQsdGhpcy5wcm9wcy5taW5vckNoYXJXaWR0aD10aGlzLmRvbS5tZWFzdXJlQ2hhck1pbm9yLmNsaWVudFdpZHRoLHRoaXMuZG9tLm1lYXN1cmVDaGFyTWFqb3J8fCh0aGlzLmRvbS5tZWFzdXJlQ2hhck1ham9yPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLHRoaXMuZG9tLm1lYXN1cmVDaGFyTWFqb3IuY2xhc3NOYW1lPSJ2aXMtdGV4dCB2aXMtbWFqb3IgdmlzLW1lYXN1cmUiLHRoaXMuZG9tLm1lYXN1cmVDaGFyTWFqb3Iuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0aGlzLmRvbS5tZWFzdXJlQ2hhck1ham9yLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIwIikpLHRoaXMuZG9tLmZvcmVncm91bmQuYXBwZW5kQ2hpbGQodGhpcy5kb20ubWVhc3VyZUNoYXJNYWpvcikpLHRoaXMucHJvcHMubWFqb3JDaGFySGVpZ2h0PXRoaXMuZG9tLm1lYXN1cmVDaGFyTWFqb3IuY2xpZW50SGVpZ2h0LHRoaXMucHJvcHMubWFqb3JDaGFyV2lkdGg9dGhpcy5kb20ubWVhc3VyZUNoYXJNYWpvci5jbGllbnRXaWR0aH07dmFyIHU9ITE7dC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3RoaXMuYWN0aXZlPSExLHRoaXMuZG9tPXtjb250YWluZXI6dH0sdGhpcy5kb20ub3ZlcmxheT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS5vdmVybGF5LmNsYXNzTmFtZT0idmlzLW92ZXJsYXkiLHRoaXMuZG9tLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmRvbS5vdmVybGF5KSx0aGlzLmhhbW1lcj1hKHRoaXMuZG9tLm92ZXJsYXkpLHRoaXMuaGFtbWVyLm9uKCJ0YXAiLHRoaXMuX29uVGFwT3ZlcmxheS5iaW5kKHRoaXMpKTt2YXIgZT10aGlzO1sidGFwIiwiZG91YmxldGFwIiwicHJlc3MiLCJwaW5jaCIsInBhbiIsInBhbnN0YXJ0IiwicGFubW92ZSIsInBhbmVuZCJdLmZvckVhY2goZnVuY3Rpb24odCl7ZS5oYW1tZXIub24odCxmdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpfSl9KSxkb2N1bWVudCYmZG9jdW1lbnQuYm9keSYmKHRoaXMub25DbGljaz1mdW5jdGlvbihpKXtuKGkudGFyZ2V0LHQpfHxlLmRlYWN0aXZhdGUoKX0sZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5vbkNsaWNrKSksdm9pZCAwIT09dGhpcy5rZXljaGFybSYmdGhpcy5rZXljaGFybS5kZXN0cm95KCksdGhpcy5rZXljaGFybT1zKCksdGhpcy5lc2NMaXN0ZW5lcj10aGlzLmRlYWN0aXZhdGUuYmluZCh0aGlzKX1mdW5jdGlvbiBuKHQsZSl7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10LnBhcmVudE5vZGV9cmV0dXJuITF9dmFyIHM9aSgxMTYpLHI9aSg5OSksYT1pKDExMyksaD1pKDEpO3Ioby5wcm90b3R5cGUpLG8uY3VycmVudD1udWxsLG8ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmRlYWN0aXZhdGUoKSx0aGlzLmRvbS5vdmVybGF5LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kb20ub3ZlcmxheSksdGhpcy5vbkNsaWNrJiZkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLm9uQ2xpY2spLHRoaXMuaGFtbWVyLmRlc3Ryb3koKSx0aGlzLmhhbW1lcj1udWxsfSxvLnByb3RvdHlwZS5hY3RpdmF0ZT1mdW5jdGlvbigpe28uY3VycmVudCYmby5jdXJyZW50LmRlYWN0aXZhdGUoKSxvLmN1cnJlbnQ9dGhpcyx0aGlzLmFjdGl2ZT0hMCx0aGlzLmRvbS5vdmVybGF5LnN0eWxlLmRpc3BsYXk9Im5vbmUiLGguYWRkQ2xhc3NOYW1lKHRoaXMuZG9tLmNvbnRhaW5lciwidmlzLWFjdGl2ZSIpLHRoaXMuZW1pdCgiY2hhbmdlIiksdGhpcy5lbWl0KCJhY3RpdmF0ZSIpLHRoaXMua2V5Y2hhcm0uYmluZCgiZXNjIix0aGlzLmVzY0xpc3RlbmVyKX0sby5wcm90b3R5cGUuZGVhY3RpdmF0ZT1mdW5jdGlvbigpe3RoaXMuYWN0aXZlPSExLHRoaXMuZG9tLm92ZXJsYXkuc3R5bGUuZGlzcGxheT0iIixoLnJlbW92ZUNsYXNzTmFtZSh0aGlzLmRvbS5jb250YWluZXIsInZpcy1hY3RpdmUiKSx0aGlzLmtleWNoYXJtLnVuYmluZCgiZXNjIix0aGlzLmVzY0xpc3RlbmVyKSx0aGlzLmVtaXQoImNoYW5nZSIpLHRoaXMuZW1pdCgiZGVhY3RpdmF0ZSIpfSxvLnByb3RvdHlwZS5fb25UYXBPdmVybGF5PWZ1bmN0aW9uKHQpe3RoaXMuYWN0aXZhdGUoKSx0LnN0b3BQcm9wYWdhdGlvbigpfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlKXt0aGlzLmJvZHk9dCx0aGlzLmRlZmF1bHRPcHRpb25zPXttb21lbnQ6YSxsb2NhbGVzOmgsbG9jYWxlOiJlbiIsaWQ6dm9pZCAwLHRpdGxlOnZvaWQgMH0sdGhpcy5vcHRpb25zPXMuZXh0ZW5kKHt9LHRoaXMuZGVmYXVsdE9wdGlvbnMpLGUmJmUudGltZT90aGlzLmN1c3RvbVRpbWU9ZS50aW1lOnRoaXMuY3VzdG9tVGltZT1uZXcgRGF0ZSx0aGlzLmV2ZW50UGFyYW1zPXt9LHRoaXMuc2V0T3B0aW9ucyhlKSx0aGlzLl9jcmVhdGUoKX12YXIgbj1pKDExMykscz1pKDEpLHI9aSgxMjEpLGE9aSg4MiksaD1pKDE0Myk7by5wcm90b3R5cGU9bmV3IHIsby5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbih0KXt0JiZzLnNlbGVjdGl2ZUV4dGVuZChbIm1vbWVudCIsImxvY2FsZSIsImxvY2FsZXMiLCJpZCJdLHRoaXMub3B0aW9ucyx0KX0sby5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5ib2R5LnJhbmdlLl9vbk1vdXNlV2hlZWwodCl9dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZVsiY3VzdG9tLXRpbWUiXT10aGlzLGUuY2xhc3NOYW1lPSJ2aXMtY3VzdG9tLXRpbWUgIisodGhpcy5vcHRpb25zLmlkfHwiIiksZS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGUuc3R5bGUudG9wPSIwcHgiLGUuc3R5bGUuaGVpZ2h0PSIxMDAlIix0aGlzLmJhcj1lO3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2kuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIixpLnN0eWxlLnRvcD0iMHB4IixpLnN0eWxlLmxlZnQ9Ii0xMHB4IixpLnN0eWxlLmhlaWdodD0iMTAwJSIsaS5zdHlsZS53aWR0aD0iMjBweCIsaS5hZGRFdmVudExpc3RlbmVyPyhpLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLHQuYmluZCh0aGlzKSwhMSksaS5hZGRFdmVudExpc3RlbmVyKCJET01Nb3VzZVNjcm9sbCIsdC5iaW5kKHRoaXMpLCExKSk6aS5hdHRhY2hFdmVudCgib25tb3VzZXdoZWVsIix0LmJpbmQodGhpcykpLGUuYXBwZW5kQ2hpbGQoaSksdGhpcy5oYW1tZXI9bmV3IG4oaSksdGhpcy5oYW1tZXIub24oInBhbnN0YXJ0Iix0aGlzLl9vbkRyYWdTdGFydC5iaW5kKHRoaXMpKSx0aGlzLmhhbW1lci5vbigicGFubW92ZSIsdGhpcy5fb25EcmFnLmJpbmQodGhpcykpLHRoaXMuaGFtbWVyLm9uKCJwYW5lbmQiLHRoaXMuX29uRHJhZ0VuZC5iaW5kKHRoaXMpKSx0aGlzLmhhbW1lci5nZXQoInBhbiIpLnNldCh7dGhyZXNob2xkOjUsZGlyZWN0aW9uOm4uRElSRUNUSU9OX0hPUklaT05UQUx9KX0sby5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuaGlkZSgpLHRoaXMuaGFtbWVyLmRlc3Ryb3koKSx0aGlzLmhhbW1lcj1udWxsLHRoaXMuYm9keT1udWxsfSxvLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmJvZHkuZG9tLmJhY2tncm91bmRWZXJ0aWNhbDt0aGlzLmJhci5wYXJlbnROb2RlIT10JiYodGhpcy5iYXIucGFyZW50Tm9kZSYmdGhpcy5iYXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmJhciksdC5hcHBlbmRDaGlsZCh0aGlzLmJhcikpO3ZhciBlPXRoaXMuYm9keS51dGlsLnRvU2NyZWVuKHRoaXMuY3VzdG9tVGltZSksaT10aGlzLm9wdGlvbnMubG9jYWxlc1t0aGlzLm9wdGlvbnMubG9jYWxlXTtpfHwodGhpcy53YXJuZWR8fChjb25zb2xlLmxvZygiV0FSTklORzogb3B0aW9ucy5sb2NhbGVzWyciK3RoaXMub3B0aW9ucy5sb2NhbGUrIiddIG5vdCBmb3VuZC4gU2VlIGh0dHA6Ly92aXNqcy5vcmcvZG9jcy90aW1lbGluZS8jTG9jYWxpemF0aW9uIiksdGhpcy53YXJuZWQ9ITApLGk9dGhpcy5vcHRpb25zLmxvY2FsZXMuZW4pO3ZhciBvPXRoaXMub3B0aW9ucy50aXRsZTtyZXR1cm4gdm9pZCAwPT09bz8obz1pLnRpbWUrIjogIit0aGlzLm9wdGlvbnMubW9tZW50KHRoaXMuY3VzdG9tVGltZSkuZm9ybWF0KCJkZGRkLCBNTU1NIERvIFlZWVksIEg6bW06c3MiKSxvPW8uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrby5zdWJzdHJpbmcoMSkpOiJmdW5jdGlvbiI9PXR5cGVvZiBvJiYobz1vLmNhbGwodGhpcy5jdXN0b21UaW1lKSksdGhpcy5iYXIuc3R5bGUubGVmdD1lKyJweCIsdGhpcy5iYXIudGl0bGU9bywhMX0sby5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbigpe3RoaXMuYmFyLnBhcmVudE5vZGUmJnRoaXMuYmFyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5iYXIpfSxvLnByb3RvdHlwZS5zZXRDdXN0b21UaW1lPWZ1bmN0aW9uKHQpe3RoaXMuY3VzdG9tVGltZT1zLmNvbnZlcnQodCwiRGF0ZSIpLHRoaXMucmVkcmF3KCl9LG8ucHJvdG90eXBlLmdldEN1c3RvbVRpbWU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IERhdGUodGhpcy5jdXN0b21UaW1lLnZhbHVlT2YoKSl9LG8ucHJvdG90eXBlLnNldEN1c3RvbVRpdGxlPWZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucy50aXRsZT10fSxvLnByb3RvdHlwZS5fb25EcmFnU3RhcnQ9ZnVuY3Rpb24odCl7dGhpcy5ldmVudFBhcmFtcy5kcmFnZ2luZz0hMCx0aGlzLmV2ZW50UGFyYW1zLmN1c3RvbVRpbWU9dGhpcy5jdXN0b21UaW1lLHQuc3RvcFByb3BhZ2F0aW9uKCl9LG8ucHJvdG90eXBlLl9vbkRyYWc9ZnVuY3Rpb24odCl7aWYodGhpcy5ldmVudFBhcmFtcy5kcmFnZ2luZyl7dmFyIGU9dGhpcy5ib2R5LnV0aWwudG9TY3JlZW4odGhpcy5ldmVudFBhcmFtcy5jdXN0b21UaW1lKSt0LmRlbHRhWCxpPXRoaXMuYm9keS51dGlsLnRvVGltZShlKTt0aGlzLnNldEN1c3RvbVRpbWUoaSksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgidGltZWNoYW5nZSIse2lkOnRoaXMub3B0aW9ucy5pZCx0aW1lOm5ldyBEYXRlKHRoaXMuY3VzdG9tVGltZS52YWx1ZU9mKCkpLGV2ZW50OnR9KSx0LnN0b3BQcm9wYWdhdGlvbigpfX0sby5wcm90b3R5cGUuX29uRHJhZ0VuZD1mdW5jdGlvbih0KXt0aGlzLmV2ZW50UGFyYW1zLmRyYWdnaW5nJiYodGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgidGltZWNoYW5nZWQiLHtpZDp0aGlzLm9wdGlvbnMuaWQsdGltZTpuZXcgRGF0ZSh0aGlzLmN1c3RvbVRpbWUudmFsdWVPZigpKSxldmVudDp0fSksdC5zdG9wUHJvcGFnYXRpb24oKSl9LG8uY3VzdG9tVGltZUZyb21UYXJnZXQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQudGFyZ2V0O2U7KXtpZihlLmhhc093blByb3BlcnR5KCJjdXN0b20tdGltZSIpKXJldHVybiBlWyJjdXN0b20tdGltZSJdO2U9ZS5wYXJlbnROb2RlfXJldHVybiBudWxsfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlKXtlLmVuPXtjdXJyZW50OiJjdXJyZW50Iix0aW1lOiJ0aW1lIn0sZS5lbl9FTj1lLmVuLGUuZW5fVVM9ZS5lbixlLml0PXtjdXJyZW50OiJhdHR1YWxlIix0aW1lOiJ0ZW1wbyJ9LGUuaXRfSVQ9ZS5pdCxlLml0X0NIPWUuaXQsZS5ubD17Y3VycmVudDoiaHVpZGlnZSIsdGltZToidGlqZCJ9LGUubmxfTkw9ZS5ubCxlLm5sX0JFPWUubmwsZS5kZT17Y3VycmVudDoiQWt0dWVsbGUiLHRpbWU6IlplaXQifSxlLmRlX0RFPWUuZGUsZS5mcj17Y3VycmVudDoiYWN0dWVsIix0aW1lOiJoZXVyZSJ9LGUuZnJfRlI9ZS5mcixlLmZyX0NBPWUuZnIsZS5mcl9CRT1lLmZyLGUuZXM9e2N1cnJlbnQ6ImNvcnJpZW50ZSIsdGltZToiaG9yYSJ9LGUuZXNfRVM9ZS5lc30sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlKXt0aGlzLmJvZHk9dCx0aGlzLmRlZmF1bHRPcHRpb25zPXtydGw6ITEsc2hvd0N1cnJlbnRUaW1lOiEwLG1vbWVudDpyLGxvY2FsZXM6YSxsb2NhbGU6ImVuIn0sdGhpcy5vcHRpb25zPW4uZXh0ZW5kKHt9LHRoaXMuZGVmYXVsdE9wdGlvbnMpLHRoaXMub2Zmc2V0PTAsdGhpcy5fY3JlYXRlKCksdGhpcy5zZXRPcHRpb25zKGUpfXZhciBuPWkoMSkscz1pKDEyMSkscj1pKDgyKSxhPWkoMTQzKTtvLnByb3RvdHlwZT1uZXcgcyxvLnByb3RvdHlwZS5fY3JlYXRlPWZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9InZpcy1jdXJyZW50LXRpbWUiLHQuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0LnN0eWxlLnRvcD0iMHB4Iix0LnN0eWxlLmhlaWdodD0iMTAwJSIsdGhpcy5iYXI9dH0sby5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zaG93Q3VycmVudFRpbWU9ITEsdGhpcy5yZWRyYXcoKSx0aGlzLmJvZHk9bnVsbH0sby5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbih0KXt0JiZuLnNlbGVjdGl2ZUV4dGVuZChbInJ0bCIsInNob3dDdXJyZW50VGltZSIsIm1vbWVudCIsImxvY2FsZSIsImxvY2FsZXMiXSx0aGlzLm9wdGlvbnMsdCl9LG8ucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5zaG93Q3VycmVudFRpbWUpe3ZhciB0PXRoaXMuYm9keS5kb20uYmFja2dyb3VuZFZlcnRpY2FsO3RoaXMuYmFyLnBhcmVudE5vZGUhPXQmJih0aGlzLmJhci5wYXJlbnROb2RlJiZ0aGlzLmJhci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuYmFyKSx0LmFwcGVuZENoaWxkKHRoaXMuYmFyKSx0aGlzLnN0YXJ0KCkpO3ZhciBlPXRoaXMub3B0aW9ucy5tb21lbnQoKG5ldyBEYXRlKS52YWx1ZU9mKCkrdGhpcy5vZmZzZXQpLGk9dGhpcy5ib2R5LnV0aWwudG9TY3JlZW4oZSksbz10aGlzLm9wdGlvbnMubG9jYWxlc1t0aGlzLm9wdGlvbnMubG9jYWxlXTtvfHwodGhpcy53YXJuZWR8fChjb25zb2xlLmxvZygiV0FSTklORzogb3B0aW9ucy5sb2NhbGVzWyciK3RoaXMub3B0aW9ucy5sb2NhbGUrIiddIG5vdCBmb3VuZC4gU2VlIGh0dHA6Ly92aXNqcy5vcmcvZG9jcy90aW1lbGluZS8jTG9jYWxpemF0aW9uIiksdGhpcy53YXJuZWQ9ITApLG89dGhpcy5vcHRpb25zLmxvY2FsZXMuZW4pO3ZhciBuPW8uY3VycmVudCsiICIrby50aW1lKyI6ICIrZS5mb3JtYXQoImRkZGQsIE1NTU0gRG8gWVlZWSwgSDptbTpzcyIpO249bi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStuLnN1YnN0cmluZygxKSx0aGlzLm9wdGlvbnMucnRsP3RoaXMuYmFyLnN0eWxlLnJpZ2h0PWkrInB4Ijp0aGlzLmJhci5zdHlsZS5sZWZ0PWkrInB4Iix0aGlzLmJhci50aXRsZT1ufWVsc2UgdGhpcy5iYXIucGFyZW50Tm9kZSYmdGhpcy5iYXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmJhciksdGhpcy5zdG9wKCk7cmV0dXJuITF9LG8ucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2Uuc3RvcCgpO3ZhciBpPWUuYm9keS5yYW5nZS5jb252ZXJzaW9uKGUuYm9keS5kb21Qcm9wcy5jZW50ZXIud2lkdGgpLnNjYWxlLG89MS9pLzEwO288MzAmJihvPTMwKSxvPjFlMyYmKG89MWUzKSxlLnJlZHJhdygpLGUuYm9keS5lbWl0dGVyLmVtaXQoImN1cnJlbnRUaW1lVGljayIpLGUuY3VycmVudFRpbWVUaW1lcj1zZXRUaW1lb3V0KHQsbyl9dmFyIGU9dGhpczt0KCl9LG8ucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXt2b2lkIDAhPT10aGlzLmN1cnJlbnRUaW1lVGltZXImJihjbGVhclRpbWVvdXQodGhpcy5jdXJyZW50VGltZVRpbWVyKSxkZWxldGUgdGhpcy5jdXJyZW50VGltZVRpbWVyKX0sby5wcm90b3R5cGUuc2V0Q3VycmVudFRpbWU9ZnVuY3Rpb24odCl7dmFyIGU9bi5jb252ZXJ0KHQsIkRhdGUiKS52YWx1ZU9mKCksaT0obmV3IERhdGUpLnZhbHVlT2YoKTt0aGlzLm9mZnNldD1lLWksdGhpcy5yZWRyYXcoKX0sby5wcm90b3R5cGUuZ2V0Q3VycmVudFRpbWU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IERhdGUoKG5ldyBEYXRlKS52YWx1ZU9mKCkrdGhpcy5vZmZzZXQpfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLnByaW50U3R5bGU9dm9pZCAwO3ZhciBuPWkoOTApLHM9byhuKSxyPWkoNjIpLGE9byhyKSxoPWkoNTgpLGQ9byhoKSxsPWkoMTM1KSx1PW8obCksYz1pKDEzNikscD1vKGMpLGY9aSgxKSxtPSExLHY9dm9pZCAwLGc9ImJhY2tncm91bmQ6ICNGRmVlZWU7IGNvbG9yOiAjZGQwMDAwIix5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeygwLHUuZGVmYXVsdCkodGhpcyx0KX1yZXR1cm4oMCxwLmRlZmF1bHQpKHQsbnVsbCxbe2tleToidmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUsaSxvKXttPSExLHY9aTt2YXIgbj1pO3JldHVybiB2b2lkIDAhPT1vJiYobj1pW29dKSx0LnBhcnNlKGUsbixbXSksbX19LHtrZXk6InBhcnNlIix2YWx1ZTpmdW5jdGlvbihlLGksbyl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmdC5jaGVjayhuLGUsaSxvKX19LHtrZXk6ImNoZWNrIix2YWx1ZTpmdW5jdGlvbihlLGksbyxuKXt2b2lkIDA9PT1vW2VdJiZ2b2lkIDA9PT1vLl9fYW55X18/dC5nZXRTdWdnZXN0aW9uKGUsbyxuKTp2b2lkIDA9PT1vW2VdJiZ2b2lkIDAhPT1vLl9fYW55X18/Im9iamVjdCI9PT10LmdldFR5cGUoaVtlXSkmJnZvaWQgMCE9PW8uX19hbnlfXy5fX3R5cGVfXz90LmNoZWNrRmllbGRzKGUsaSxvLCJfX2FueV9fIixvLl9fYW55X18uX190eXBlX18sbik6dC5jaGVja0ZpZWxkcyhlLGksbywiX19hbnlfXyIsby5fX2FueV9fLG4pOnZvaWQgMCE9PW9bZV0uX190eXBlX18/dC5jaGVja0ZpZWxkcyhlLGksbyxlLG9bZV0uX190eXBlX18sbik6dC5jaGVja0ZpZWxkcyhlLGksbyxlLG9bZV0sbil9fSx7a2V5OiJjaGVja0ZpZWxkcyIsdmFsdWU6ZnVuY3Rpb24oZSxpLG8sbixzLHIpe3ZhciBhPXQuZ2V0VHlwZShpW2VdKSxoPXNbYV07dm9pZCAwIT09aD8iYXJyYXkiPT09dC5nZXRUeXBlKGgpJiYtMT09PWguaW5kZXhPZihpW2VdKT8oY29uc29sZS5sb2coJyVjSW52YWxpZCBvcHRpb24gZGV0ZWN0ZWQgaW4gIicrZSsnIi4gQWxsb3dlZCB2YWx1ZXMgYXJlOicrdC5wcmludChoKSsnIG5vdCAiJytpW2VdKyciLiAnK3QucHJpbnRMb2NhdGlvbihyLGUpLGcpLG09ITApOiJvYmplY3QiPT09YSYmIl9fYW55X18iIT09biYmKHI9Zi5jb3B5QW5kRXh0ZW5kQXJyYXkocixlKSx0LnBhcnNlKGlbZV0sb1tuXSxyKSk6dm9pZCAwPT09cy5hbnkmJihjb25zb2xlLmxvZygnJWNJbnZhbGlkIHR5cGUgcmVjZWl2ZWQgZm9yICInK2UrJyIuIEV4cGVjdGVkOiAnK3QucHJpbnQoKDAsZC5kZWZhdWx0KShzKSkrIi4gUmVjZWl2ZWQgWyIrYSsnXSAiJytpW2VdKyciJyt0LnByaW50TG9jYXRpb24ocixlKSxnKSxtPSEwKX19LHtrZXk6ImdldFR5cGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXZvaWQgMD09PXQ/InVuZGVmaW5lZCI6KDAsYS5kZWZhdWx0KSh0KTtyZXR1cm4ib2JqZWN0Ij09PWU/bnVsbD09PXQ/Im51bGwiOnQgaW5zdGFuY2VvZiBCb29sZWFuPyJib29sZWFuIjp0IGluc3RhbmNlb2YgTnVtYmVyPyJudW1iZXIiOnQgaW5zdGFuY2VvZiBTdHJpbmc/InN0cmluZyI6QXJyYXkuaXNBcnJheSh0KT8iYXJyYXkiOnQgaW5zdGFuY2VvZiBEYXRlPyJkYXRlIjp2b2lkIDAhPT10Lm5vZGVUeXBlPyJkb20iOiEwPT09dC5faXNBTW9tZW50T2JqZWN0PyJtb21lbnQiOiJvYmplY3QiOiJudW1iZXIiPT09ZT8ibnVtYmVyIjoiYm9vbGVhbiI9PT1lPyJib29sZWFuIjoic3RyaW5nIj09PWU/InN0cmluZyI6dm9pZCAwPT09ZT8idW5kZWZpbmVkIjplfX0se2tleToiZ2V0U3VnZ2VzdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSxpLG8pe3ZhciBuPXQuZmluZEluT3B0aW9ucyhlLGksbywhMSkscz10LmZpbmRJbk9wdGlvbnMoZSx2LFtdLCEwKTt2b2lkIDAhPT1uLmluZGV4TWF0Y2g/Y29uc29sZS5sb2coJyVjVW5rbm93biBvcHRpb24gZGV0ZWN0ZWQ6ICInK2UrJyIgaW4gJyt0LnByaW50TG9jYXRpb24obi5wYXRoLGUsIiIpKydQZXJoYXBzIGl0IHdhcyBpbmNvbXBsZXRlPyBEaWQgeW91IG1lYW46ICInK24uaW5kZXhNYXRjaCsnIj9cblxuJyxnKTpzLmRpc3RhbmNlPD00JiZuLmRpc3RhbmNlPnMuZGlzdGFuY2U/Y29uc29sZS5sb2coJyVjVW5rbm93biBvcHRpb24gZGV0ZWN0ZWQ6ICInK2UrJyIgaW4gJyt0LnByaW50TG9jYXRpb24obi5wYXRoLGUsIiIpKyJQZXJoYXBzIGl0IHdhcyBtaXNwbGFjZWQ/IE1hdGNoaW5nIG9wdGlvbiBmb3VuZCBhdDogIit0LnByaW50TG9jYXRpb24ocy5wYXRoLHMuY2xvc2VzdE1hdGNoLCIiKSxnKTpuLmRpc3RhbmNlPD04P2NvbnNvbGUubG9nKCclY1Vua25vd24gb3B0aW9uIGRldGVjdGVkOiAiJytlKyciLiBEaWQgeW91IG1lYW4gIicrbi5jbG9zZXN0TWF0Y2grJyI/Jyt0LnByaW50TG9jYXRpb24obi5wYXRoLGUpLGcpOmNvbnNvbGUubG9nKCclY1Vua25vd24gb3B0aW9uIGRldGVjdGVkOiAiJytlKyciLiBEaWQgeW91IG1lYW4gb25lIG9mIHRoZXNlOiAnK3QucHJpbnQoKDAsZC5kZWZhdWx0KShpKSkrdC5wcmludExvY2F0aW9uKG8sZSksZyksbT0hMH19LHtrZXk6ImZpbmRJbk9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGUsaSxvKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdLHM9MWU5LHI9IiIsYT1bXSxoPWUudG9Mb3dlckNhc2UoKSxkPXZvaWQgMDtmb3IodmFyIGwgaW4gaSl7dmFyIHU9dm9pZCAwO2lmKHZvaWQgMCE9PWlbbF0uX190eXBlX18mJiEwPT09bil7dmFyIGM9dC5maW5kSW5PcHRpb25zKGUsaVtsXSxmLmNvcHlBbmRFeHRlbmRBcnJheShvLGwpKTtzPmMuZGlzdGFuY2UmJihyPWMuY2xvc2VzdE1hdGNoLGE9Yy5wYXRoLHM9Yy5kaXN0YW5jZSxkPWMuaW5kZXhNYXRjaCl9ZWxzZS0xIT09bC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoaCkmJihkPWwpLHU9dC5sZXZlbnNodGVpbkRpc3RhbmNlKGUsbCkscz51JiYocj1sLGE9Zi5jb3B5QXJyYXkobykscz11KX1yZXR1cm57Y2xvc2VzdE1hdGNoOnIscGF0aDphLGRpc3RhbmNlOnMsaW5kZXhNYXRjaDpkfX19LHtrZXk6InByaW50TG9jYXRpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToiUHJvYmxlbSB2YWx1ZSBmb3VuZCBhdDogXG4iLG89IlxuXG4iK2krIm9wdGlvbnMgPSB7XG4iLG49MDtuPHQubGVuZ3RoO24rKyl7Zm9yKHZhciBzPTA7czxuKzE7cysrKW8rPSIgICI7bys9dFtuXSsiOiB7XG4ifWZvcih2YXIgcj0wO3I8dC5sZW5ndGgrMTtyKyspbys9IiAgIjtvKz1lKyJcbiI7Zm9yKHZhciBhPTA7YTx0Lmxlbmd0aCsxO2ErKyl7Zm9yKHZhciBoPTA7aDx0Lmxlbmd0aC1hO2grKylvKz0iICAiO28rPSJ9XG4ifXJldHVybiBvKyJcblxuIn19LHtrZXk6InByaW50Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4oMCxzLmRlZmF1bHQpKHQpLnJlcGxhY2UoLyhcIil8KFxbKXwoXF0pfCgsIl9fdHlwZV9fIikvZywiIikucmVwbGFjZSgvKFwsKS9nLCIsICIpfX0se2tleToibGV2ZW5zaHRlaW5EaXN0YW5jZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZigwPT09dC5sZW5ndGgpcmV0dXJuIGUubGVuZ3RoO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdC5sZW5ndGg7dmFyIGksbz1bXTtmb3IoaT0wO2k8PWUubGVuZ3RoO2krKylvW2ldPVtpXTt2YXIgbjtmb3Iobj0wO248PXQubGVuZ3RoO24rKylvWzBdW25dPW47Zm9yKGk9MTtpPD1lLmxlbmd0aDtpKyspZm9yKG49MTtuPD10Lmxlbmd0aDtuKyspZS5jaGFyQXQoaS0xKT09dC5jaGFyQXQobi0xKT9vW2ldW25dPW9baS0xXVtuLTFdOm9baV1bbl09TWF0aC5taW4ob1tpLTFdW24tMV0rMSxNYXRoLm1pbihvW2ldW24tMV0rMSxvW2ktMV1bbl0rMSkpO3JldHVybiBvW2UubGVuZ3RoXVt0Lmxlbmd0aF19fV0pLHR9KCk7ZS5kZWZhdWx0PXksZS5wcmludFN0eWxlPWd9LGZ1bmN0aW9uKHQsZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPSJzdHJpbmciLG89ImJvb2xlYW4iLG49Im51bWJlciIscz0ib2JqZWN0IixyPXtjb25maWd1cmU6e2VuYWJsZWQ6e2Jvb2xlYW46b30sZmlsdGVyOntib29sZWFuOm8sZnVuY3Rpb246ImZ1bmN0aW9uIn0sY29udGFpbmVyOntkb206ImRvbSJ9LF9fdHlwZV9fOntvYmplY3Q6cyxib29sZWFuOm8sZnVuY3Rpb246ImZ1bmN0aW9uIn19LGFsaWduOntzdHJpbmc6aX0scnRsOntib29sZWFuOm8sdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxyb2xsaW5nTW9kZTp7Zm9sbG93Ontib29sZWFuOm99LG9mZnNldDp7bnVtYmVyOm4sdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxfX3R5cGVfXzp7b2JqZWN0OnN9fSx2ZXJ0aWNhbFNjcm9sbDp7Ym9vbGVhbjpvLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0saG9yaXpvbnRhbFNjcm9sbDp7Ym9vbGVhbjpvLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sYXV0b1Jlc2l6ZTp7Ym9vbGVhbjpvfSx0aHJvdHRsZVJlZHJhdzp7bnVtYmVyOm59LGNsaWNrVG9Vc2U6e2Jvb2xlYW46b30sZGF0YUF0dHJpYnV0ZXM6e3N0cmluZzppLGFycmF5OiJhcnJheSJ9LGVkaXRhYmxlOnthZGQ6e2Jvb2xlYW46byx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LHJlbW92ZTp7Ym9vbGVhbjpvLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sdXBkYXRlR3JvdXA6e2Jvb2xlYW46byx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LHVwZGF0ZVRpbWU6e2Jvb2xlYW46byx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LG92ZXJyaWRlSXRlbXM6e2Jvb2xlYW46byx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LF9fdHlwZV9fOntib29sZWFuOm8sb2JqZWN0OnN9fSxlbmQ6e251bWJlcjpuLGRhdGU6ImRhdGUiLHN0cmluZzppLG1vbWVudDoibW9tZW50In0sZm9ybWF0OnttaW5vckxhYmVsczp7bWlsbGlzZWNvbmQ6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sc2Vjb25kOntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LG1pbnV0ZTp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxob3VyOntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LHdlZWtkYXk6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sZGF5OntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LHdlZWs6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sbW9udGg6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0seWVhcjp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxfX3R5cGVfXzp7b2JqZWN0OnMsZnVuY3Rpb246ImZ1bmN0aW9uIn19LG1ham9yTGFiZWxzOnttaWxsaXNlY29uZDp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxzZWNvbmQ6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sbWludXRlOntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LGhvdXI6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sd2Vla2RheTp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxkYXk6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sd2Vlazp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxtb250aDp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSx5ZWFyOntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LF9fdHlwZV9fOntvYmplY3Q6cyxmdW5jdGlvbjoiZnVuY3Rpb24ifX0sX190eXBlX186e29iamVjdDpzfX0sbW9tZW50OntmdW5jdGlvbjoiZnVuY3Rpb24ifSxncm91cE9yZGVyOntzdHJpbmc6aSxmdW5jdGlvbjoiZnVuY3Rpb24ifSxncm91cEVkaXRhYmxlOnthZGQ6e2Jvb2xlYW46byx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LHJlbW92ZTp7Ym9vbGVhbjpvLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sb3JkZXI6e2Jvb2xlYW46byx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LF9fdHlwZV9fOntib29sZWFuOm8sb2JqZWN0OnN9fSxncm91cE9yZGVyU3dhcDp7ZnVuY3Rpb246ImZ1bmN0aW9uIn0saGVpZ2h0OntzdHJpbmc6aSxudW1iZXI6bn0saGlkZGVuRGF0ZXM6e3N0YXJ0OntkYXRlOiJkYXRlIixudW1iZXI6bixzdHJpbmc6aSxtb21lbnQ6Im1vbWVudCJ9LGVuZDp7ZGF0ZToiZGF0ZSIsbnVtYmVyOm4sc3RyaW5nOmksbW9tZW50OiJtb21lbnQifSxyZXBlYXQ6e3N0cmluZzppfSxfX3R5cGVfXzp7b2JqZWN0OnMsYXJyYXk6ImFycmF5In19LGl0ZW1zQWx3YXlzRHJhZ2dhYmxlOntpdGVtOntib29sZWFuOm8sdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxyYW5nZTp7Ym9vbGVhbjpvLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sX190eXBlX186e2Jvb2xlYW46byxvYmplY3Q6c319LGxvY2FsZTp7c3RyaW5nOml9LGxvY2FsZXM6e19fYW55X186e2FueToiYW55In0sX190eXBlX186e29iamVjdDpzfX0sbWFyZ2luOntheGlzOntudW1iZXI6bn0saXRlbTp7aG9yaXpvbnRhbDp7bnVtYmVyOm4sdW5kZWZpbmVkOiJ1bmRlZmluZWQifSx2ZXJ0aWNhbDp7bnVtYmVyOm4sdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxfX3R5cGVfXzp7b2JqZWN0OnMsbnVtYmVyOm59fSxfX3R5cGVfXzp7b2JqZWN0OnMsbnVtYmVyOm59fSxtYXg6e2RhdGU6ImRhdGUiLG51bWJlcjpuLHN0cmluZzppLG1vbWVudDoibW9tZW50In0sbWF4SGVpZ2h0OntudW1iZXI6bixzdHJpbmc6aX0sbWF4TWlub3JDaGFyczp7bnVtYmVyOm59LG1pbjp7ZGF0ZToiZGF0ZSIsbnVtYmVyOm4sc3RyaW5nOmksbW9tZW50OiJtb21lbnQifSxtaW5IZWlnaHQ6e251bWJlcjpuLHN0cmluZzppfSxtb3ZlYWJsZTp7Ym9vbGVhbjpvfSxtdWx0aXNlbGVjdDp7Ym9vbGVhbjpvfSxtdWx0aXNlbGVjdFBlckdyb3VwOntib29sZWFuOm99LG9uQWRkOntmdW5jdGlvbjoiZnVuY3Rpb24ifSxvblVwZGF0ZTp7ZnVuY3Rpb246ImZ1bmN0aW9uIn0sb25Nb3ZlOntmdW5jdGlvbjoiZnVuY3Rpb24ifSxvbk1vdmluZzp7ZnVuY3Rpb246ImZ1bmN0aW9uIn0sb25SZW1vdmU6e2Z1bmN0aW9uOiJmdW5jdGlvbiJ9LG9uQWRkR3JvdXA6e2Z1bmN0aW9uOiJmdW5jdGlvbiJ9LG9uTW92ZUdyb3VwOntmdW5jdGlvbjoiZnVuY3Rpb24ifSxvblJlbW92ZUdyb3VwOntmdW5jdGlvbjoiZnVuY3Rpb24ifSxvcmRlcjp7ZnVuY3Rpb246ImZ1bmN0aW9uIn0sb3JpZW50YXRpb246e2F4aXM6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0saXRlbTp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxfX3R5cGVfXzp7c3RyaW5nOmksb2JqZWN0OnN9fSxzZWxlY3RhYmxlOntib29sZWFuOm99LHNob3dDdXJyZW50VGltZTp7Ym9vbGVhbjpvfSxzaG93TWFqb3JMYWJlbHM6e2Jvb2xlYW46b30sc2hvd01pbm9yTGFiZWxzOntib29sZWFuOm99LHN0YWNrOntib29sZWFuOm99LHN0YWNrU3ViZ3JvdXBzOntib29sZWFuOm99LHNuYXA6e2Z1bmN0aW9uOiJmdW5jdGlvbiIsbnVsbDoibnVsbCJ9LHN0YXJ0OntkYXRlOiJkYXRlIixudW1iZXI6bixzdHJpbmc6aSxtb21lbnQ6Im1vbWVudCJ9LHRlbXBsYXRlOntmdW5jdGlvbjoiZnVuY3Rpb24ifSxncm91cFRlbXBsYXRlOntmdW5jdGlvbjoiZnVuY3Rpb24ifSx2aXNpYmxlRnJhbWVUZW1wbGF0ZTp7c3RyaW5nOmksZnVuY3Rpb246ImZ1bmN0aW9uIn0sc2hvd1Rvb2x0aXBzOntib29sZWFuOm99LHRvb2x0aXA6e2ZvbGxvd01vdXNlOntib29sZWFuOm99LG92ZXJmbG93TWV0aG9kOntzdHJpbmc6WyJjYXAiLCJmbGlwIl19LF9fdHlwZV9fOntvYmplY3Q6c319LHRvb2x0aXBPbkl0ZW1VcGRhdGVUaW1lOnt0ZW1wbGF0ZTp7ZnVuY3Rpb246ImZ1bmN0aW9uIn0sX190eXBlX186e2Jvb2xlYW46byxvYmplY3Q6c319LHRpbWVBeGlzOntzY2FsZTp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxzdGVwOntudW1iZXI6bix1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LF9fdHlwZV9fOntvYmplY3Q6c319LHR5cGU6e3N0cmluZzppfSx3aWR0aDp7c3RyaW5nOmksbnVtYmVyOm59LHpvb21hYmxlOntib29sZWFuOm99LHpvb21LZXk6e3N0cmluZzpbImN0cmxLZXkiLCJhbHRLZXkiLCJtZXRhS2V5IiwiIl19LHpvb21NYXg6e251bWJlcjpufSx6b29tTWluOntudW1iZXI6bn0sX190eXBlX186e29iamVjdDpzfX0sYT17Z2xvYmFsOnthbGlnbjpbImNlbnRlciIsImxlZnQiLCJyaWdodCJdLGRpcmVjdGlvbjohMSxhdXRvUmVzaXplOiEwLGNsaWNrVG9Vc2U6ITEsZWRpdGFibGU6e2FkZDohMSxyZW1vdmU6ITEsdXBkYXRlR3JvdXA6ITEsdXBkYXRlVGltZTohMX0sZW5kOiIiLGZvcm1hdDp7bWlub3JMYWJlbHM6e21pbGxpc2Vjb25kOiJTU1MiLHNlY29uZDoicyIsbWludXRlOiJISDptbSIsaG91cjoiSEg6bW0iLHdlZWtkYXk6ImRkZCBEIixkYXk6IkQiLHdlZWs6InciLG1vbnRoOiJNTU0iLHllYXI6IllZWVkifSxtYWpvckxhYmVsczp7bWlsbGlzZWNvbmQ6IkhIOm1tOnNzIixzZWNvbmQ6IkQgTU1NTSBISDptbSIsbWludXRlOiJkZGQgRCBNTU1NIixob3VyOiJkZGQgRCBNTU1NIix3ZWVrZGF5OiJNTU1NIFlZWVkiLGRheToiTU1NTSBZWVlZIix3ZWVrOiJNTU1NIFlZWVkiLG1vbnRoOiJZWVlZIix5ZWFyOiIifX0sZ3JvdXBzRHJhZ2dhYmxlOiExLGhlaWdodDoiIixsb2NhbGU6IiIsbWFyZ2luOntheGlzOlsyMCwwLDEwMCwxXSxpdGVtOntob3Jpem9udGFsOlsxMCwwLDEwMCwxXSx2ZXJ0aWNhbDpbMTAsMCwxMDAsMV19fSxtYXg6IiIsbWF4SGVpZ2h0OiIiLG1heE1pbm9yQ2hhcnM6WzcsMCwyMCwxXSxtaW46IiIsbWluSGVpZ2h0OiIiLG1vdmVhYmxlOiExLG11bHRpc2VsZWN0OiExLG11bHRpc2VsZWN0UGVyR3JvdXA6ITEsb3JpZW50YXRpb246e2F4aXM6WyJib3RoIiwiYm90dG9tIiwidG9wIl0saXRlbTpbImJvdHRvbSIsInRvcCJdfSxzZWxlY3RhYmxlOiEwLHNob3dDdXJyZW50VGltZTohMSxzaG93TWFqb3JMYWJlbHM6ITAsc2hvd01pbm9yTGFiZWxzOiEwLHN0YWNrOiEwLHN0YWNrU3ViZ3JvdXBzOiEwLHN0YXJ0OiIiLHNob3dUb29sdGlwczohMCx0b29sdGlwOntmb2xsb3dNb3VzZTohMSxvdmVyZmxvd01ldGhvZDoiZmxpcCJ9LHRvb2x0aXBPbkl0ZW1VcGRhdGVUaW1lOiExLHR5cGU6WyJib3giLCJwb2ludCIsInJhbmdlIiwiYmFja2dyb3VuZCJdLHdpZHRoOiIxMDAlIix6b29tYWJsZTohMCx6b29tS2V5OlsiY3RybEtleSIsImFsdEtleSIsIm1ldGFLZXkiLCIiXSx6b29tTWF4OlszMTUzNmUxMCwxMCwzMTUzNmUxMCwxXSx6b29tTWluOlsxMCwxMCwzMTUzNmUxMCwxXX19O2UuYWxsT3B0aW9ucz1yLGUuY29uZmlndXJlT3B0aW9ucz1hfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoOTApLHM9byhuKSxyPWkoNjIpLGE9byhyKSxoPWkoMTM1KSxkPW8oaCksbD1pKDEzNiksdT1vKGwpLGM9aSgxKSxwPWkoMTQ4KS5kZWZhdWx0LGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSxvKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MTsoMCxkLmRlZmF1bHQpKHRoaXMsdCksdGhpcy5wYXJlbnQ9ZSx0aGlzLmNoYW5nZWRPcHRpb25zPVtdLHRoaXMuY29udGFpbmVyPWksdGhpcy5hbGxvd0NyZWF0aW9uPSExLHRoaXMub3B0aW9ucz17fSx0aGlzLmluaXRpYWxpemVkPSExLHRoaXMucG9wdXBDb3VudGVyPTAsdGhpcy5kZWZhdWx0T3B0aW9ucz17ZW5hYmxlZDohMSxmaWx0ZXI6ITAsY29udGFpbmVyOnZvaWQgMCxzaG93QnV0dG9uOiEwfSxjLmV4dGVuZCh0aGlzLm9wdGlvbnMsdGhpcy5kZWZhdWx0T3B0aW9ucyksdGhpcy5jb25maWd1cmVPcHRpb25zPW8sdGhpcy5tb2R1bGVPcHRpb25zPXt9LHRoaXMuZG9tRWxlbWVudHM9W10sdGhpcy5wb3B1cERpdj17fSx0aGlzLnBvcHVwTGltaXQ9NSx0aGlzLnBvcHVwSGlzdG9yeT17fSx0aGlzLmNvbG9yUGlja2VyPW5ldyBwKG4pLHRoaXMud3JhcHBlcj12b2lkIDB9cmV0dXJuKDAsdS5kZWZhdWx0KSh0LFt7a2V5OiJzZXRPcHRpb25zIiwNCnZhbHVlOmZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQpe3RoaXMucG9wdXBIaXN0b3J5PXt9LHRoaXMuX3JlbW92ZVBvcHVwKCk7dmFyIGU9ITA7InN0cmluZyI9PXR5cGVvZiB0P3RoaXMub3B0aW9ucy5maWx0ZXI9dDp0IGluc3RhbmNlb2YgQXJyYXk/dGhpcy5vcHRpb25zLmZpbHRlcj10LmpvaW4oKToib2JqZWN0Ij09PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOigwLGEuZGVmYXVsdCkodCkpPyh2b2lkIDAhPT10LmNvbnRhaW5lciYmKHRoaXMub3B0aW9ucy5jb250YWluZXI9dC5jb250YWluZXIpLHZvaWQgMCE9PXQuZmlsdGVyJiYodGhpcy5vcHRpb25zLmZpbHRlcj10LmZpbHRlciksdm9pZCAwIT09dC5zaG93QnV0dG9uJiYodGhpcy5vcHRpb25zLnNob3dCdXR0b249dC5zaG93QnV0dG9uKSx2b2lkIDAhPT10LmVuYWJsZWQmJihlPXQuZW5hYmxlZCkpOiJib29sZWFuIj09dHlwZW9mIHQ/KHRoaXMub3B0aW9ucy5maWx0ZXI9ITAsZT10KToiZnVuY3Rpb24iPT10eXBlb2YgdCYmKHRoaXMub3B0aW9ucy5maWx0ZXI9dCxlPSEwKSwhMT09PXRoaXMub3B0aW9ucy5maWx0ZXImJihlPSExKSx0aGlzLm9wdGlvbnMuZW5hYmxlZD1lfXRoaXMuX2NsZWFuKCl9fSx7a2V5OiJzZXRNb2R1bGVPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLm1vZHVsZU9wdGlvbnM9dCwhMD09PXRoaXMub3B0aW9ucy5lbmFibGVkJiYodGhpcy5fY2xlYW4oKSx2b2lkIDAhPT10aGlzLm9wdGlvbnMuY29udGFpbmVyJiYodGhpcy5jb250YWluZXI9dGhpcy5vcHRpb25zLmNvbnRhaW5lciksdGhpcy5fY3JlYXRlKCkpfX0se2tleToiX2NyZWF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX2NsZWFuKCksdGhpcy5jaGFuZ2VkT3B0aW9ucz1bXTt2YXIgZT10aGlzLm9wdGlvbnMuZmlsdGVyLGk9MCxvPSExO2Zvcih2YXIgbiBpbiB0aGlzLmNvbmZpZ3VyZU9wdGlvbnMpdGhpcy5jb25maWd1cmVPcHRpb25zLmhhc093blByb3BlcnR5KG4pJiYodGhpcy5hbGxvd0NyZWF0aW9uPSExLG89ITEsImZ1bmN0aW9uIj09dHlwZW9mIGU/KG89ZShuLFtdKSxvPW98fHRoaXMuX2hhbmRsZU9iamVjdCh0aGlzLmNvbmZpZ3VyZU9wdGlvbnNbbl0sW25dLCEwKSk6ITAhPT1lJiYtMT09PWUuaW5kZXhPZihuKXx8KG89ITApLCExIT09byYmKHRoaXMuYWxsb3dDcmVhdGlvbj0hMCxpPjAmJnRoaXMuX21ha2VJdGVtKFtdKSx0aGlzLl9tYWtlSGVhZGVyKG4pLHRoaXMuX2hhbmRsZU9iamVjdCh0aGlzLmNvbmZpZ3VyZU9wdGlvbnNbbl0sW25dKSksaSsrKTtpZighMD09PXRoaXMub3B0aW9ucy5zaG93QnV0dG9uKXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtzLmNsYXNzTmFtZT0idmlzLWNvbmZpZ3VyYXRpb24gdmlzLWNvbmZpZy1idXR0b24iLHMuaW5uZXJIVE1MPSJnZW5lcmF0ZSBvcHRpb25zIixzLm9uY2xpY2s9ZnVuY3Rpb24oKXt0Ll9wcmludE9wdGlvbnMoKX0scy5vbm1vdXNlb3Zlcj1mdW5jdGlvbigpe3MuY2xhc3NOYW1lPSJ2aXMtY29uZmlndXJhdGlvbiB2aXMtY29uZmlnLWJ1dHRvbiBob3ZlciJ9LHMub25tb3VzZW91dD1mdW5jdGlvbigpe3MuY2xhc3NOYW1lPSJ2aXMtY29uZmlndXJhdGlvbiB2aXMtY29uZmlnLWJ1dHRvbiJ9LHRoaXMub3B0aW9uc0NvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLm9wdGlvbnNDb250YWluZXIuY2xhc3NOYW1lPSJ2aXMtY29uZmlndXJhdGlvbiB2aXMtY29uZmlnLW9wdGlvbi1jb250YWluZXIiLHRoaXMuZG9tRWxlbWVudHMucHVzaCh0aGlzLm9wdGlvbnNDb250YWluZXIpLHRoaXMuZG9tRWxlbWVudHMucHVzaChzKX10aGlzLl9wdXNoKCl9fSx7a2V5OiJfcHVzaCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLndyYXBwZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy53cmFwcGVyLmNsYXNzTmFtZT0idmlzLWNvbmZpZ3VyYXRpb24td3JhcHBlciIsdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy53cmFwcGVyKTtmb3IodmFyIHQ9MDt0PHRoaXMuZG9tRWxlbWVudHMubGVuZ3RoO3QrKyl0aGlzLndyYXBwZXIuYXBwZW5kQ2hpbGQodGhpcy5kb21FbGVtZW50c1t0XSk7dGhpcy5fc2hvd1BvcHVwSWZOZWVkZWQoKX19LHtrZXk6Il9jbGVhbiIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMuZG9tRWxlbWVudHMubGVuZ3RoO3QrKyl0aGlzLndyYXBwZXIucmVtb3ZlQ2hpbGQodGhpcy5kb21FbGVtZW50c1t0XSk7dm9pZCAwIT09dGhpcy53cmFwcGVyJiYodGhpcy5jb250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy53cmFwcGVyKSx0aGlzLndyYXBwZXI9dm9pZCAwKSx0aGlzLmRvbUVsZW1lbnRzPVtdLHRoaXMuX3JlbW92ZVBvcHVwKCl9fSx7a2V5OiJfZ2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLm1vZHVsZU9wdGlvbnMsaT0wO2k8dC5sZW5ndGg7aSsrKXtpZih2b2lkIDA9PT1lW3RbaV1dKXtlPXZvaWQgMDticmVha31lPWVbdFtpXV19cmV0dXJuIGV9fSx7a2V5OiJfbWFrZUl0ZW0iLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCEwPT09dGhpcy5hbGxvd0NyZWF0aW9uKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLmNsYXNzTmFtZT0idmlzLWNvbmZpZ3VyYXRpb24gdmlzLWNvbmZpZy1pdGVtIHZpcy1jb25maWctcyIrdC5sZW5ndGg7Zm9yKHZhciBpPWFyZ3VtZW50cy5sZW5ndGgsbz1BcnJheShpPjE/aS0xOjApLG49MTtuPGk7bisrKW9bbi0xXT1hcmd1bWVudHNbbl07cmV0dXJuIG8uZm9yRWFjaChmdW5jdGlvbih0KXtlLmFwcGVuZENoaWxkKHQpfSksdGhpcy5kb21FbGVtZW50cy5wdXNoKGUpLHRoaXMuZG9tRWxlbWVudHMubGVuZ3RofXJldHVybiAwfX0se2tleToiX21ha2VIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NOYW1lPSJ2aXMtY29uZmlndXJhdGlvbiB2aXMtY29uZmlnLWhlYWRlciIsZS5pbm5lckhUTUw9dCx0aGlzLl9tYWtlSXRlbShbXSxlKX19LHtrZXk6Il9tYWtlTGFiZWwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBvLmNsYXNzTmFtZT0idmlzLWNvbmZpZ3VyYXRpb24gdmlzLWNvbmZpZy1sYWJlbCB2aXMtY29uZmlnLXMiK2UubGVuZ3RoLG8uaW5uZXJIVE1MPSEwPT09aT8iPGk+PGI+Iit0KyI6PC9iPjwvaT4iOnQrIjoiLG99fSx7a2V5OiJfbWFrZURyb3Bkb3duIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7by5jbGFzc05hbWU9InZpcy1jb25maWd1cmF0aW9uIHZpcy1jb25maWctc2VsZWN0Ijt2YXIgbj0wO3ZvaWQgMCE9PWUmJi0xIT09dC5pbmRleE9mKGUpJiYobj10LmluZGV4T2YoZSkpO2Zvcih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKXt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTtyLnZhbHVlPXRbc10scz09PW4mJihyLnNlbGVjdGVkPSJzZWxlY3RlZCIpLHIuaW5uZXJIVE1MPXRbc10sby5hcHBlbmRDaGlsZChyKX12YXIgYT10aGlzO28ub25jaGFuZ2U9ZnVuY3Rpb24oKXthLl91cGRhdGUodGhpcy52YWx1ZSxpKX07dmFyIGg9dGhpcy5fbWFrZUxhYmVsKGlbaS5sZW5ndGgtMV0saSk7dGhpcy5fbWFrZUl0ZW0oaSxoLG8pfX0se2tleToiX21ha2VSYW5nZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBvPXRbMF0sbj10WzFdLHM9dFsyXSxyPXRbM10sYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2EuY2xhc3NOYW1lPSJ2aXMtY29uZmlndXJhdGlvbiB2aXMtY29uZmlnLXJhbmdlIjt0cnl7YS50eXBlPSJyYW5nZSIsYS5taW49bixhLm1heD1zfWNhdGNoKHQpe31hLnN0ZXA9cjt2YXIgaD0iIixkPTA7aWYodm9pZCAwIT09ZSl7ZTwwJiYxLjIqZTxuPyhhLm1pbj1NYXRoLmNlaWwoMS4yKmUpLGQ9YS5taW4saD0icmFuZ2UgaW5jcmVhc2VkIik6ZS8xLjI8biYmKGEubWluPU1hdGguY2VpbChlLzEuMiksZD1hLm1pbixoPSJyYW5nZSBpbmNyZWFzZWQiKSwxLjIqZT5zJiYxIT09cyYmKGEubWF4PU1hdGguY2VpbCgxLjIqZSksZD1hLm1heCxoPSJyYW5nZSBpbmNyZWFzZWQiKSxhLnZhbHVlPWV9ZWxzZSBhLnZhbHVlPW87dmFyIGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtsLmNsYXNzTmFtZT0idmlzLWNvbmZpZ3VyYXRpb24gdmlzLWNvbmZpZy1yYW5nZWlucHV0IixsLnZhbHVlPWEudmFsdWU7dmFyIHU9dGhpczthLm9uY2hhbmdlPWZ1bmN0aW9uKCl7bC52YWx1ZT10aGlzLnZhbHVlLHUuX3VwZGF0ZShOdW1iZXIodGhpcy52YWx1ZSksaSl9LGEub25pbnB1dD1mdW5jdGlvbigpe2wudmFsdWU9dGhpcy52YWx1ZX07dmFyIGM9dGhpcy5fbWFrZUxhYmVsKGlbaS5sZW5ndGgtMV0saSkscD10aGlzLl9tYWtlSXRlbShpLGMsYSxsKTsiIiE9PWgmJnRoaXMucG9wdXBIaXN0b3J5W3BdIT09ZCYmKHRoaXMucG9wdXBIaXN0b3J5W3BdPWQsdGhpcy5fc2V0dXBQb3B1cChoLHApKX19LHtrZXk6Il9zZXR1cFBvcHVwIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7aWYoITA9PT10aGlzLmluaXRpYWxpemVkJiYhMD09PXRoaXMuYWxsb3dDcmVhdGlvbiYmdGhpcy5wb3B1cENvdW50ZXI8dGhpcy5wb3B1cExpbWl0KXt2YXIgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtvLmlkPSJ2aXMtY29uZmlndXJhdGlvbi1wb3B1cCIsby5jbGFzc05hbWU9InZpcy1jb25maWd1cmF0aW9uLXBvcHVwIixvLmlubmVySFRNTD10LG8ub25jbGljaz1mdW5jdGlvbigpe2kuX3JlbW92ZVBvcHVwKCl9LHRoaXMucG9wdXBDb3VudGVyKz0xLHRoaXMucG9wdXBEaXY9e2h0bWw6byxpbmRleDplfX19fSx7a2V5OiJfcmVtb3ZlUG9wdXAiLHZhbHVlOmZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5wb3B1cERpdi5odG1sJiYodGhpcy5wb3B1cERpdi5odG1sLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5wb3B1cERpdi5odG1sKSxjbGVhclRpbWVvdXQodGhpcy5wb3B1cERpdi5oaWRlVGltZW91dCksY2xlYXJUaW1lb3V0KHRoaXMucG9wdXBEaXYuZGVsZXRlVGltZW91dCksdGhpcy5wb3B1cERpdj17fSl9fSx7a2V5OiJfc2hvd1BvcHVwSWZOZWVkZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih2b2lkIDAhPT10aGlzLnBvcHVwRGl2Lmh0bWwpe3ZhciBlPXRoaXMuZG9tRWxlbWVudHNbdGhpcy5wb3B1cERpdi5pbmRleF0saT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMucG9wdXBEaXYuaHRtbC5zdHlsZS5sZWZ0PWkubGVmdCsicHgiLHRoaXMucG9wdXBEaXYuaHRtbC5zdHlsZS50b3A9aS50b3AtMzArInB4Iixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMucG9wdXBEaXYuaHRtbCksdGhpcy5wb3B1cERpdi5oaWRlVGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5wb3B1cERpdi5odG1sLnN0eWxlLm9wYWNpdHk9MH0sMTUwMCksdGhpcy5wb3B1cERpdi5kZWxldGVUaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0Ll9yZW1vdmVQb3B1cCgpfSwxODAwKX19fSx7a2V5OiJfbWFrZUNoZWNrYm94Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtvLnR5cGU9ImNoZWNrYm94IixvLmNsYXNzTmFtZT0idmlzLWNvbmZpZ3VyYXRpb24gdmlzLWNvbmZpZy1jaGVja2JveCIsby5jaGVja2VkPXQsdm9pZCAwIT09ZSYmKG8uY2hlY2tlZD1lLGUhPT10JiYoIm9iamVjdCI9PT0odm9pZCAwPT09dD8idW5kZWZpbmVkIjooMCxhLmRlZmF1bHQpKHQpKT9lIT09dC5lbmFibGVkJiZ0aGlzLmNoYW5nZWRPcHRpb25zLnB1c2goe3BhdGg6aSx2YWx1ZTplfSk6dGhpcy5jaGFuZ2VkT3B0aW9ucy5wdXNoKHtwYXRoOmksdmFsdWU6ZX0pKSk7dmFyIG49dGhpcztvLm9uY2hhbmdlPWZ1bmN0aW9uKCl7bi5fdXBkYXRlKHRoaXMuY2hlY2tlZCxpKX07dmFyIHM9dGhpcy5fbWFrZUxhYmVsKGlbaS5sZW5ndGgtMV0saSk7dGhpcy5fbWFrZUl0ZW0oaSxzLG8pfX0se2tleToiX21ha2VUZXh0SW5wdXQiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO28udHlwZT0idGV4dCIsby5jbGFzc05hbWU9InZpcy1jb25maWd1cmF0aW9uIHZpcy1jb25maWctdGV4dCIsby52YWx1ZT1lLGUhPT10JiZ0aGlzLmNoYW5nZWRPcHRpb25zLnB1c2goe3BhdGg6aSx2YWx1ZTplfSk7dmFyIG49dGhpcztvLm9uY2hhbmdlPWZ1bmN0aW9uKCl7bi5fdXBkYXRlKHRoaXMudmFsdWUsaSl9O3ZhciBzPXRoaXMuX21ha2VMYWJlbChpW2kubGVuZ3RoLTFdLGkpO3RoaXMuX21ha2VJdGVtKGkscyxvKX19LHtrZXk6Il9tYWtlQ29sb3JGaWVsZCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBvPXRoaXMsbj10WzFdLHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZT12b2lkIDA9PT1lP246ZSwibm9uZSIhPT1lPyhzLmNsYXNzTmFtZT0idmlzLWNvbmZpZ3VyYXRpb24gdmlzLWNvbmZpZy1jb2xvckJsb2NrIixzLnN0eWxlLmJhY2tncm91bmRDb2xvcj1lKTpzLmNsYXNzTmFtZT0idmlzLWNvbmZpZ3VyYXRpb24gdmlzLWNvbmZpZy1jb2xvckJsb2NrIG5vbmUiLGU9dm9pZCAwPT09ZT9uOmUscy5vbmNsaWNrPWZ1bmN0aW9uKCl7by5fc2hvd0NvbG9yUGlja2VyKGUscyxpKX07dmFyIHI9dGhpcy5fbWFrZUxhYmVsKGlbaS5sZW5ndGgtMV0saSk7dGhpcy5fbWFrZUl0ZW0oaSxyLHMpfX0se2tleToiX3Nob3dDb2xvclBpY2tlciIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBvPXRoaXM7ZS5vbmNsaWNrPWZ1bmN0aW9uKCl7fSx0aGlzLmNvbG9yUGlja2VyLmluc2VydFRvKGUpLHRoaXMuY29sb3JQaWNrZXIuc2hvdygpLHRoaXMuY29sb3JQaWNrZXIuc2V0Q29sb3IodCksdGhpcy5jb2xvclBpY2tlci5zZXRVcGRhdGVDYWxsYmFjayhmdW5jdGlvbih0KXt2YXIgbj0icmdiYSgiK3QucisiLCIrdC5nKyIsIit0LmIrIiwiK3QuYSsiKSI7ZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9bixvLl91cGRhdGUobixpKX0pLHRoaXMuY29sb3JQaWNrZXIuc2V0Q2xvc2VDYWxsYmFjayhmdW5jdGlvbigpe2Uub25jbGljaz1mdW5jdGlvbigpe28uX3Nob3dDb2xvclBpY2tlcih0LGUsaSl9fSl9fSx7a2V5OiJfaGFuZGxlT2JqZWN0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10saT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLG89ITEsbj10aGlzLm9wdGlvbnMuZmlsdGVyLHM9ITE7Zm9yKHZhciByIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShyKSl7bz0hMDt2YXIgYT10W3JdLGg9Yy5jb3B5QW5kRXh0ZW5kQXJyYXkoZSxyKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbiYmITE9PT0obz1uKHIsZSkpJiYhKGEgaW5zdGFuY2VvZiBBcnJheSkmJiJzdHJpbmciIT10eXBlb2YgYSYmImJvb2xlYW4iIT10eXBlb2YgYSYmYSBpbnN0YW5jZW9mIE9iamVjdCYmKHRoaXMuYWxsb3dDcmVhdGlvbj0hMSxvPXRoaXMuX2hhbmRsZU9iamVjdChhLGgsITApLHRoaXMuYWxsb3dDcmVhdGlvbj0hMT09PWkpLCExIT09byl7cz0hMDt2YXIgZD10aGlzLl9nZXRWYWx1ZShoKTtpZihhIGluc3RhbmNlb2YgQXJyYXkpdGhpcy5faGFuZGxlQXJyYXkoYSxkLGgpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBhKXRoaXMuX21ha2VUZXh0SW5wdXQoYSxkLGgpO2Vsc2UgaWYoImJvb2xlYW4iPT10eXBlb2YgYSl0aGlzLl9tYWtlQ2hlY2tib3goYSxkLGgpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIE9iamVjdCl7dmFyIGw9ITA7aWYoLTEhPT1lLmluZGV4T2YoInBoeXNpY3MiKSYmdGhpcy5tb2R1bGVPcHRpb25zLnBoeXNpY3Muc29sdmVyIT09ciYmKGw9ITEpLCEwPT09bClpZih2b2lkIDAhPT1hLmVuYWJsZWQpe3ZhciB1PWMuY29weUFuZEV4dGVuZEFycmF5KGgsImVuYWJsZWQiKSxwPXRoaXMuX2dldFZhbHVlKHUpO2lmKCEwPT09cCl7dmFyIGY9dGhpcy5fbWFrZUxhYmVsKHIsaCwhMCk7dGhpcy5fbWFrZUl0ZW0oaCxmKSxzPXRoaXMuX2hhbmRsZU9iamVjdChhLGgpfHxzfWVsc2UgdGhpcy5fbWFrZUNoZWNrYm94KGEscCxoKX1lbHNle3ZhciBtPXRoaXMuX21ha2VMYWJlbChyLGgsITApO3RoaXMuX21ha2VJdGVtKGgsbSkscz10aGlzLl9oYW5kbGVPYmplY3QoYSxoKXx8c319ZWxzZSBjb25zb2xlLmVycm9yKCJkb250IGtub3cgaG93IHRvIGhhbmRsZSIsYSxyLGgpfX1yZXR1cm4gc319LHtrZXk6Il9oYW5kbGVBcnJheSIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpeyJzdHJpbmciPT10eXBlb2YgdFswXSYmImNvbG9yIj09PXRbMF0/KHRoaXMuX21ha2VDb2xvckZpZWxkKHQsZSxpKSx0WzFdIT09ZSYmdGhpcy5jaGFuZ2VkT3B0aW9ucy5wdXNoKHtwYXRoOmksdmFsdWU6ZX0pKToic3RyaW5nIj09dHlwZW9mIHRbMF0/KHRoaXMuX21ha2VEcm9wZG93bih0LGUsaSksdFswXSE9PWUmJnRoaXMuY2hhbmdlZE9wdGlvbnMucHVzaCh7cGF0aDppLHZhbHVlOmV9KSk6Im51bWJlciI9PXR5cGVvZiB0WzBdJiYodGhpcy5fbWFrZVJhbmdlKHQsZSxpKSx0WzBdIT09ZSYmdGhpcy5jaGFuZ2VkT3B0aW9ucy5wdXNoKHtwYXRoOmksdmFsdWU6TnVtYmVyKGUpfSkpfX0se2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9jb25zdHJ1Y3RPcHRpb25zKHQsZSk7dGhpcy5wYXJlbnQuYm9keSYmdGhpcy5wYXJlbnQuYm9keS5lbWl0dGVyJiZ0aGlzLnBhcmVudC5ib2R5LmVtaXR0ZXIuZW1pdCYmdGhpcy5wYXJlbnQuYm9keS5lbWl0dGVyLmVtaXQoImNvbmZpZ0NoYW5nZSIsaSksdGhpcy5pbml0aWFsaXplZD0hMCx0aGlzLnBhcmVudC5zZXRPcHRpb25zKGkpfX0se2tleToiX2NvbnN0cnVjdE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnt9LG89aTt0PSJ0cnVlIj09PXR8fHQsdD0iZmFsc2UiIT09dCYmdDtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKykiZ2xvYmFsIiE9PWVbbl0mJih2b2lkIDA9PT1vW2Vbbl1dJiYob1tlW25dXT17fSksbiE9PWUubGVuZ3RoLTE/bz1vW2Vbbl1dOm9bZVtuXV09dCk7cmV0dXJuIGl9fSx7a2V5OiJfcHJpbnRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0T3B0aW9ucygpO3RoaXMub3B0aW9uc0NvbnRhaW5lci5pbm5lckhUTUw9IjxwcmU+dmFyIG9wdGlvbnMgPSAiKygwLHMuZGVmYXVsdCkodCxudWxsLDIpKyI8L3ByZT4ifX0se2tleToiZ2V0T3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9e30sZT0wO2U8dGhpcy5jaGFuZ2VkT3B0aW9ucy5sZW5ndGg7ZSsrKXRoaXMuX2NvbnN0cnVjdE9wdGlvbnModGhpcy5jaGFuZ2VkT3B0aW9uc1tlXS52YWx1ZSx0aGlzLmNoYW5nZWRPcHRpb25zW2VdLnBhdGgsdCk7cmV0dXJuIHR9fV0pLHR9KCk7ZS5kZWZhdWx0PWZ9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSg5MCkscz1vKG4pLHI9aSgxMzUpLGE9byhyKSxoPWkoMTM2KSxkPW8oaCksbD1pKDExMyksdT1pKDEyMCksYz1pKDEpLHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjE7KDAsYS5kZWZhdWx0KSh0aGlzLHQpLHRoaXMucGl4ZWxSYXRpbz1lLHRoaXMuZ2VuZXJhdGVkPSExLHRoaXMuY2VudGVyQ29vcmRpbmF0ZXM9e3g6MTQ0LjUseToxNDQuNX0sdGhpcy5yPTI4OSouNDksdGhpcy5jb2xvcj17cjoyNTUsZzoyNTUsYjoyNTUsYToxfSx0aGlzLmh1ZUNpcmNsZT12b2lkIDAsdGhpcy5pbml0aWFsQ29sb3I9e3I6MjU1LGc6MjU1LGI6MjU1LGE6MX0sdGhpcy5wcmV2aW91c0NvbG9yPXZvaWQgMCx0aGlzLmFwcGxpZWQ9ITEsdGhpcy51cGRhdGVDYWxsYmFjaz1mdW5jdGlvbigpe30sdGhpcy5jbG9zZUNhbGxiYWNrPWZ1bmN0aW9uKCl7fSx0aGlzLl9jcmVhdGUoKX1yZXR1cm4oMCxkLmRlZmF1bHQpKHQsW3trZXk6Imluc2VydFRvIix2YWx1ZTpmdW5jdGlvbih0KXt2b2lkIDAhPT10aGlzLmhhbW1lciYmKHRoaXMuaGFtbWVyLmRlc3Ryb3koKSx0aGlzLmhhbW1lcj12b2lkIDApLHRoaXMuY29udGFpbmVyPXQsdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5mcmFtZSksdGhpcy5fYmluZEhhbW1lcigpLHRoaXMuX3NldFNpemUoKX19LHtrZXk6InNldFVwZGF0ZUNhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIkZ1bmN0aW9uIGF0dGVtcHRlZCB0byBzZXQgYXMgY29sb3JQaWNrZXIgdXBkYXRlIGNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uLiIpO3RoaXMudXBkYXRlQ2FsbGJhY2s9dH19LHtrZXk6InNldENsb3NlQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiRnVuY3Rpb24gYXR0ZW1wdGVkIHRvIHNldCBhcyBjb2xvclBpY2tlciBjbG9zaW5nIGNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uLiIpO3RoaXMuY2xvc2VDYWxsYmFjaz10fX0se2tleToiX2lzQ29sb3JTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXtibGFjazoiIzAwMDAwMCIsbmF2eToiIzAwMDA4MCIsZGFya2JsdWU6IiMwMDAwOEIiLG1lZGl1bWJsdWU6IiMwMDAwQ0QiLGJsdWU6IiMwMDAwRkYiLGRhcmtncmVlbjoiIzAwNjQwMCIsZ3JlZW46IiMwMDgwMDAiLHRlYWw6IiMwMDgwODAiLGRhcmtjeWFuOiIjMDA4QjhCIixkZWVwc2t5Ymx1ZToiIzAwQkZGRiIsZGFya3R1cnF1b2lzZToiIzAwQ0VEMSIsbWVkaXVtc3ByaW5nZ3JlZW46IiMwMEZBOUEiLGxpbWU6IiMwMEZGMDAiLHNwcmluZ2dyZWVuOiIjMDBGRjdGIixhcXVhOiIjMDBGRkZGIixjeWFuOiIjMDBGRkZGIixtaWRuaWdodGJsdWU6IiMxOTE5NzAiLGRvZGdlcmJsdWU6IiMxRTkwRkYiLGxpZ2h0c2VhZ3JlZW46IiMyMEIyQUEiLGZvcmVzdGdyZWVuOiIjMjI4QjIyIixzZWFncmVlbjoiIzJFOEI1NyIsZGFya3NsYXRlZ3JheToiIzJGNEY0RiIsbGltZWdyZWVuOiIjMzJDRDMyIixtZWRpdW1zZWFncmVlbjoiIzNDQjM3MSIsdHVycXVvaXNlOiIjNDBFMEQwIixyb3lhbGJsdWU6IiM0MTY5RTEiLHN0ZWVsYmx1ZToiIzQ2ODJCNCIsZGFya3NsYXRlYmx1ZToiIzQ4M0Q4QiIsbWVkaXVtdHVycXVvaXNlOiIjNDhEMUNDIixpbmRpZ286IiM0QjAwODIiLGRhcmtvbGl2ZWdyZWVuOiIjNTU2QjJGIixjYWRldGJsdWU6IiM1RjlFQTAiLGNvcm5mbG93ZXJibHVlOiIjNjQ5NUVEIixtZWRpdW1hcXVhbWFyaW5lOiIjNjZDREFBIixkaW1ncmF5OiIjNjk2OTY5IixzbGF0ZWJsdWU6IiM2QTVBQ0QiLG9saXZlZHJhYjoiIzZCOEUyMyIsc2xhdGVncmF5OiIjNzA4MDkwIixsaWdodHNsYXRlZ3JheToiIzc3ODg5OSIsbWVkaXVtc2xhdGVibHVlOiIjN0I2OEVFIixsYXduZ3JlZW46IiM3Q0ZDMDAiLGNoYXJ0cmV1c2U6IiM3RkZGMDAiLGFxdWFtYXJpbmU6IiM3RkZGRDQiLG1hcm9vbjoiIzgwMDAwMCIscHVycGxlOiIjODAwMDgwIixvbGl2ZToiIzgwODAwMCIsZ3JheToiIzgwODA4MCIsc2t5Ymx1ZToiIzg3Q0VFQiIsbGlnaHRza3libHVlOiIjODdDRUZBIixibHVldmlvbGV0OiIjOEEyQkUyIixkYXJrcmVkOiIjOEIwMDAwIixkYXJrbWFnZW50YToiIzhCMDA4QiIsc2FkZGxlYnJvd246IiM4QjQ1MTMiLGRhcmtzZWFncmVlbjoiIzhGQkM4RiIsbGlnaHRncmVlbjoiIzkwRUU5MCIsbWVkaXVtcHVycGxlOiIjOTM3MEQ4IixkYXJrdmlvbGV0OiIjOTQwMEQzIixwYWxlZ3JlZW46IiM5OEZCOTgiLGRhcmtvcmNoaWQ6IiM5OTMyQ0MiLHllbGxvd2dyZWVuOiIjOUFDRDMyIixzaWVubmE6IiNBMDUyMkQiLGJyb3duOiIjQTUyQTJBIixkYXJrZ3JheToiI0E5QTlBOSIsbGlnaHRibHVlOiIjQUREOEU2IixncmVlbnllbGxvdzoiI0FERkYyRiIscGFsZXR1cnF1b2lzZToiI0FGRUVFRSIsbGlnaHRzdGVlbGJsdWU6IiNCMEM0REUiLHBvd2RlcmJsdWU6IiNCMEUwRTYiLGZpcmVicmljazoiI0IyMjIyMiIsZGFya2dvbGRlbnJvZDoiI0I4ODYwQiIsbWVkaXVtb3JjaGlkOiIjQkE1NUQzIixyb3N5YnJvd246IiNCQzhGOEYiLGRhcmtraGFraToiI0JEQjc2QiIsc2lsdmVyOiIjQzBDMEMwIixtZWRpdW12aW9sZXRyZWQ6IiNDNzE1ODUiLGluZGlhbnJlZDoiI0NENUM1QyIscGVydToiI0NEODUzRiIsY2hvY29sYXRlOiIjRDI2OTFFIix0YW46IiNEMkI0OEMiLGxpZ2h0Z3JleToiI0QzRDNEMyIscGFsZXZpb2xldHJlZDoiI0Q4NzA5MyIsdGhpc3RsZToiI0Q4QkZEOCIsb3JjaGlkOiIjREE3MEQ2Iixnb2xkZW5yb2Q6IiNEQUE1MjAiLGNyaW1zb246IiNEQzE0M0MiLGdhaW5zYm9ybzoiI0RDRENEQyIscGx1bToiI0REQTBERCIsYnVybHl3b29kOiIjREVCODg3IixsaWdodGN5YW46IiNFMEZGRkYiLGxhdmVuZGVyOiIjRTZFNkZBIixkYXJrc2FsbW9uOiIjRTk5NjdBIix2aW9sZXQ6IiNFRTgyRUUiLHBhbGVnb2xkZW5yb2Q6IiNFRUU4QUEiLGxpZ2h0Y29yYWw6IiNGMDgwODAiLGtoYWtpOiIjRjBFNjhDIixhbGljZWJsdWU6IiNGMEY4RkYiLGhvbmV5ZGV3OiIjRjBGRkYwIixhenVyZToiI0YwRkZGRiIsc2FuZHlicm93bjoiI0Y0QTQ2MCIsd2hlYXQ6IiNGNURFQjMiLGJlaWdlOiIjRjVGNURDIix3aGl0ZXNtb2tlOiIjRjVGNUY1IixtaW50Y3JlYW06IiNGNUZGRkEiLGdob3N0d2hpdGU6IiNGOEY4RkYiLHNhbG1vbjoiI0ZBODA3MiIsYW50aXF1ZXdoaXRlOiIjRkFFQkQ3IixsaW5lbjoiI0ZBRjBFNiIsbGlnaHRnb2xkZW5yb2R5ZWxsb3c6IiNGQUZBRDIiLG9sZGxhY2U6IiNGREY1RTYiLHJlZDoiI0ZGMDAwMCIsZnVjaHNpYToiI0ZGMDBGRiIsbWFnZW50YToiI0ZGMDBGRiIsZGVlcHBpbms6IiNGRjE0OTMiLG9yYW5nZXJlZDoiI0ZGNDUwMCIsdG9tYXRvOiIjRkY2MzQ3Iixob3RwaW5rOiIjRkY2OUI0Iixjb3JhbDoiI0ZGN0Y1MCIsZGFya29yYW5nZToiI0ZGOEMwMCIsbGlnaHRzYWxtb246IiNGRkEwN0EiLG9yYW5nZToiI0ZGQTUwMCIsbGlnaHRwaW5rOiIjRkZCNkMxIixwaW5rOiIjRkZDMENCIixnb2xkOiIjRkZENzAwIixwZWFjaHB1ZmY6IiNGRkRBQjkiLG5hdmFqb3doaXRlOiIjRkZERUFEIixtb2NjYXNpbjoiI0ZGRTRCNSIsYmlzcXVlOiIjRkZFNEM0IixtaXN0eXJvc2U6IiNGRkU0RTEiLGJsYW5jaGVkYWxtb25kOiIjRkZFQkNEIixwYXBheWF3aGlwOiIjRkZFRkQ1IixsYXZlbmRlcmJsdXNoOiIjRkZGMEY1IixzZWFzaGVsbDoiI0ZGRjVFRSIsY29ybnNpbGs6IiNGRkY4REMiLGxlbW9uY2hpZmZvbjoiI0ZGRkFDRCIsZmxvcmFsd2hpdGU6IiNGRkZBRjAiLHNub3c6IiNGRkZBRkEiLHllbGxvdzoiI0ZGRkYwMCIsbGlnaHR5ZWxsb3c6IiNGRkZGRTAiLGl2b3J5OiIjRkZGRkYwIix3aGl0ZToiI0ZGRkZGRiJ9O2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gZVt0XX19LHtrZXk6InNldENvbG9yIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO2lmKCJub25lIiE9PXQpe3ZhciBpPXZvaWQgMCxvPXRoaXMuX2lzQ29sb3JTdHJpbmcodCk7aWYodm9pZCAwIT09byYmKHQ9byksITA9PT1jLmlzU3RyaW5nKHQpKXtpZighMD09PWMuaXNWYWxpZFJHQih0KSl7dmFyIG49dC5zdWJzdHIoNCkuc3Vic3RyKDAsdC5sZW5ndGgtNSkuc3BsaXQoIiwiKTtpPXtyOm5bMF0sZzpuWzFdLGI6blsyXSxhOjF9fWVsc2UgaWYoITA9PT1jLmlzVmFsaWRSR0JBKHQpKXt2YXIgcj10LnN1YnN0cig1KS5zdWJzdHIoMCx0Lmxlbmd0aC02KS5zcGxpdCgiLCIpO2k9e3I6clswXSxnOnJbMV0sYjpyWzJdLGE6clszXX19ZWxzZSBpZighMD09PWMuaXNWYWxpZEhleCh0KSl7dmFyIGE9Yy5oZXhUb1JHQih0KTtpPXtyOmEucixnOmEuZyxiOmEuYixhOjF9fX1lbHNlIGlmKHQgaW5zdGFuY2VvZiBPYmplY3QmJnZvaWQgMCE9PXQuciYmdm9pZCAwIT09dC5nJiZ2b2lkIDAhPT10LmIpe3ZhciBoPXZvaWQgMCE9PXQuYT90LmE6IjEuMCI7aT17cjp0LnIsZzp0LmcsYjp0LmIsYTpofX1pZih2b2lkIDA9PT1pKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBjb2xvciBwYXNzZWQgdG8gdGhlIGNvbG9yUGlja2VyLiBTdXBwb3J0ZWQgYXJlIHN0cmluZ3M6IHJnYiwgaGV4LCByZ2JhLiBPYmplY3Q6IHJnYiAoe3I6cixnOmcsYjpiLFthOmFdfSkuIFN1cHBsaWVkOiAiKygwLHMuZGVmYXVsdCkodCkpO3RoaXMuX3NldENvbG9yKGksZSl9fX0se2tleToic2hvdyIsdmFsdWU6ZnVuY3Rpb24oKXt2b2lkIDAhPT10aGlzLmNsb3NlQ2FsbGJhY2smJih0aGlzLmNsb3NlQ2FsbGJhY2soKSx0aGlzLmNsb3NlQ2FsbGJhY2s9dm9pZCAwKSx0aGlzLmFwcGxpZWQ9ITEsdGhpcy5mcmFtZS5zdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy5fZ2VuZXJhdGVIdWVDaXJjbGUoKX19LHtrZXk6Il9oaWRlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7ITA9PT0oIShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSkmJih0aGlzLnByZXZpb3VzQ29sb3I9Yy5leHRlbmQoe30sdGhpcy5jb2xvcikpLCEwPT09dGhpcy5hcHBsaWVkJiZ0aGlzLnVwZGF0ZUNhbGxiYWNrKHRoaXMuaW5pdGlhbENvbG9yKSx0aGlzLmZyYW1lLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2b2lkIDAhPT10LmNsb3NlQ2FsbGJhY2smJih0LmNsb3NlQ2FsbGJhY2soKSx0LmNsb3NlQ2FsbGJhY2s9dm9pZCAwKX0sMCl9fSx7a2V5OiJfc2F2ZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnVwZGF0ZUNhbGxiYWNrKHRoaXMuY29sb3IpLHRoaXMuYXBwbGllZD0hMSx0aGlzLl9oaWRlKCl9fSx7a2V5OiJfYXBwbHkiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5hcHBsaWVkPSEwLHRoaXMudXBkYXRlQ2FsbGJhY2sodGhpcy5jb2xvciksdGhpcy5fdXBkYXRlUGlja2VyKHRoaXMuY29sb3IpfX0se2tleToiX2xvYWRMYXN0Iix2YWx1ZTpmdW5jdGlvbigpe3ZvaWQgMCE9PXRoaXMucHJldmlvdXNDb2xvcj90aGlzLnNldENvbG9yKHRoaXMucHJldmlvdXNDb2xvciwhMSk6YWxlcnQoIlRoZXJlIGlzIG5vIGxhc3QgY29sb3IgdG8gbG9hZC4uLiIpfX0se2tleToiX3NldENvbG9yIix2YWx1ZTpmdW5jdGlvbih0KXshMD09PSghKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdKSYmKHRoaXMuaW5pdGlhbENvbG9yPWMuZXh0ZW5kKHt9LHQpKSx0aGlzLmNvbG9yPXQ7dmFyIGU9Yy5SR0JUb0hTVih0LnIsdC5nLHQuYiksaT0yKk1hdGguUEksbz10aGlzLnIqZS5zLG49dGhpcy5jZW50ZXJDb29yZGluYXRlcy54K28qTWF0aC5zaW4oaSplLmgpLHM9dGhpcy5jZW50ZXJDb29yZGluYXRlcy55K28qTWF0aC5jb3MoaSplLmgpO3RoaXMuY29sb3JQaWNrZXJTZWxlY3Rvci5zdHlsZS5sZWZ0PW4tLjUqdGhpcy5jb2xvclBpY2tlclNlbGVjdG9yLmNsaWVudFdpZHRoKyJweCIsdGhpcy5jb2xvclBpY2tlclNlbGVjdG9yLnN0eWxlLnRvcD1zLS41KnRoaXMuY29sb3JQaWNrZXJTZWxlY3Rvci5jbGllbnRIZWlnaHQrInB4Iix0aGlzLl91cGRhdGVQaWNrZXIodCl9fSx7a2V5OiJfc2V0T3BhY2l0eSIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5jb2xvci5hPXQvMTAwLHRoaXMuX3VwZGF0ZVBpY2tlcih0aGlzLmNvbG9yKX19LHtrZXk6Il9zZXRCcmlnaHRuZXNzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1jLlJHQlRvSFNWKHRoaXMuY29sb3Iucix0aGlzLmNvbG9yLmcsdGhpcy5jb2xvci5iKTtlLnY9dC8xMDA7dmFyIGk9Yy5IU1ZUb1JHQihlLmgsZS5zLGUudik7aS5hPXRoaXMuY29sb3IuYSx0aGlzLmNvbG9yPWksdGhpcy5fdXBkYXRlUGlja2VyKCl9fSx7a2V5OiJfdXBkYXRlUGlja2VyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLmNvbG9yLGU9Yy5SR0JUb0hTVih0LnIsdC5nLHQuYiksaT10aGlzLmNvbG9yUGlja2VyQ2FudmFzLmdldENvbnRleHQoIjJkIik7dm9pZCAwPT09dGhpcy5waXhlbFJhdGlvbiYmKHRoaXMucGl4ZWxSYXRpbz0od2luZG93LmRldmljZVBpeGVsUmF0aW98fDEpLyhpLndlYmtpdEJhY2tpbmdTdG9yZVBpeGVsUmF0aW98fGkubW96QmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8aS5tc0JhY2tpbmdTdG9yZVBpeGVsUmF0aW98fGkub0JhY2tpbmdTdG9yZVBpeGVsUmF0aW98fGkuYmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8MSkpLGkuc2V0VHJhbnNmb3JtKHRoaXMucGl4ZWxSYXRpbywwLDAsdGhpcy5waXhlbFJhdGlvLDAsMCk7dmFyIG89dGhpcy5jb2xvclBpY2tlckNhbnZhcy5jbGllbnRXaWR0aCxuPXRoaXMuY29sb3JQaWNrZXJDYW52YXMuY2xpZW50SGVpZ2h0O2kuY2xlYXJSZWN0KDAsMCxvLG4pLGkucHV0SW1hZ2VEYXRhKHRoaXMuaHVlQ2lyY2xlLDAsMCksaS5maWxsU3R5bGU9InJnYmEoMCwwLDAsIisoMS1lLnYpKyIpIixpLmNpcmNsZSh0aGlzLmNlbnRlckNvb3JkaW5hdGVzLngsdGhpcy5jZW50ZXJDb29yZGluYXRlcy55LHRoaXMuciksaS5maWxsKCksdGhpcy5icmlnaHRuZXNzUmFuZ2UudmFsdWU9MTAwKmUudix0aGlzLm9wYWNpdHlSYW5nZS52YWx1ZT0xMDAqdC5hLHRoaXMuaW5pdGlhbENvbG9yRGl2LnN0eWxlLmJhY2tncm91bmRDb2xvcj0icmdiYSgiK3RoaXMuaW5pdGlhbENvbG9yLnIrIiwiK3RoaXMuaW5pdGlhbENvbG9yLmcrIiwiK3RoaXMuaW5pdGlhbENvbG9yLmIrIiwiK3RoaXMuaW5pdGlhbENvbG9yLmErIikiLHRoaXMubmV3Q29sb3JEaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yPSJyZ2JhKCIrdGhpcy5jb2xvci5yKyIsIit0aGlzLmNvbG9yLmcrIiwiK3RoaXMuY29sb3IuYisiLCIrdGhpcy5jb2xvci5hKyIpIn19LHtrZXk6Il9zZXRTaXplIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY29sb3JQaWNrZXJDYW52YXMuc3R5bGUud2lkdGg9IjEwMCUiLHRoaXMuY29sb3JQaWNrZXJDYW52YXMuc3R5bGUuaGVpZ2h0PSIxMDAlIix0aGlzLmNvbG9yUGlja2VyQ2FudmFzLndpZHRoPTI4OSp0aGlzLnBpeGVsUmF0aW8sdGhpcy5jb2xvclBpY2tlckNhbnZhcy5oZWlnaHQ9Mjg5KnRoaXMucGl4ZWxSYXRpb319LHtrZXk6Il9jcmVhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5mcmFtZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmZyYW1lLmNsYXNzTmFtZT0idmlzLWNvbG9yLXBpY2tlciIsdGhpcy5jb2xvclBpY2tlckRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmNvbG9yUGlja2VyU2VsZWN0b3I9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5jb2xvclBpY2tlclNlbGVjdG9yLmNsYXNzTmFtZT0idmlzLXNlbGVjdG9yIix0aGlzLmNvbG9yUGlja2VyRGl2LmFwcGVuZENoaWxkKHRoaXMuY29sb3JQaWNrZXJTZWxlY3RvciksdGhpcy5jb2xvclBpY2tlckNhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSx0aGlzLmNvbG9yUGlja2VyRGl2LmFwcGVuZENoaWxkKHRoaXMuY29sb3JQaWNrZXJDYW52YXMpLHRoaXMuY29sb3JQaWNrZXJDYW52YXMuZ2V0Q29udGV4dCl7dmFyIHQ9dGhpcy5jb2xvclBpY2tlckNhbnZhcy5nZXRDb250ZXh0KCIyZCIpO3RoaXMucGl4ZWxSYXRpbz0od2luZG93LmRldmljZVBpeGVsUmF0aW98fDEpLyh0LndlYmtpdEJhY2tpbmdTdG9yZVBpeGVsUmF0aW98fHQubW96QmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8dC5tc0JhY2tpbmdTdG9yZVBpeGVsUmF0aW98fHQub0JhY2tpbmdTdG9yZVBpeGVsUmF0aW98fHQuYmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8MSksdGhpcy5jb2xvclBpY2tlckNhbnZhcy5nZXRDb250ZXh0KCIyZCIpLnNldFRyYW5zZm9ybSh0aGlzLnBpeGVsUmF0aW8sMCwwLHRoaXMucGl4ZWxSYXRpbywwLDApfWVsc2V7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIik7ZS5zdHlsZS5jb2xvcj0icmVkIixlLnN0eWxlLmZvbnRXZWlnaHQ9ImJvbGQiLGUuc3R5bGUucGFkZGluZz0iMTBweCIsZS5pbm5lckhUTUw9IkVycm9yOiB5b3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBIVE1MIGNhbnZhcyIsdGhpcy5jb2xvclBpY2tlckNhbnZhcy5hcHBlbmRDaGlsZChlKX10aGlzLmNvbG9yUGlja2VyRGl2LmNsYXNzTmFtZT0idmlzLWNvbG9yIix0aGlzLm9wYWNpdHlEaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5vcGFjaXR5RGl2LmNsYXNzTmFtZT0idmlzLW9wYWNpdHkiLHRoaXMuYnJpZ2h0bmVzc0Rpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmJyaWdodG5lc3NEaXYuY2xhc3NOYW1lPSJ2aXMtYnJpZ2h0bmVzcyIsdGhpcy5hcnJvd0Rpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmFycm93RGl2LmNsYXNzTmFtZT0idmlzLWFycm93Iix0aGlzLm9wYWNpdHlSYW5nZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3RyeXt0aGlzLm9wYWNpdHlSYW5nZS50eXBlPSJyYW5nZSIsdGhpcy5vcGFjaXR5UmFuZ2UubWluPSIwIix0aGlzLm9wYWNpdHlSYW5nZS5tYXg9IjEwMCJ9Y2F0Y2godCl7fXRoaXMub3BhY2l0eVJhbmdlLnZhbHVlPSIxMDAiLHRoaXMub3BhY2l0eVJhbmdlLmNsYXNzTmFtZT0idmlzLXJhbmdlIix0aGlzLmJyaWdodG5lc3NSYW5nZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3RyeXt0aGlzLmJyaWdodG5lc3NSYW5nZS50eXBlPSJyYW5nZSIsdGhpcy5icmlnaHRuZXNzUmFuZ2UubWluPSIwIix0aGlzLmJyaWdodG5lc3NSYW5nZS5tYXg9IjEwMCJ9Y2F0Y2godCl7fXRoaXMuYnJpZ2h0bmVzc1JhbmdlLnZhbHVlPSIxMDAiLHRoaXMuYnJpZ2h0bmVzc1JhbmdlLmNsYXNzTmFtZT0idmlzLXJhbmdlIix0aGlzLm9wYWNpdHlEaXYuYXBwZW5kQ2hpbGQodGhpcy5vcGFjaXR5UmFuZ2UpLHRoaXMuYnJpZ2h0bmVzc0Rpdi5hcHBlbmRDaGlsZCh0aGlzLmJyaWdodG5lc3NSYW5nZSk7dmFyIGk9dGhpczt0aGlzLm9wYWNpdHlSYW5nZS5vbmNoYW5nZT1mdW5jdGlvbigpe2kuX3NldE9wYWNpdHkodGhpcy52YWx1ZSl9LHRoaXMub3BhY2l0eVJhbmdlLm9uaW5wdXQ9ZnVuY3Rpb24oKXtpLl9zZXRPcGFjaXR5KHRoaXMudmFsdWUpfSx0aGlzLmJyaWdodG5lc3NSYW5nZS5vbmNoYW5nZT1mdW5jdGlvbigpe2kuX3NldEJyaWdodG5lc3ModGhpcy52YWx1ZSl9LHRoaXMuYnJpZ2h0bmVzc1JhbmdlLm9uaW5wdXQ9ZnVuY3Rpb24oKXtpLl9zZXRCcmlnaHRuZXNzKHRoaXMudmFsdWUpfSx0aGlzLmJyaWdodG5lc3NMYWJlbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmJyaWdodG5lc3NMYWJlbC5jbGFzc05hbWU9InZpcy1sYWJlbCB2aXMtYnJpZ2h0bmVzcyIsdGhpcy5icmlnaHRuZXNzTGFiZWwuaW5uZXJIVE1MPSJicmlnaHRuZXNzOiIsdGhpcy5vcGFjaXR5TGFiZWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5vcGFjaXR5TGFiZWwuY2xhc3NOYW1lPSJ2aXMtbGFiZWwgdmlzLW9wYWNpdHkiLHRoaXMub3BhY2l0eUxhYmVsLmlubmVySFRNTD0ib3BhY2l0eToiLHRoaXMubmV3Q29sb3JEaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5uZXdDb2xvckRpdi5jbGFzc05hbWU9InZpcy1uZXctY29sb3IiLHRoaXMubmV3Q29sb3JEaXYuaW5uZXJIVE1MPSJuZXciLHRoaXMuaW5pdGlhbENvbG9yRGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuaW5pdGlhbENvbG9yRGl2LmNsYXNzTmFtZT0idmlzLWluaXRpYWwtY29sb3IiLHRoaXMuaW5pdGlhbENvbG9yRGl2LmlubmVySFRNTD0iaW5pdGlhbCIsdGhpcy5jYW5jZWxCdXR0b249ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5jYW5jZWxCdXR0b24uY2xhc3NOYW1lPSJ2aXMtYnV0dG9uIHZpcy1jYW5jZWwiLHRoaXMuY2FuY2VsQnV0dG9uLmlubmVySFRNTD0iY2FuY2VsIix0aGlzLmNhbmNlbEJ1dHRvbi5vbmNsaWNrPXRoaXMuX2hpZGUuYmluZCh0aGlzLCExKSx0aGlzLmFwcGx5QnV0dG9uPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuYXBwbHlCdXR0b24uY2xhc3NOYW1lPSJ2aXMtYnV0dG9uIHZpcy1hcHBseSIsdGhpcy5hcHBseUJ1dHRvbi5pbm5lckhUTUw9ImFwcGx5Iix0aGlzLmFwcGx5QnV0dG9uLm9uY2xpY2s9dGhpcy5fYXBwbHkuYmluZCh0aGlzKSx0aGlzLnNhdmVCdXR0b249ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5zYXZlQnV0dG9uLmNsYXNzTmFtZT0idmlzLWJ1dHRvbiB2aXMtc2F2ZSIsdGhpcy5zYXZlQnV0dG9uLmlubmVySFRNTD0ic2F2ZSIsdGhpcy5zYXZlQnV0dG9uLm9uY2xpY2s9dGhpcy5fc2F2ZS5iaW5kKHRoaXMpLHRoaXMubG9hZEJ1dHRvbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmxvYWRCdXR0b24uY2xhc3NOYW1lPSJ2aXMtYnV0dG9uIHZpcy1sb2FkIix0aGlzLmxvYWRCdXR0b24uaW5uZXJIVE1MPSJsb2FkIGxhc3QiLHRoaXMubG9hZEJ1dHRvbi5vbmNsaWNrPXRoaXMuX2xvYWRMYXN0LmJpbmQodGhpcyksdGhpcy5mcmFtZS5hcHBlbmRDaGlsZCh0aGlzLmNvbG9yUGlja2VyRGl2KSx0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMuYXJyb3dEaXYpLHRoaXMuZnJhbWUuYXBwZW5kQ2hpbGQodGhpcy5icmlnaHRuZXNzTGFiZWwpLHRoaXMuZnJhbWUuYXBwZW5kQ2hpbGQodGhpcy5icmlnaHRuZXNzRGl2KSx0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMub3BhY2l0eUxhYmVsKSx0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMub3BhY2l0eURpdiksdGhpcy5mcmFtZS5hcHBlbmRDaGlsZCh0aGlzLm5ld0NvbG9yRGl2KSx0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMuaW5pdGlhbENvbG9yRGl2KSx0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMuY2FuY2VsQnV0dG9uKSx0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMuYXBwbHlCdXR0b24pLHRoaXMuZnJhbWUuYXBwZW5kQ2hpbGQodGhpcy5zYXZlQnV0dG9uKSx0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMubG9hZEJ1dHRvbil9fSx7a2V5OiJfYmluZEhhbW1lciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuZHJhZz17fSx0aGlzLnBpbmNoPXt9LHRoaXMuaGFtbWVyPW5ldyBsKHRoaXMuY29sb3JQaWNrZXJDYW52YXMpLHRoaXMuaGFtbWVyLmdldCgicGluY2giKS5zZXQoe2VuYWJsZTohMH0pLHUub25Ub3VjaCh0aGlzLmhhbW1lcixmdW5jdGlvbihlKXt0Ll9tb3ZlU2VsZWN0b3IoZSl9KSx0aGlzLmhhbW1lci5vbigidGFwIixmdW5jdGlvbihlKXt0Ll9tb3ZlU2VsZWN0b3IoZSl9KSx0aGlzLmhhbW1lci5vbigicGFuc3RhcnQiLGZ1bmN0aW9uKGUpe3QuX21vdmVTZWxlY3RvcihlKX0pLHRoaXMuaGFtbWVyLm9uKCJwYW5tb3ZlIixmdW5jdGlvbihlKXt0Ll9tb3ZlU2VsZWN0b3IoZSl9KSx0aGlzLmhhbW1lci5vbigicGFuZW5kIixmdW5jdGlvbihlKXt0Ll9tb3ZlU2VsZWN0b3IoZSl9KX19LHtrZXk6Il9nZW5lcmF0ZUh1ZUNpcmNsZSIsdmFsdWU6ZnVuY3Rpb24oKXtpZighMT09PXRoaXMuZ2VuZXJhdGVkKXt2YXIgdD10aGlzLmNvbG9yUGlja2VyQ2FudmFzLmdldENvbnRleHQoIjJkIik7dm9pZCAwPT09dGhpcy5waXhlbFJhdGlvbiYmKHRoaXMucGl4ZWxSYXRpbz0od2luZG93LmRldmljZVBpeGVsUmF0aW98fDEpLyh0LndlYmtpdEJhY2tpbmdTdG9yZVBpeGVsUmF0aW98fHQubW96QmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8dC5tc0JhY2tpbmdTdG9yZVBpeGVsUmF0aW98fHQub0JhY2tpbmdTdG9yZVBpeGVsUmF0aW98fHQuYmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8MSkpLHQuc2V0VHJhbnNmb3JtKHRoaXMucGl4ZWxSYXRpbywwLDAsdGhpcy5waXhlbFJhdGlvLDAsMCk7dmFyIGU9dGhpcy5jb2xvclBpY2tlckNhbnZhcy5jbGllbnRXaWR0aCxpPXRoaXMuY29sb3JQaWNrZXJDYW52YXMuY2xpZW50SGVpZ2h0O3QuY2xlYXJSZWN0KDAsMCxlLGkpO3ZhciBvPXZvaWQgMCxuPXZvaWQgMCxzPXZvaWQgMCxyPXZvaWQgMDt0aGlzLmNlbnRlckNvb3JkaW5hdGVzPXt4Oi41KmUseTouNSppfSx0aGlzLnI9LjQ5KmU7dmFyIGE9MipNYXRoLlBJLzM2MCxoPTEvdGhpcy5yLGQ9dm9pZCAwO2ZvcihzPTA7czwzNjA7cysrKWZvcihyPTA7cjx0aGlzLnI7cisrKW89dGhpcy5jZW50ZXJDb29yZGluYXRlcy54K3IqTWF0aC5zaW4oYSpzKSxuPXRoaXMuY2VudGVyQ29vcmRpbmF0ZXMueStyKk1hdGguY29zKGEqcyksZD1jLkhTVlRvUkdCKHMqKDEvMzYwKSxyKmgsMSksdC5maWxsU3R5bGU9InJnYigiK2QucisiLCIrZC5nKyIsIitkLmIrIikiLHQuZmlsbFJlY3Qoby0uNSxuLS41LDIsMik7dC5zdHJva2VTdHlsZT0icmdiYSgwLDAsMCwxKSIsdC5jaXJjbGUodGhpcy5jZW50ZXJDb29yZGluYXRlcy54LHRoaXMuY2VudGVyQ29vcmRpbmF0ZXMueSx0aGlzLnIpLHQuc3Ryb2tlKCksdGhpcy5odWVDaXJjbGU9dC5nZXRJbWFnZURhdGEoMCwwLGUsaSl9dGhpcy5nZW5lcmF0ZWQ9ITB9fSx7a2V5OiJfbW92ZVNlbGVjdG9yIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmNvbG9yUGlja2VyRGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9dC5jZW50ZXIueC1lLmxlZnQsbz10LmNlbnRlci55LWUudG9wLG49LjUqdGhpcy5jb2xvclBpY2tlckRpdi5jbGllbnRIZWlnaHQscz0uNSp0aGlzLmNvbG9yUGlja2VyRGl2LmNsaWVudFdpZHRoLHI9aS1zLGE9by1uLGg9TWF0aC5hdGFuMihyLGEpLGQ9Ljk4Kk1hdGgubWluKE1hdGguc3FydChyKnIrYSphKSxzKSxsPU1hdGguY29zKGgpKmQrbix1PU1hdGguc2luKGgpKmQrczt0aGlzLmNvbG9yUGlja2VyU2VsZWN0b3Iuc3R5bGUudG9wPWwtLjUqdGhpcy5jb2xvclBpY2tlclNlbGVjdG9yLmNsaWVudEhlaWdodCsicHgiLHRoaXMuY29sb3JQaWNrZXJTZWxlY3Rvci5zdHlsZS5sZWZ0PXUtLjUqdGhpcy5jb2xvclBpY2tlclNlbGVjdG9yLmNsaWVudFdpZHRoKyJweCI7dmFyIHA9aC8oMipNYXRoLlBJKTtwPXA8MD9wKzE6cDt2YXIgZj1kL3RoaXMucixtPWMuUkdCVG9IU1YodGhpcy5jb2xvci5yLHRoaXMuY29sb3IuZyx0aGlzLmNvbG9yLmIpO20uaD1wLG0ucz1mO3ZhciB2PWMuSFNWVG9SR0IobS5oLG0ucyxtLnYpO3YuYT10aGlzLmNvbG9yLmEsdGhpcy5jb2xvcj12LHRoaXMuaW5pdGlhbENvbG9yRGl2LnN0eWxlLmJhY2tncm91bmRDb2xvcj0icmdiYSgiK3RoaXMuaW5pdGlhbENvbG9yLnIrIiwiK3RoaXMuaW5pdGlhbENvbG9yLmcrIiwiK3RoaXMuaW5pdGlhbENvbG9yLmIrIiwiK3RoaXMuaW5pdGlhbENvbG9yLmErIikiLHRoaXMubmV3Q29sb3JEaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yPSJyZ2JhKCIrdGhpcy5jb2xvci5yKyIsIit0aGlzLmNvbG9yLmcrIiwiK3RoaXMuY29sb3IuYisiLCIrdGhpcy5jb2xvci5hKyIpIn19XSksdH0oKTtlLmRlZmF1bHQ9cH0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlLGksbyl7aWYoIShBcnJheS5pc0FycmF5KGkpfHxpIGluc3RhbmNlb2Ygcnx8aSBpbnN0YW5jZW9mIGEpJiZpIGluc3RhbmNlb2YgT2JqZWN0KXt2YXIgZD1vO289aSxpPWR9byYmby50aHJvdHRsZVJlZHJhdyYmY29uc29sZS53YXJuKCdHcmFwaDJkIG9wdGlvbiAidGhyb3R0bGVSZWRyYXciIGlzIERFUFJJQ0FURUQgYW5kIG5vIGxvbmdlciBzdXBwb3J0ZWQuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBNQUpPUiByZWxlYXNlLicpO3ZhciBjPXRoaXM7dGhpcy5kZWZhdWx0T3B0aW9ucz17c3RhcnQ6bnVsbCxlbmQ6bnVsbCxhdXRvUmVzaXplOiEwLG9yaWVudGF0aW9uOntheGlzOiJib3R0b20iLGl0ZW06ImJvdHRvbSJ9LG1vbWVudDpuLHdpZHRoOm51bGwsaGVpZ2h0Om51bGwsbWF4SGVpZ2h0Om51bGwsbWluSGVpZ2h0Om51bGx9LHRoaXMub3B0aW9ucz1zLmRlZXBFeHRlbmQoe30sdGhpcy5kZWZhdWx0T3B0aW9ucyksdGhpcy5fY3JlYXRlKHQpLHRoaXMuY29tcG9uZW50cz1bXSx0aGlzLmJvZHk9e2RvbTp0aGlzLmRvbSxkb21Qcm9wczp0aGlzLnByb3BzLGVtaXR0ZXI6e29uOnRoaXMub24uYmluZCh0aGlzKSxvZmY6dGhpcy5vZmYuYmluZCh0aGlzKSxlbWl0OnRoaXMuZW1pdC5iaW5kKHRoaXMpfSxoaWRkZW5EYXRlczpbXSx1dGlsOnt0b1NjcmVlbjpjLl90b1NjcmVlbi5iaW5kKGMpLHRvR2xvYmFsU2NyZWVuOmMuX3RvR2xvYmFsU2NyZWVuLmJpbmQoYyksdG9UaW1lOmMuX3RvVGltZS5iaW5kKGMpLHRvR2xvYmFsVGltZTpjLl90b0dsb2JhbFRpbWUuYmluZChjKX19LHRoaXMucmFuZ2U9bmV3IGgodGhpcy5ib2R5KSx0aGlzLmNvbXBvbmVudHMucHVzaCh0aGlzLnJhbmdlKSx0aGlzLmJvZHkucmFuZ2U9dGhpcy5yYW5nZSx0aGlzLnRpbWVBeGlzPW5ldyBsKHRoaXMuYm9keSksdGhpcy5jb21wb25lbnRzLnB1c2godGhpcy50aW1lQXhpcyksdGhpcy5jdXJyZW50VGltZT1uZXcgdSh0aGlzLmJvZHkpLHRoaXMuY29tcG9uZW50cy5wdXNoKHRoaXMuY3VycmVudFRpbWUpLHRoaXMubGluZWdyYXBoPW5ldyBwKHRoaXMuYm9keSksdGhpcy5jb21wb25lbnRzLnB1c2godGhpcy5saW5lZ3JhcGgpLHRoaXMuaXRlbXNEYXRhPW51bGwsdGhpcy5ncm91cHNEYXRhPW51bGwsdGhpcy5vbigidGFwIixmdW5jdGlvbih0KXtjLmVtaXQoImNsaWNrIixjLmdldEV2ZW50UHJvcGVydGllcyh0KSl9KSx0aGlzLm9uKCJkb3VibGV0YXAiLGZ1bmN0aW9uKHQpe2MuZW1pdCgiZG91YmxlQ2xpY2siLGMuZ2V0RXZlbnRQcm9wZXJ0aWVzKHQpKX0pLHRoaXMuZG9tLnJvb3Qub25jb250ZXh0bWVudT1mdW5jdGlvbih0KXtjLmVtaXQoImNvbnRleHRtZW51IixjLmdldEV2ZW50UHJvcGVydGllcyh0KSl9LG8mJnRoaXMuc2V0T3B0aW9ucyhvKSxpJiZ0aGlzLnNldEdyb3VwcyhpKSxlJiZ0aGlzLnNldEl0ZW1zKGUpLHRoaXMuX3JlZHJhdygpfXZhciBuPShpKDk5KSxpKDExMyksaSg4MikpLHM9aSgxKSxyPWkoODkpLGE9aSg5MyksaD1pKDExOSksZD1pKDEyMyksbD1pKDE0MCksdT1pKDE0NCksYz1pKDE0MikscD1pKDE1MCksZj1pKDE0NSkucHJpbnRTdHlsZSxtPWkoMTU4KS5hbGxPcHRpb25zLHY9aSgxNTgpLmNvbmZpZ3VyZU9wdGlvbnMsZz1pKDE0NykuZGVmYXVsdCx5PWkoMTQ1KS5kZWZhdWx0O28ucHJvdG90eXBlPW5ldyBkLG8ucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7ITA9PT15LnZhbGlkYXRlKHQsbSkmJmNvbnNvbGUubG9nKCIlY0Vycm9ycyBoYXZlIGJlZW4gZm91bmQgaW4gdGhlIHN1cHBsaWVkIG9wdGlvbnMgb2JqZWN0LiIsZiksZC5wcm90b3R5cGUuc2V0T3B0aW9ucy5jYWxsKHRoaXMsdCl9LG8ucHJvdG90eXBlLnNldEl0ZW1zPWZ1bmN0aW9uKHQpe3ZhciBlLGk9bnVsbD09dGhpcy5pdGVtc0RhdGE7aWYoZT10P3QgaW5zdGFuY2VvZiByfHx0IGluc3RhbmNlb2YgYT90Om5ldyByKHQse3R5cGU6e3N0YXJ0OiJEYXRlIixlbmQ6IkRhdGUifX0pOm51bGwsdGhpcy5pdGVtc0RhdGE9ZSx0aGlzLmxpbmVncmFwaCYmdGhpcy5saW5lZ3JhcGguc2V0SXRlbXMoZSksaSlpZih2b2lkIDAhPXRoaXMub3B0aW9ucy5zdGFydHx8dm9pZCAwIT10aGlzLm9wdGlvbnMuZW5kKXt2YXIgbz12b2lkIDAhPXRoaXMub3B0aW9ucy5zdGFydD90aGlzLm9wdGlvbnMuc3RhcnQ6bnVsbCxuPXZvaWQgMCE9dGhpcy5vcHRpb25zLmVuZD90aGlzLm9wdGlvbnMuZW5kOm51bGw7dGhpcy5zZXRXaW5kb3cobyxuLHthbmltYXRpb246ITF9KX1lbHNlIHRoaXMuZml0KHthbmltYXRpb246ITF9KX0sby5wcm90b3R5cGUuc2V0R3JvdXBzPWZ1bmN0aW9uKHQpe3ZhciBlO2U9dD90IGluc3RhbmNlb2Ygcnx8dCBpbnN0YW5jZW9mIGE/dDpuZXcgcih0KTpudWxsLHRoaXMuZ3JvdXBzRGF0YT1lLHRoaXMubGluZWdyYXBoLnNldEdyb3VwcyhlKX0sby5wcm90b3R5cGUuZ2V0TGVnZW5kPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9MTUpLHZvaWQgMD09PWkmJihpPTE1KSx2b2lkIDAhPT10aGlzLmxpbmVncmFwaC5ncm91cHNbdF0/dGhpcy5saW5lZ3JhcGguZ3JvdXBzW3RdLmdldExlZ2VuZChlLGkpOiJjYW5ub3QgZmluZCBncm91cDonIit0KyInIn0sby5wcm90b3R5cGUuaXNHcm91cFZpc2libGU9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMubGluZWdyYXBoLmdyb3Vwc1t0XSYmKHRoaXMubGluZWdyYXBoLmdyb3Vwc1t0XS52aXNpYmxlJiYodm9pZCAwPT09dGhpcy5saW5lZ3JhcGgub3B0aW9ucy5ncm91cHMudmlzaWJpbGl0eVt0XXx8MT09dGhpcy5saW5lZ3JhcGgub3B0aW9ucy5ncm91cHMudmlzaWJpbGl0eVt0XSkpfSxvLnByb3RvdHlwZS5nZXREYXRhUmFuZ2U9ZnVuY3Rpb24oKXt2YXIgdD1udWxsLGU9bnVsbDtmb3IodmFyIGkgaW4gdGhpcy5saW5lZ3JhcGguZ3JvdXBzKWlmKHRoaXMubGluZWdyYXBoLmdyb3Vwcy5oYXNPd25Qcm9wZXJ0eShpKSYmMT09dGhpcy5saW5lZ3JhcGguZ3JvdXBzW2ldLnZpc2libGUpZm9yKHZhciBvPTA7bzx0aGlzLmxpbmVncmFwaC5ncm91cHNbaV0uaXRlbXNEYXRhLmxlbmd0aDtvKyspe3ZhciBuPXRoaXMubGluZWdyYXBoLmdyb3Vwc1tpXS5pdGVtc0RhdGFbb10scj1zLmNvbnZlcnQobi54LCJEYXRlIikudmFsdWVPZigpO3Q9bnVsbD09dD9yOnQ+cj9yOnQsZT1udWxsPT1lP3I6ZTxyP3I6ZX1yZXR1cm57bWluOm51bGwhPXQ/bmV3IERhdGUodCk6bnVsbCxtYXg6bnVsbCE9ZT9uZXcgRGF0ZShlKTpudWxsfX0sby5wcm90b3R5cGUuZ2V0RXZlbnRQcm9wZXJ0aWVzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuY2VudGVyP3QuY2VudGVyLng6dC5jbGllbnRYLGk9dC5jZW50ZXI/dC5jZW50ZXIueTp0LmNsaWVudFksbz1lLXMuZ2V0QWJzb2x1dGVMZWZ0KHRoaXMuZG9tLmNlbnRlckNvbnRhaW5lciksbj1pLXMuZ2V0QWJzb2x1dGVUb3AodGhpcy5kb20uY2VudGVyQ29udGFpbmVyKSxyPXRoaXMuX3RvVGltZShvKSxhPWMuY3VzdG9tVGltZUZyb21UYXJnZXQodCksaD1zLmdldFRhcmdldCh0KSxkPW51bGw7cy5oYXNQYXJlbnQoaCx0aGlzLnRpbWVBeGlzLmRvbS5mb3JlZ3JvdW5kKT9kPSJheGlzIjp0aGlzLnRpbWVBeGlzMiYmcy5oYXNQYXJlbnQoaCx0aGlzLnRpbWVBeGlzMi5kb20uZm9yZWdyb3VuZCk/ZD0iYXhpcyI6cy5oYXNQYXJlbnQoaCx0aGlzLmxpbmVncmFwaC55QXhpc0xlZnQuZG9tLmZyYW1lKT9kPSJkYXRhLWF4aXMiOnMuaGFzUGFyZW50KGgsdGhpcy5saW5lZ3JhcGgueUF4aXNSaWdodC5kb20uZnJhbWUpP2Q9ImRhdGEtYXhpcyI6cy5oYXNQYXJlbnQoaCx0aGlzLmxpbmVncmFwaC5sZWdlbmRMZWZ0LmRvbS5mcmFtZSk/ZD0ibGVnZW5kIjpzLmhhc1BhcmVudChoLHRoaXMubGluZWdyYXBoLmxlZ2VuZFJpZ2h0LmRvbS5mcmFtZSk/ZD0ibGVnZW5kIjpudWxsIT1hP2Q9ImN1c3RvbS10aW1lIjpzLmhhc1BhcmVudChoLHRoaXMuY3VycmVudFRpbWUuYmFyKT9kPSJjdXJyZW50LXRpbWUiOnMuaGFzUGFyZW50KGgsdGhpcy5kb20uY2VudGVyKSYmKGQ9ImJhY2tncm91bmQiKTt2YXIgbD1bXSx1PXRoaXMubGluZWdyYXBoLnlBeGlzTGVmdCxwPXRoaXMubGluZWdyYXBoLnlBeGlzUmlnaHQ7cmV0dXJuIXUuaGlkZGVuJiZ0aGlzLml0ZW1zRGF0YS5sZW5ndGg+MCYmbC5wdXNoKHUuc2NyZWVuVG9WYWx1ZShuKSksIXAuaGlkZGVuJiZ0aGlzLml0ZW1zRGF0YS5sZW5ndGg+MCYmbC5wdXNoKHAuc2NyZWVuVG9WYWx1ZShuKSkse2V2ZW50OnQsd2hhdDpkLHBhZ2VYOnQuc3JjRXZlbnQ/dC5zcmNFdmVudC5wYWdlWDp0LnBhZ2VYLHBhZ2VZOnQuc3JjRXZlbnQ/dC5zcmNFdmVudC5wYWdlWTp0LnBhZ2VZLHg6byx5Om4sdGltZTpyLHZhbHVlOmx9fSxvLnByb3RvdHlwZS5fY3JlYXRlQ29uZmlndXJhdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBnKHRoaXMsdGhpcy5kb20uY29udGFpbmVyLHYpfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlKXt0aGlzLmlkPXIucmFuZG9tVVVJRCgpLHRoaXMuYm9keT10LHRoaXMuZGVmYXVsdE9wdGlvbnM9e3lBeGlzT3JpZW50YXRpb246ImxlZnQiLGRlZmF1bHRHcm91cDoiZGVmYXVsdCIsc29ydDohMCxzYW1wbGluZzohMCxzdGFjazohMSxncmFwaEhlaWdodDoiNDAwcHgiLHNoYWRlZDp7ZW5hYmxlZDohMSxvcmllbnRhdGlvbjoiYm90dG9tIn0sc3R5bGU6ImxpbmUiLGJhckNoYXJ0Ont3aWR0aDo1MCxzaWRlQnlTaWRlOiExLGFsaWduOiJjZW50ZXIifSxpbnRlcnBvbGF0aW9uOntlbmFibGVkOiEwLHBhcmFtZXRyaXphdGlvbjoiY2VudHJpcGV0YWwiLGFscGhhOi41fSxkcmF3UG9pbnRzOntlbmFibGVkOiEwLHNpemU6NixzdHlsZToic3F1YXJlIn0sZGF0YUF4aXM6e30sbGVnZW5kOnt9LGdyb3Vwczp7dmlzaWJpbGl0eTp7fX19LHRoaXMub3B0aW9ucz1yLmV4dGVuZCh7fSx0aGlzLmRlZmF1bHRPcHRpb25zKSx0aGlzLmRvbT17fSx0aGlzLnByb3BzPXt9LHRoaXMuaGFtbWVyPW51bGwsdGhpcy5ncm91cHM9e30sdGhpcy5hYm9ydGVkR3JhcGhVcGRhdGU9ITEsdGhpcy51cGRhdGVTVkdoZWlnaHQ9ITEsdGhpcy51cGRhdGVTVkdoZWlnaHRPblJlc2l6ZT0hMSx0aGlzLmZvcmNlR3JhcGhVcGRhdGU9ITA7dmFyIGk9dGhpczt0aGlzLml0ZW1zRGF0YT1udWxsLHRoaXMuZ3JvdXBzRGF0YT1udWxsLHRoaXMuaXRlbUxpc3RlbmVycz17YWRkOmZ1bmN0aW9uKHQsZSxvKXtpLl9vbkFkZChlLml0ZW1zKX0sdXBkYXRlOmZ1bmN0aW9uKHQsZSxvKXtpLl9vblVwZGF0ZShlLml0ZW1zKX0scmVtb3ZlOmZ1bmN0aW9uKHQsZSxvKXtpLl9vblJlbW92ZShlLml0ZW1zKX19LHRoaXMuZ3JvdXBMaXN0ZW5lcnM9e2FkZDpmdW5jdGlvbih0LGUsbyl7aS5fb25BZGRHcm91cHMoZS5pdGVtcyl9LHVwZGF0ZTpmdW5jdGlvbih0LGUsbyl7aS5fb25VcGRhdGVHcm91cHMoZS5pdGVtcyl9LHJlbW92ZTpmdW5jdGlvbih0LGUsbyl7aS5fb25SZW1vdmVHcm91cHMoZS5pdGVtcyl9fSx0aGlzLml0ZW1zPXt9LHRoaXMuc2VsZWN0aW9uPVtdLHRoaXMubGFzdFN0YXJ0PXRoaXMuYm9keS5yYW5nZS5zdGFydCx0aGlzLnRvdWNoUGFyYW1zPXt9LHRoaXMuc3ZnRWxlbWVudHM9e30sdGhpcy5zZXRPcHRpb25zKGUpLHRoaXMuZ3JvdXBzVXNpbmdEZWZhdWx0U3R5bGVzPVswXSx0aGlzLmJvZHkuZW1pdHRlci5vbigicmFuZ2VjaGFuZ2VkIixmdW5jdGlvbigpe2kubGFzdFN0YXJ0PWkuYm9keS5yYW5nZS5zdGFydCxpLnN2Zy5zdHlsZS5sZWZ0PXIub3B0aW9uLmFzU2l6ZSgtaS5wcm9wcy53aWR0aCksaS5mb3JjZUdyYXBoVXBkYXRlPSEwLGkucmVkcmF3LmNhbGwoaSl9KSx0aGlzLl9jcmVhdGUoKSx0aGlzLmZyYW1ld29yaz17c3ZnOnRoaXMuc3ZnLHN2Z0VsZW1lbnRzOnRoaXMuc3ZnRWxlbWVudHMsb3B0aW9uczp0aGlzLm9wdGlvbnMsZ3JvdXBzOnRoaXMuZ3JvdXBzfX12YXIgbj1pKDYyKSxzPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX0obikscj1pKDEpLGE9aSg4OCksaD1pKDg5KSxkPWkoOTMpLGw9aSgxMjEpLHU9aSgxNTEpLGM9aSgxNTMpLHA9aSgxNTcpLGY9aSgxNTQpLG09aSgxNTYpLHY9aSgxNTUpO28ucHJvdG90eXBlPW5ldyBsLG8ucHJvdG90eXBlLl9jcmVhdGU9ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LmNsYXNzTmFtZT0idmlzLWxpbmUtZ3JhcGgiLHRoaXMuZG9tLmZyYW1lPXQsdGhpcy5zdmc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2ZyIpLHRoaXMuc3ZnLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsdGhpcy5zdmcuc3R5bGUuaGVpZ2h0PSgiIit0aGlzLm9wdGlvbnMuZ3JhcGhIZWlnaHQpLnJlcGxhY2UoInB4IiwiIikrInB4Iix0aGlzLnN2Zy5zdHlsZS5kaXNwbGF5PSJibG9jayIsdC5hcHBlbmRDaGlsZCh0aGlzLnN2ZyksdGhpcy5vcHRpb25zLmRhdGFBeGlzLm9yaWVudGF0aW9uPSJsZWZ0Iix0aGlzLnlBeGlzTGVmdD1uZXcgdSh0aGlzLmJvZHksdGhpcy5vcHRpb25zLmRhdGFBeGlzLHRoaXMuc3ZnLHRoaXMub3B0aW9ucy5ncm91cHMpLHRoaXMub3B0aW9ucy5kYXRhQXhpcy5vcmllbnRhdGlvbj0icmlnaHQiLHRoaXMueUF4aXNSaWdodD1uZXcgdSh0aGlzLmJvZHksdGhpcy5vcHRpb25zLmRhdGFBeGlzLHRoaXMuc3ZnLHRoaXMub3B0aW9ucy5ncm91cHMpLGRlbGV0ZSB0aGlzLm9wdGlvbnMuZGF0YUF4aXMub3JpZW50YXRpb24sdGhpcy5sZWdlbmRMZWZ0PW5ldyBwKHRoaXMuYm9keSx0aGlzLm9wdGlvbnMubGVnZW5kLCJsZWZ0Iix0aGlzLm9wdGlvbnMuZ3JvdXBzKSx0aGlzLmxlZ2VuZFJpZ2h0PW5ldyBwKHRoaXMuYm9keSx0aGlzLm9wdGlvbnMubGVnZW5kLCJyaWdodCIsdGhpcy5vcHRpb25zLmdyb3VwcyksdGhpcy5zaG93KCl9LG8ucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7aWYodCl7dmFyIGU9WyJzYW1wbGluZyIsImRlZmF1bHRHcm91cCIsInN0YWNrIiwiaGVpZ2h0IiwiZ3JhcGhIZWlnaHQiLCJ5QXhpc09yaWVudGF0aW9uIiwic3R5bGUiLCJiYXJDaGFydCIsImRhdGFBeGlzIiwic29ydCIsImdyb3VwcyJdO3ZvaWQgMD09PXQuZ3JhcGhIZWlnaHQmJnZvaWQgMCE9PXQuaGVpZ2h0Pyh0aGlzLnVwZGF0ZVNWR2hlaWdodD0hMCx0aGlzLnVwZGF0ZVNWR2hlaWdodE9uUmVzaXplPSEwKTp2b2lkIDAhPT10aGlzLmJvZHkuZG9tUHJvcHMuY2VudGVyQ29udGFpbmVyLmhlaWdodCYmdm9pZCAwIT09dC5ncmFwaEhlaWdodCYmcGFyc2VJbnQoKHQuZ3JhcGhIZWlnaHQrIiIpLnJlcGxhY2UoInB4IiwiIikpPHRoaXMuYm9keS5kb21Qcm9wcy5jZW50ZXJDb250YWluZXIuaGVpZ2h0JiYodGhpcy51cGRhdGVTVkdoZWlnaHQ9ITApLHIuc2VsZWN0aXZlRGVlcEV4dGVuZChlLHRoaXMub3B0aW9ucyx0KSxyLm1lcmdlT3B0aW9ucyh0aGlzLm9wdGlvbnMsdCwiaW50ZXJwb2xhdGlvbiIpLHIubWVyZ2VPcHRpb25zKHRoaXMub3B0aW9ucyx0LCJkcmF3UG9pbnRzIiksci5tZXJnZU9wdGlvbnModGhpcy5vcHRpb25zLHQsInNoYWRlZCIpLHIubWVyZ2VPcHRpb25zKHRoaXMub3B0aW9ucyx0LCJsZWdlbmQiKSx0LmludGVycG9sYXRpb24mJiJvYmplY3QiPT0oMCxzLmRlZmF1bHQpKHQuaW50ZXJwb2xhdGlvbikmJnQuaW50ZXJwb2xhdGlvbi5wYXJhbWV0cml6YXRpb24mJigidW5pZm9ybSI9PXQuaW50ZXJwb2xhdGlvbi5wYXJhbWV0cml6YXRpb24/dGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uYWxwaGE9MDoiY2hvcmRhbCI9PXQuaW50ZXJwb2xhdGlvbi5wYXJhbWV0cml6YXRpb24/dGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uYWxwaGE9MToodGhpcy5vcHRpb25zLmludGVycG9sYXRpb24ucGFyYW1ldHJpemF0aW9uPSJjZW50cmlwZXRhbCIsdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uYWxwaGE9LjUpKSx0aGlzLnlBeGlzTGVmdCYmdm9pZCAwIT09dC5kYXRhQXhpcyYmKHRoaXMueUF4aXNMZWZ0LnNldE9wdGlvbnModGhpcy5vcHRpb25zLmRhdGFBeGlzKSx0aGlzLnlBeGlzUmlnaHQuc2V0T3B0aW9ucyh0aGlzLm9wdGlvbnMuZGF0YUF4aXMpKSx0aGlzLmxlZ2VuZExlZnQmJnZvaWQgMCE9PXQubGVnZW5kJiYodGhpcy5sZWdlbmRMZWZ0LnNldE9wdGlvbnModGhpcy5vcHRpb25zLmxlZ2VuZCksdGhpcy5sZWdlbmRSaWdodC5zZXRPcHRpb25zKHRoaXMub3B0aW9ucy5sZWdlbmQpKSx0aGlzLmdyb3Vwcy5oYXNPd25Qcm9wZXJ0eSgiX191bmdyb3VwZWRfXyIpJiZ0aGlzLmdyb3Vwcy5fX3VuZ3JvdXBlZF9fLnNldE9wdGlvbnModCl9DQp0aGlzLmRvbS5mcmFtZSYmKHRoaXMuZm9yY2VHcmFwaFVwZGF0ZT0hMCx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfY2hhbmdlIix7cXVldWU6ITB9KSl9LG8ucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oKXt0aGlzLmRvbS5mcmFtZS5wYXJlbnROb2RlJiZ0aGlzLmRvbS5mcmFtZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZG9tLmZyYW1lKX0sby5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe3RoaXMuZG9tLmZyYW1lLnBhcmVudE5vZGV8fHRoaXMuYm9keS5kb20uY2VudGVyLmFwcGVuZENoaWxkKHRoaXMuZG9tLmZyYW1lKX0sby5wcm90b3R5cGUuc2V0SXRlbXM9ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLG89dGhpcy5pdGVtc0RhdGE7aWYodCl7aWYoISh0IGluc3RhbmNlb2YgaHx8dCBpbnN0YW5jZW9mIGQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkRhdGEgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBEYXRhU2V0IG9yIERhdGFWaWV3Iik7dGhpcy5pdGVtc0RhdGE9dH1lbHNlIHRoaXMuaXRlbXNEYXRhPW51bGw7aWYobyYmKHIuZm9yRWFjaCh0aGlzLml0ZW1MaXN0ZW5lcnMsZnVuY3Rpb24odCxlKXtvLm9mZihlLHQpfSksZT1vLmdldElkcygpLHRoaXMuX29uUmVtb3ZlKGUpKSx0aGlzLml0ZW1zRGF0YSl7dmFyIG49dGhpcy5pZDtyLmZvckVhY2godGhpcy5pdGVtTGlzdGVuZXJzLGZ1bmN0aW9uKHQsZSl7aS5pdGVtc0RhdGEub24oZSx0LG4pfSksZT10aGlzLml0ZW1zRGF0YS5nZXRJZHMoKSx0aGlzLl9vbkFkZChlKX19LG8ucHJvdG90eXBlLnNldEdyb3Vwcz1mdW5jdGlvbih0KXt2YXIgZSxpPXRoaXM7aWYodGhpcy5ncm91cHNEYXRhKXtyLmZvckVhY2godGhpcy5ncm91cExpc3RlbmVycyxmdW5jdGlvbih0LGUpe2kuZ3JvdXBzRGF0YS5vZmYoZSx0KX0pLGU9dGhpcy5ncm91cHNEYXRhLmdldElkcygpLHRoaXMuZ3JvdXBzRGF0YT1udWxsO2Zvcih2YXIgbz0wO288ZS5sZW5ndGg7bysrKXRoaXMuX3JlbW92ZUdyb3VwKGVbb10pfWlmKHQpe2lmKCEodCBpbnN0YW5jZW9mIGh8fHQgaW5zdGFuY2VvZiBkKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEYXRhIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgRGF0YVNldCBvciBEYXRhVmlldyIpO3RoaXMuZ3JvdXBzRGF0YT10fWVsc2UgdGhpcy5ncm91cHNEYXRhPW51bGw7aWYodGhpcy5ncm91cHNEYXRhKXt2YXIgbj10aGlzLmlkO3IuZm9yRWFjaCh0aGlzLmdyb3VwTGlzdGVuZXJzLGZ1bmN0aW9uKHQsZSl7aS5ncm91cHNEYXRhLm9uKGUsdCxuKX0pLGU9dGhpcy5ncm91cHNEYXRhLmdldElkcygpLHRoaXMuX29uQWRkR3JvdXBzKGUpfX0sby5wcm90b3R5cGUuX29uVXBkYXRlPWZ1bmN0aW9uKHQpe3RoaXMuX3VwZGF0ZUFsbEdyb3VwRGF0YSh0KX0sby5wcm90b3R5cGUuX29uQWRkPWZ1bmN0aW9uKHQpe3RoaXMuX29uVXBkYXRlKHQpfSxvLnByb3RvdHlwZS5fb25SZW1vdmU9ZnVuY3Rpb24odCl7dGhpcy5fb25VcGRhdGUodCl9LG8ucHJvdG90eXBlLl9vblVwZGF0ZUdyb3Vwcz1mdW5jdGlvbih0KXt0aGlzLl91cGRhdGVBbGxHcm91cERhdGEobnVsbCx0KX0sby5wcm90b3R5cGUuX29uQWRkR3JvdXBzPWZ1bmN0aW9uKHQpe3RoaXMuX29uVXBkYXRlR3JvdXBzKHQpfSxvLnByb3RvdHlwZS5fb25SZW1vdmVHcm91cHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5fcmVtb3ZlR3JvdXAodFtlXSk7dGhpcy5mb3JjZUdyYXBoVXBkYXRlPSEwLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9jaGFuZ2UiLHtxdWV1ZTohMH0pfSxvLnByb3RvdHlwZS5fcmVtb3ZlR3JvdXA9ZnVuY3Rpb24odCl7dGhpcy5ncm91cHMuaGFzT3duUHJvcGVydHkodCkmJigicmlnaHQiPT10aGlzLmdyb3Vwc1t0XS5vcHRpb25zLnlBeGlzT3JpZW50YXRpb24/KHRoaXMueUF4aXNSaWdodC5yZW1vdmVHcm91cCh0KSx0aGlzLmxlZ2VuZFJpZ2h0LnJlbW92ZUdyb3VwKHQpLHRoaXMubGVnZW5kUmlnaHQucmVkcmF3KCkpOih0aGlzLnlBeGlzTGVmdC5yZW1vdmVHcm91cCh0KSx0aGlzLmxlZ2VuZExlZnQucmVtb3ZlR3JvdXAodCksdGhpcy5sZWdlbmRMZWZ0LnJlZHJhdygpKSxkZWxldGUgdGhpcy5ncm91cHNbdF0pfSxvLnByb3RvdHlwZS5fdXBkYXRlR3JvdXA9ZnVuY3Rpb24odCxlKXt0aGlzLmdyb3Vwcy5oYXNPd25Qcm9wZXJ0eShlKT8odGhpcy5ncm91cHNbZV0udXBkYXRlKHQpLCJyaWdodCI9PXRoaXMuZ3JvdXBzW2VdLm9wdGlvbnMueUF4aXNPcmllbnRhdGlvbj8odGhpcy55QXhpc1JpZ2h0LnVwZGF0ZUdyb3VwKGUsdGhpcy5ncm91cHNbZV0pLHRoaXMubGVnZW5kUmlnaHQudXBkYXRlR3JvdXAoZSx0aGlzLmdyb3Vwc1tlXSksdGhpcy55QXhpc0xlZnQucmVtb3ZlR3JvdXAoZSksdGhpcy5sZWdlbmRMZWZ0LnJlbW92ZUdyb3VwKGUpKToodGhpcy55QXhpc0xlZnQudXBkYXRlR3JvdXAoZSx0aGlzLmdyb3Vwc1tlXSksdGhpcy5sZWdlbmRMZWZ0LnVwZGF0ZUdyb3VwKGUsdGhpcy5ncm91cHNbZV0pLHRoaXMueUF4aXNSaWdodC5yZW1vdmVHcm91cChlKSx0aGlzLmxlZ2VuZFJpZ2h0LnJlbW92ZUdyb3VwKGUpKSk6KHRoaXMuZ3JvdXBzW2VdPW5ldyBjKHQsZSx0aGlzLm9wdGlvbnMsdGhpcy5ncm91cHNVc2luZ0RlZmF1bHRTdHlsZXMpLCJyaWdodCI9PXRoaXMuZ3JvdXBzW2VdLm9wdGlvbnMueUF4aXNPcmllbnRhdGlvbj8odGhpcy55QXhpc1JpZ2h0LmFkZEdyb3VwKGUsdGhpcy5ncm91cHNbZV0pLHRoaXMubGVnZW5kUmlnaHQuYWRkR3JvdXAoZSx0aGlzLmdyb3Vwc1tlXSkpOih0aGlzLnlBeGlzTGVmdC5hZGRHcm91cChlLHRoaXMuZ3JvdXBzW2VdKSx0aGlzLmxlZ2VuZExlZnQuYWRkR3JvdXAoZSx0aGlzLmdyb3Vwc1tlXSkpKSx0aGlzLmxlZ2VuZExlZnQucmVkcmF3KCksdGhpcy5sZWdlbmRSaWdodC5yZWRyYXcoKX0sby5wcm90b3R5cGUuX3VwZGF0ZUFsbEdyb3VwRGF0YT1mdW5jdGlvbih0LGUpe2lmKG51bGwhPXRoaXMuaXRlbXNEYXRhKXt2YXIgaT17fSxvPXRoaXMuaXRlbXNEYXRhLmdldCgpLG49dGhpcy5pdGVtc0RhdGEuX2ZpZWxkSWQscz17fTt0JiZ0Lm1hcChmdW5jdGlvbih0KXtzW3RdPXR9KTtmb3IodmFyIGE9e30saD0wO2g8by5sZW5ndGg7aCsrKXt2YXIgZD1vW2hdLGw9ZC5ncm91cDtudWxsIT09bCYmdm9pZCAwIT09bHx8KGw9Il9fdW5ncm91cGVkX18iKSxhLmhhc093blByb3BlcnR5KGwpP2FbbF0rKzphW2xdPTF9dmFyIHU9e307aWYoIWUmJnQpZm9yKHZhciBsIGluIHRoaXMuZ3JvdXBzKWlmKHRoaXMuZ3JvdXBzLmhhc093blByb3BlcnR5KGwpKXt2YXIgYz10aGlzLmdyb3Vwc1tsXSxwPWMuZ2V0SXRlbXMoKTtpW2xdPXAuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB1W3Rbbl1dPXRbbl0sdFtuXSE9PXNbdFtuXV19KTt2YXIgZj1hW2xdO2FbbF0tPWlbbF0ubGVuZ3RoLGlbbF0ubGVuZ3RoPGYmJihpW2xdW2YtMV09e30pfWZvcih2YXIgaD0wO2g8by5sZW5ndGg7aCsrKXt2YXIgZD1vW2hdLGw9ZC5ncm91cDtpZihudWxsIT09bCYmdm9pZCAwIT09bHx8KGw9Il9fdW5ncm91cGVkX18iKSxlfHwhdHx8ZFtuXT09PXNbZFtuXV18fCF1Lmhhc093blByb3BlcnR5KGRbbl0pKXtpLmhhc093blByb3BlcnR5KGwpfHwoaVtsXT1uZXcgQXJyYXkoYVtsXSkpO3ZhciBtPXIuYnJpZGdlT2JqZWN0KGQpO20ueD1yLmNvbnZlcnQoZC54LCJEYXRlIiksbS5lbmQ9ci5jb252ZXJ0KGQuZW5kLCJEYXRlIiksbS5vcmdpbmFsWT1kLnksbS55PU51bWJlcihkLnkpLG1bbl09ZFtuXTt2YXIgdj1pW2xdLmxlbmd0aC1hW2xdLS07aVtsXVt2XT1tfX1mb3IodmFyIGwgaW4gdGhpcy5ncm91cHMpdGhpcy5ncm91cHMuaGFzT3duUHJvcGVydHkobCkmJihpLmhhc093blByb3BlcnR5KGwpfHwoaVtsXT1uZXcgQXJyYXkoMCkpKTtmb3IodmFyIGwgaW4gaSlpZihpLmhhc093blByb3BlcnR5KGwpKWlmKDA9PWlbbF0ubGVuZ3RoKXRoaXMuZ3JvdXBzLmhhc093blByb3BlcnR5KGwpJiZ0aGlzLl9yZW1vdmVHcm91cChsKTtlbHNle3ZhciBjPXZvaWQgMDt2b2lkIDAhPXRoaXMuZ3JvdXBzRGF0YSYmKGM9dGhpcy5ncm91cHNEYXRhLmdldChsKSksdm9pZCAwPT1jJiYoYz17aWQ6bCxjb250ZW50OnRoaXMub3B0aW9ucy5kZWZhdWx0R3JvdXArbH0pLHRoaXMuX3VwZGF0ZUdyb3VwKGMsbCksdGhpcy5ncm91cHNbbF0uc2V0SXRlbXMoaVtsXSl9dGhpcy5mb3JjZUdyYXBoVXBkYXRlPSEwLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9jaGFuZ2UiLHtxdWV1ZTohMH0pfX0sby5wcm90b3R5cGUucmVkcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9ITE7dGhpcy5wcm9wcy53aWR0aD10aGlzLmRvbS5mcmFtZS5vZmZzZXRXaWR0aCx0aGlzLnByb3BzLmhlaWdodD10aGlzLmJvZHkuZG9tUHJvcHMuY2VudGVyQ29udGFpbmVyLmhlaWdodC10aGlzLmJvZHkuZG9tUHJvcHMuYm9yZGVyLnRvcC10aGlzLmJvZHkuZG9tUHJvcHMuYm9yZGVyLmJvdHRvbSx0PXRoaXMuX2lzUmVzaXplZCgpfHx0O3ZhciBlPXRoaXMuYm9keS5yYW5nZS5lbmQtdGhpcy5ib2R5LnJhbmdlLnN0YXJ0LGk9ZSE9dGhpcy5sYXN0VmlzaWJsZUludGVydmFsO2lmKHRoaXMubGFzdFZpc2libGVJbnRlcnZhbD1lLDE9PXQmJih0aGlzLnN2Zy5zdHlsZS53aWR0aD1yLm9wdGlvbi5hc1NpemUoMyp0aGlzLnByb3BzLndpZHRoKSx0aGlzLnN2Zy5zdHlsZS5sZWZ0PXIub3B0aW9uLmFzU2l6ZSgtdGhpcy5wcm9wcy53aWR0aCksLTE9PSh0aGlzLm9wdGlvbnMuaGVpZ2h0KyIiKS5pbmRleE9mKCIlIikmJjEhPXRoaXMudXBkYXRlU1ZHaGVpZ2h0T25SZXNpemV8fCh0aGlzLnVwZGF0ZVNWR2hlaWdodD0hMCkpLDE9PXRoaXMudXBkYXRlU1ZHaGVpZ2h0Pyh0aGlzLm9wdGlvbnMuZ3JhcGhIZWlnaHQhPXRoaXMucHJvcHMuaGVpZ2h0KyJweCImJih0aGlzLm9wdGlvbnMuZ3JhcGhIZWlnaHQ9dGhpcy5wcm9wcy5oZWlnaHQrInB4Iix0aGlzLnN2Zy5zdHlsZS5oZWlnaHQ9dGhpcy5wcm9wcy5oZWlnaHQrInB4IiksdGhpcy51cGRhdGVTVkdoZWlnaHQ9ITEpOnRoaXMuc3ZnLnN0eWxlLmhlaWdodD0oIiIrdGhpcy5vcHRpb25zLmdyYXBoSGVpZ2h0KS5yZXBsYWNlKCJweCIsIiIpKyJweCIsMT09dHx8MT09aXx8MT09dGhpcy5hYm9ydGVkR3JhcGhVcGRhdGV8fDE9PXRoaXMuZm9yY2VHcmFwaFVwZGF0ZSl0PXRoaXMuX3VwZGF0ZUdyYXBoKCl8fHQsdGhpcy5mb3JjZUdyYXBoVXBkYXRlPSExO2Vsc2UgaWYoMCE9dGhpcy5sYXN0U3RhcnQpe3ZhciBvPXRoaXMuYm9keS5yYW5nZS5zdGFydC10aGlzLmxhc3RTdGFydCxuPXRoaXMuYm9keS5yYW5nZS5lbmQtdGhpcy5ib2R5LnJhbmdlLnN0YXJ0O2lmKDAhPXRoaXMucHJvcHMud2lkdGgpe3ZhciBzPXRoaXMucHJvcHMud2lkdGgvbixhPW8qczt0aGlzLnN2Zy5zdHlsZS5sZWZ0PS10aGlzLnByb3BzLndpZHRoLWErInB4In19cmV0dXJuIHRoaXMubGVnZW5kTGVmdC5yZWRyYXcoKSx0aGlzLmxlZ2VuZFJpZ2h0LnJlZHJhdygpLHR9LG8ucHJvdG90eXBlLl9nZXRTb3J0ZWRHcm91cElkcz1mdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzLmdyb3VwcylpZih0aGlzLmdyb3Vwcy5oYXNPd25Qcm9wZXJ0eShlKSl7dmFyIGk9dGhpcy5ncm91cHNbZV07MSE9aS52aXNpYmxlfHx2b2lkIDAhPT10aGlzLm9wdGlvbnMuZ3JvdXBzLnZpc2liaWxpdHlbZV0mJjEhPXRoaXMub3B0aW9ucy5ncm91cHMudmlzaWJpbGl0eVtlXXx8dC5wdXNoKHtpZDplLHpJbmRleDppLm9wdGlvbnMuekluZGV4fSl9ci5pbnNlcnRTb3J0KHQsZnVuY3Rpb24odCxlKXt2YXIgaT10LnpJbmRleCxvPWUuekluZGV4O3JldHVybiB2b2lkIDA9PT1pJiYoaT0wKSx2b2lkIDA9PT1vJiYobz0wKSxpPT1vPzA6aTxvPy0xOjF9KTtmb3IodmFyIG89bmV3IEFycmF5KHQubGVuZ3RoKSxuPTA7bjx0Lmxlbmd0aDtuKyspb1tuXT10W25dLmlkO3JldHVybiBvfSxvLnByb3RvdHlwZS5fdXBkYXRlR3JhcGg9ZnVuY3Rpb24oKXtpZihhLnByZXBhcmVFbGVtZW50cyh0aGlzLnN2Z0VsZW1lbnRzKSwwIT10aGlzLnByb3BzLndpZHRoJiZudWxsIT10aGlzLml0ZW1zRGF0YSl7dmFyIHQsZSxpPXt9LG89dGhpcy5ib2R5LnV0aWwudG9HbG9iYWxUaW1lKC10aGlzLmJvZHkuZG9tUHJvcHMucm9vdC53aWR0aCksbj10aGlzLmJvZHkudXRpbC50b0dsb2JhbFRpbWUoMip0aGlzLmJvZHkuZG9tUHJvcHMucm9vdC53aWR0aCkscz10aGlzLl9nZXRTb3J0ZWRHcm91cElkcygpO2lmKHMubGVuZ3RoPjApe3ZhciByPXt9O2Zvcih0aGlzLl9nZXRSZWxldmFudERhdGEocyxyLG8sbiksdGhpcy5fYXBwbHlTYW1wbGluZyhzLHIpLGU9MDtlPHMubGVuZ3RoO2UrKyl0aGlzLl9jb252ZXJ0WGNvb3JkaW5hdGVzKHJbc1tlXV0pO2lmKHRoaXMuX2dldFlSYW5nZXMocyxyLGkpLDE9PXRoaXMuX3VwZGF0ZVlBeGlzKHMsaSkpcmV0dXJuIGEuY2xlYW51cEVsZW1lbnRzKHRoaXMuc3ZnRWxlbWVudHMpLHRoaXMuYWJvcnRlZEdyYXBoVXBkYXRlPSEwLCEwO3RoaXMuYWJvcnRlZEdyYXBoVXBkYXRlPSExO3ZhciBoPXZvaWQgMDtmb3IoZT0wO2U8cy5sZW5ndGg7ZSsrKXQ9dGhpcy5ncm91cHNbc1tlXV0sITA9PT10aGlzLm9wdGlvbnMuc3RhY2smJiJsaW5lIj09PXRoaXMub3B0aW9ucy5zdHlsZSYmKHZvaWQgMCE9dC5vcHRpb25zLmV4Y2x1ZGVGcm9tU3RhY2tpbmcmJnQub3B0aW9ucy5leGNsdWRlRnJvbVN0YWNraW5nfHwodm9pZCAwIT1oJiYodGhpcy5fc3RhY2soclt0LmlkXSxyW2guaWRdKSwxPT10Lm9wdGlvbnMuc2hhZGVkLmVuYWJsZWQmJiJncm91cCIhPT10Lm9wdGlvbnMuc2hhZGVkLm9yaWVudGF0aW9uJiYoInRvcCI9PXQub3B0aW9ucy5zaGFkZWQub3JpZW50YXRpb24mJiJncm91cCIhPT1oLm9wdGlvbnMuc2hhZGVkLm9yaWVudGF0aW9uPyhoLm9wdGlvbnMuc2hhZGVkLm9yaWVudGF0aW9uPSJncm91cCIsaC5vcHRpb25zLnNoYWRlZC5ncm91cElkPXQuaWQpOih0Lm9wdGlvbnMuc2hhZGVkLm9yaWVudGF0aW9uPSJncm91cCIsdC5vcHRpb25zLnNoYWRlZC5ncm91cElkPWguaWQpKSksaD10KSksdGhpcy5fY29udmVydFljb29yZGluYXRlcyhyW3NbZV1dLHQpO3ZhciBkPXt9O2ZvcihlPTA7ZTxzLmxlbmd0aDtlKyspaWYodD10aGlzLmdyb3Vwc1tzW2VdXSwibGluZSI9PT10Lm9wdGlvbnMuc3R5bGUmJjE9PXQub3B0aW9ucy5zaGFkZWQuZW5hYmxlZCl7dmFyIGw9cltzW2VdXTtpZihudWxsPT1sfHwwPT1sLmxlbmd0aCljb250aW51ZTtpZihkLmhhc093blByb3BlcnR5KHNbZV0pfHwoZFtzW2VdXT1tLmNhbGNQYXRoKGwsdCkpLCJncm91cCI9PT10Lm9wdGlvbnMuc2hhZGVkLm9yaWVudGF0aW9uKXt2YXIgdT10Lm9wdGlvbnMuc2hhZGVkLmdyb3VwSWQ7aWYoLTE9PT1zLmluZGV4T2YodSkpe2NvbnNvbGUubG9nKHQuaWQrIjogVW5rbm93biBzaGFkaW5nIGdyb3VwIHRhcmdldCBnaXZlbjoiK3UpO2NvbnRpbnVlfWQuaGFzT3duUHJvcGVydHkodSl8fChkW3VdPW0uY2FsY1BhdGgoclt1XSx0aGlzLmdyb3Vwc1t1XSkpLG0uZHJhd1NoYWRpbmcoZFtzW2VdXSx0LGRbdV0sdGhpcy5mcmFtZXdvcmspfWVsc2UgbS5kcmF3U2hhZGluZyhkW3NbZV1dLHQsdm9pZCAwLHRoaXMuZnJhbWV3b3JrKX1mb3IoZi5kcmF3KHMscix0aGlzLmZyYW1ld29yayksZT0wO2U8cy5sZW5ndGg7ZSsrKWlmKHQ9dGhpcy5ncm91cHNbc1tlXV0scltzW2VdXS5sZW5ndGg+MClzd2l0Y2godC5vcHRpb25zLnN0eWxlKXtjYXNlImxpbmUiOmQuaGFzT3duUHJvcGVydHkoc1tlXSl8fChkW3NbZV1dPW0uY2FsY1BhdGgocltzW2VdXSx0KSksbS5kcmF3KGRbc1tlXV0sdCx0aGlzLmZyYW1ld29yayk7Y2FzZSJwb2ludCI6Y2FzZSJwb2ludHMiOiJwb2ludCIhPXQub3B0aW9ucy5zdHlsZSYmInBvaW50cyIhPXQub3B0aW9ucy5zdHlsZSYmMSE9dC5vcHRpb25zLmRyYXdQb2ludHMuZW5hYmxlZHx8di5kcmF3KHJbc1tlXV0sdCx0aGlzLmZyYW1ld29yayl9fX1yZXR1cm4gYS5jbGVhbnVwRWxlbWVudHModGhpcy5zdmdFbGVtZW50cyksITF9LG8ucHJvdG90eXBlLl9zdGFjaz1mdW5jdGlvbih0LGUpe3ZhciBpLG8sbixzLHI7aT0wO2Zvcih2YXIgYT0wO2E8dC5sZW5ndGg7YSsrKXtzPXZvaWQgMCxyPXZvaWQgMDtmb3IodmFyIGg9aTtoPGUubGVuZ3RoO2grKyl7aWYoZVtoXS54PT09dFthXS54KXtzPWVbaF0scj1lW2hdLGk9aDticmVha31pZihlW2hdLng+dFthXS54KXtyPWVbaF0scz0wPT1oP3I6ZVtoLTFdLGk9aDticmVha319dm9pZCAwPT09ciYmKHM9ZVtlLmxlbmd0aC0xXSxyPWVbZS5sZW5ndGgtMV0pLG89ci54LXMueCxuPXIueS1zLnksdFthXS55PTA9PW8/dFthXS5vcmdpbmFsWStyLnk6dFthXS5vcmdpbmFsWStuL28qKHRbYV0ueC1zLngpK3MueX19LG8ucHJvdG90eXBlLl9nZXRSZWxldmFudERhdGE9ZnVuY3Rpb24odCxlLGksbyl7dmFyIG4scyxhLGg7aWYodC5sZW5ndGg+MClmb3Iocz0wO3M8dC5sZW5ndGg7cysrKXtuPXRoaXMuZ3JvdXBzW3Rbc11dO3ZhciBkPW4uZ2V0SXRlbXMoKTtpZigxPT1uLm9wdGlvbnMuc29ydCl7dmFyIGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5nZXRUaW1lKCk9PWUuZ2V0VGltZSgpPzA6dDxlPy0xOjF9LHU9TWF0aC5tYXgoMCxyLmJpbmFyeVNlYXJjaFZhbHVlKGQsaSwieCIsImJlZm9yZSIsbCkpLGM9TWF0aC5taW4oZC5sZW5ndGgsci5iaW5hcnlTZWFyY2hWYWx1ZShkLG8sIngiLCJhZnRlciIsbCkrMSk7Yzw9MCYmKGM9ZC5sZW5ndGgpO3ZhciBwPW5ldyBBcnJheShjLXUpO2ZvcihhPXU7YTxjO2ErKyloPW4uaXRlbXNEYXRhW2FdLHBbYS11XT1oO2VbdFtzXV09cH1lbHNlIGVbdFtzXV09bi5pdGVtc0RhdGF9fSxvLnByb3RvdHlwZS5fYXBwbHlTYW1wbGluZz1mdW5jdGlvbih0LGUpe3ZhciBpO2lmKHQubGVuZ3RoPjApZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspaWYoaT10aGlzLmdyb3Vwc1t0W29dXSwxPT1pLm9wdGlvbnMuc2FtcGxpbmcpe3ZhciBuPWVbdFtvXV07aWYobi5sZW5ndGg+MCl7dmFyIHM9MSxyPW4ubGVuZ3RoLGE9dGhpcy5ib2R5LnV0aWwudG9HbG9iYWxTY3JlZW4obltuLmxlbmd0aC0xXS54KS10aGlzLmJvZHkudXRpbC50b0dsb2JhbFNjcmVlbihuWzBdLngpLGg9ci9hO3M9TWF0aC5taW4oTWF0aC5jZWlsKC4yKnIpLE1hdGgubWF4KDEsTWF0aC5yb3VuZChoKSkpO2Zvcih2YXIgZD1uZXcgQXJyYXkociksbD0wO2w8cjtsKz1zKXt2YXIgdT1NYXRoLnJvdW5kKGwvcyk7ZFt1XT1uW2xdfWVbdFtvXV09ZC5zcGxpY2UoMCxNYXRoLnJvdW5kKHIvcykpfX19LG8ucHJvdG90eXBlLl9nZXRZUmFuZ2VzPWZ1bmN0aW9uKHQsZSxpKXt2YXIgbyxuLHMscixhPVtdLGg9W107aWYodC5sZW5ndGg+MCl7Zm9yKHM9MDtzPHQubGVuZ3RoO3MrKylvPWVbdFtzXV0scj10aGlzLmdyb3Vwc1t0W3NdXS5vcHRpb25zLG8ubGVuZ3RoPjAmJihuPXRoaXMuZ3JvdXBzW3Rbc11dLCEwPT09ci5zdGFjayYmImJhciI9PT1yLnN0eWxlPyJsZWZ0Ij09PXIueUF4aXNPcmllbnRhdGlvbj9hPWEuY29uY2F0KG8pOmg9aC5jb25jYXQobyk6aVt0W3NdXT1uLmdldFlSYW5nZShvLHRbc10pKTtmLmdldFN0YWNrZWRZUmFuZ2UoYSxpLHQsIl9fYmFyU3RhY2tMZWZ0IiwibGVmdCIpLGYuZ2V0U3RhY2tlZFlSYW5nZShoLGksdCwiX19iYXJTdGFja1JpZ2h0IiwicmlnaHQiKX19LG8ucHJvdG90eXBlLl91cGRhdGVZQXhpcz1mdW5jdGlvbih0LGUpe3ZhciBpLG8sbj0hMSxzPSExLHI9ITEsYT0xZTksaD0xZTksZD0tMWU5LGw9LTFlOTtpZih0Lmxlbmd0aD4wKXtmb3IodmFyIHU9MDt1PHQubGVuZ3RoO3UrKyl7dmFyIGM9dGhpcy5ncm91cHNbdFt1XV07YyYmInJpZ2h0IiE9Yy5vcHRpb25zLnlBeGlzT3JpZW50YXRpb24/KHM9ITAsYT0xZTksZD0tMWU5KTpjJiZjLm9wdGlvbnMueUF4aXNPcmllbnRhdGlvbiYmKHI9ITAsaD0xZTksbD0tMWU5KX1mb3IodmFyIHU9MDt1PHQubGVuZ3RoO3UrKyllLmhhc093blByb3BlcnR5KHRbdV0pJiYhMCE9PWVbdFt1XV0uaWdub3JlJiYoaT1lW3RbdV1dLm1pbixvPWVbdFt1XV0ubWF4LCJyaWdodCIhPWVbdFt1XV0ueUF4aXNPcmllbnRhdGlvbj8ocz0hMCxhPWE+aT9pOmEsZD1kPG8/bzpkKToocj0hMCxoPWg+aT9pOmgsbD1sPG8/bzpsKSk7MT09cyYmdGhpcy55QXhpc0xlZnQuc2V0UmFuZ2UoYSxkKSwxPT1yJiZ0aGlzLnlBeGlzUmlnaHQuc2V0UmFuZ2UoaCxsKX1uPXRoaXMuX3RvZ2dsZUF4aXNWaXNpYmxpdHkocyx0aGlzLnlBeGlzTGVmdCl8fG4sbj10aGlzLl90b2dnbGVBeGlzVmlzaWJsaXR5KHIsdGhpcy55QXhpc1JpZ2h0KXx8biwxPT1yJiYxPT1zPyh0aGlzLnlBeGlzTGVmdC5kcmF3SWNvbnM9ITAsdGhpcy55QXhpc1JpZ2h0LmRyYXdJY29ucz0hMCk6KHRoaXMueUF4aXNMZWZ0LmRyYXdJY29ucz0hMSx0aGlzLnlBeGlzUmlnaHQuZHJhd0ljb25zPSExKSx0aGlzLnlBeGlzUmlnaHQubWFzdGVyPSFzLHRoaXMueUF4aXNSaWdodC5tYXN0ZXJBeGlzPXRoaXMueUF4aXNMZWZ0LDA9PXRoaXMueUF4aXNSaWdodC5tYXN0ZXI/KHRoaXMueUF4aXNMZWZ0LmxpbmVPZmZzZXQ9MT09cj90aGlzLnlBeGlzUmlnaHQud2lkdGg6MCxuPXRoaXMueUF4aXNMZWZ0LnJlZHJhdygpfHxuLG49dGhpcy55QXhpc1JpZ2h0LnJlZHJhdygpfHxuKTpuPXRoaXMueUF4aXNSaWdodC5yZWRyYXcoKXx8bjtmb3IodmFyIHA9WyJfX2JhclN0YWNrTGVmdCIsIl9fYmFyU3RhY2tSaWdodCIsIl9fbGluZVN0YWNrTGVmdCIsIl9fbGluZVN0YWNrUmlnaHQiXSx1PTA7dTxwLmxlbmd0aDt1KyspLTEhPXQuaW5kZXhPZihwW3VdKSYmdC5zcGxpY2UodC5pbmRleE9mKHBbdV0pLDEpO3JldHVybiBufSxvLnByb3RvdHlwZS5fdG9nZ2xlQXhpc1Zpc2libGl0eT1mdW5jdGlvbih0LGUpe3ZhciBpPSExO3JldHVybiAwPT10P2UuZG9tLmZyYW1lLnBhcmVudE5vZGUmJjA9PWUuaGlkZGVuJiYoZS5oaWRlKCksaT0hMCk6ZS5kb20uZnJhbWUucGFyZW50Tm9kZXx8MSE9ZS5oaWRkZW58fChlLnNob3coKSxpPSEwKSxpfSxvLnByb3RvdHlwZS5fY29udmVydFhjb29yZGluYXRlcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5ib2R5LnV0aWwudG9TY3JlZW4saT0wO2k8dC5sZW5ndGg7aSsrKXRbaV0uc2NyZWVuX3g9ZSh0W2ldLngpK3RoaXMucHJvcHMud2lkdGgsdFtpXS5zY3JlZW5feT10W2ldLnksdm9pZCAwIT10W2ldLmVuZD90W2ldLnNjcmVlbl9lbmQ9ZSh0W2ldLmVuZCkrdGhpcy5wcm9wcy53aWR0aDp0W2ldLnNjcmVlbl9lbmQ9dm9pZCAwfSxvLnByb3RvdHlwZS5fY29udmVydFljb29yZGluYXRlcz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMueUF4aXNMZWZ0LG89TnVtYmVyKHRoaXMuc3ZnLnN0eWxlLmhlaWdodC5yZXBsYWNlKCJweCIsIiIpKTsicmlnaHQiPT1lLm9wdGlvbnMueUF4aXNPcmllbnRhdGlvbiYmKGk9dGhpcy55QXhpc1JpZ2h0KTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl0W25dLnNjcmVlbl95PU1hdGgucm91bmQoaS5jb252ZXJ0VmFsdWUodFtuXS55KSk7ZS5zZXRaZXJvUG9zaXRpb24oTWF0aC5taW4obyxpLmNvbnZlcnRWYWx1ZSgwKSkpfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlLGksbyl7dGhpcy5pZD1yLnJhbmRvbVVVSUQoKSx0aGlzLmJvZHk9dCx0aGlzLmRlZmF1bHRPcHRpb25zPXtvcmllbnRhdGlvbjoibGVmdCIsc2hvd01pbm9yTGFiZWxzOiEwLHNob3dNYWpvckxhYmVsczohMCxpY29uczohMSxtYWpvckxpbmVzT2Zmc2V0OjcsbWlub3JMaW5lc09mZnNldDo0LGxhYmVsT2Zmc2V0WDoxMCxsYWJlbE9mZnNldFk6MixpY29uV2lkdGg6MjAsd2lkdGg6IjQwcHgiLHZpc2libGU6ITAsYWxpZ25aZXJvczohMCxsZWZ0OntyYW5nZTp7bWluOnZvaWQgMCxtYXg6dm9pZCAwfSxmb3JtYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIiIrcGFyc2VGbG9hdCh0LnRvUHJlY2lzaW9uKDMpKX0sdGl0bGU6e3RleHQ6dm9pZCAwLHN0eWxlOnZvaWQgMH19LHJpZ2h0OntyYW5nZTp7bWluOnZvaWQgMCxtYXg6dm9pZCAwfSxmb3JtYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIiIrcGFyc2VGbG9hdCh0LnRvUHJlY2lzaW9uKDMpKX0sdGl0bGU6e3RleHQ6dm9pZCAwLHN0eWxlOnZvaWQgMH19fSx0aGlzLmxpbmVncmFwaE9wdGlvbnM9byx0aGlzLmxpbmVncmFwaFNWRz1pLHRoaXMucHJvcHM9e30sdGhpcy5ET01lbGVtZW50cz17bGluZXM6e30sbGFiZWxzOnt9LHRpdGxlOnt9fSx0aGlzLmRvbT17fSx0aGlzLnNjYWxlPXZvaWQgMCx0aGlzLnJhbmdlPXtzdGFydDowLGVuZDowfSx0aGlzLm9wdGlvbnM9ci5leHRlbmQoe30sdGhpcy5kZWZhdWx0T3B0aW9ucyksdGhpcy5jb252ZXJzaW9uRmFjdG9yPTEsdGhpcy5zZXRPcHRpb25zKGUpLHRoaXMud2lkdGg9TnVtYmVyKCgiIit0aGlzLm9wdGlvbnMud2lkdGgpLnJlcGxhY2UoInB4IiwiIikpLHRoaXMubWluV2lkdGg9dGhpcy53aWR0aCx0aGlzLmhlaWdodD10aGlzLmxpbmVncmFwaFNWRy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsdGhpcy5oaWRkZW49ITEsdGhpcy5zdGVwUGl4ZWxzPTI1LHRoaXMuemVyb0Nyb3NzaW5nPS0xLHRoaXMuYW1vdW50T2ZTdGVwcz0tMSx0aGlzLmxpbmVPZmZzZXQ9MCx0aGlzLm1hc3Rlcj0hMCx0aGlzLm1hc3RlckF4aXM9bnVsbCx0aGlzLnN2Z0VsZW1lbnRzPXt9LHRoaXMuaWNvbnNSZW1vdmVkPSExLHRoaXMuZ3JvdXBzPXt9LHRoaXMuYW1vdW50T2ZHcm91cHM9MCx0aGlzLl9jcmVhdGUoKSx0aGlzLmZyYW1ld29yaz17c3ZnOnRoaXMuc3ZnLHN2Z0VsZW1lbnRzOnRoaXMuc3ZnRWxlbWVudHMsb3B0aW9uczp0aGlzLm9wdGlvbnMsZ3JvdXBzOnRoaXMuZ3JvdXBzfTt2YXIgbj10aGlzO3RoaXMuYm9keS5lbWl0dGVyLm9uKCJ2ZXJ0aWNhbERyYWciLGZ1bmN0aW9uKCl7bi5kb20ubGluZUNvbnRhaW5lci5zdHlsZS50b3A9bi5ib2R5LmRvbVByb3BzLnNjcm9sbFRvcCsicHgifSl9dmFyIG49aSg1OCkscz1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19KG4pLHI9aSgxKSxhPWkoODgpLGg9aSgxMjEpLGQ9aSgxNTIpO28ucHJvdG90eXBlPW5ldyBoLG8ucHJvdG90eXBlLmFkZEdyb3VwPWZ1bmN0aW9uKHQsZSl7dGhpcy5ncm91cHMuaGFzT3duUHJvcGVydHkodCl8fCh0aGlzLmdyb3Vwc1t0XT1lKSx0aGlzLmFtb3VudE9mR3JvdXBzKz0xfSxvLnByb3RvdHlwZS51cGRhdGVHcm91cD1mdW5jdGlvbih0LGUpe3RoaXMuZ3JvdXBzLmhhc093blByb3BlcnR5KHQpfHwodGhpcy5hbW91bnRPZkdyb3Vwcys9MSksdGhpcy5ncm91cHNbdF09ZX0sby5wcm90b3R5cGUucmVtb3ZlR3JvdXA9ZnVuY3Rpb24odCl7dGhpcy5ncm91cHMuaGFzT3duUHJvcGVydHkodCkmJihkZWxldGUgdGhpcy5ncm91cHNbdF0sdGhpcy5hbW91bnRPZkdyb3Vwcy09MSl9LG8ucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7aWYodCl7dmFyIGU9ITE7dGhpcy5vcHRpb25zLm9yaWVudGF0aW9uIT10Lm9yaWVudGF0aW9uJiZ2b2lkIDAhPT10Lm9yaWVudGF0aW9uJiYoZT0hMCk7dmFyIGk9WyJvcmllbnRhdGlvbiIsInNob3dNaW5vckxhYmVscyIsInNob3dNYWpvckxhYmVscyIsImljb25zIiwibWFqb3JMaW5lc09mZnNldCIsIm1pbm9yTGluZXNPZmZzZXQiLCJsYWJlbE9mZnNldFgiLCJsYWJlbE9mZnNldFkiLCJpY29uV2lkdGgiLCJ3aWR0aCIsInZpc2libGUiLCJsZWZ0IiwicmlnaHQiLCJhbGlnblplcm9zIl07ci5zZWxlY3RpdmVEZWVwRXh0ZW5kKGksdGhpcy5vcHRpb25zLHQpLHRoaXMubWluV2lkdGg9TnVtYmVyKCgiIit0aGlzLm9wdGlvbnMud2lkdGgpLnJlcGxhY2UoInB4IiwiIikpLCEwPT09ZSYmdGhpcy5kb20uZnJhbWUmJih0aGlzLmhpZGUoKSx0aGlzLnNob3coKSl9fSxvLnByb3RvdHlwZS5fY3JlYXRlPWZ1bmN0aW9uKCl7dGhpcy5kb20uZnJhbWU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uZnJhbWUuc3R5bGUud2lkdGg9dGhpcy5vcHRpb25zLndpZHRoLHRoaXMuZG9tLmZyYW1lLnN0eWxlLmhlaWdodD10aGlzLmhlaWdodCx0aGlzLmRvbS5saW5lQ29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLmxpbmVDb250YWluZXIuc3R5bGUud2lkdGg9IjEwMCUiLHRoaXMuZG9tLmxpbmVDb250YWluZXIuc3R5bGUuaGVpZ2h0PXRoaXMuaGVpZ2h0LHRoaXMuZG9tLmxpbmVDb250YWluZXIuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIix0aGlzLnN2Zz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwic3ZnIiksdGhpcy5zdmcuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0aGlzLnN2Zy5zdHlsZS50b3A9IjBweCIsdGhpcy5zdmcuc3R5bGUuaGVpZ2h0PSIxMDAlIix0aGlzLnN2Zy5zdHlsZS53aWR0aD0iMTAwJSIsdGhpcy5zdmcuc3R5bGUuZGlzcGxheT0iYmxvY2siLHRoaXMuZG9tLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMuc3ZnKX0sby5wcm90b3R5cGUuX3JlZHJhd0dyb3VwSWNvbnM9ZnVuY3Rpb24oKXthLnByZXBhcmVFbGVtZW50cyh0aGlzLnN2Z0VsZW1lbnRzKTt2YXIgdCxlPXRoaXMub3B0aW9ucy5pY29uV2lkdGgsaT0xMS41O3Q9ImxlZnQiPT09dGhpcy5vcHRpb25zLm9yaWVudGF0aW9uPzQ6dGhpcy53aWR0aC1lLTQ7dmFyIG89KDAscy5kZWZhdWx0KSh0aGlzLmdyb3Vwcyk7by5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ8ZT8tMToxfSk7Zm9yKHZhciBuPTA7bjxvLmxlbmd0aDtuKyspe3ZhciByPW9bbl07ITAhPT10aGlzLmdyb3Vwc1tyXS52aXNpYmxlfHx2b2lkIDAhPT10aGlzLmxpbmVncmFwaE9wdGlvbnMudmlzaWJpbGl0eVtyXSYmITAhPT10aGlzLmxpbmVncmFwaE9wdGlvbnMudmlzaWJpbGl0eVtyXXx8KHRoaXMuZ3JvdXBzW3JdLmdldExlZ2VuZChlLDE1LHRoaXMuZnJhbWV3b3JrLHQsaSksaSs9MTkpfWEuY2xlYW51cEVsZW1lbnRzKHRoaXMuc3ZnRWxlbWVudHMpLHRoaXMuaWNvbnNSZW1vdmVkPSExfSxvLnByb3RvdHlwZS5fY2xlYW51cEljb25zPWZ1bmN0aW9uKCl7ITE9PT10aGlzLmljb25zUmVtb3ZlZCYmKGEucHJlcGFyZUVsZW1lbnRzKHRoaXMuc3ZnRWxlbWVudHMpLGEuY2xlYW51cEVsZW1lbnRzKHRoaXMuc3ZnRWxlbWVudHMpLHRoaXMuaWNvbnNSZW1vdmVkPSEwKX0sby5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe3RoaXMuaGlkZGVuPSExLHRoaXMuZG9tLmZyYW1lLnBhcmVudE5vZGV8fCgibGVmdCI9PT10aGlzLm9wdGlvbnMub3JpZW50YXRpb24/dGhpcy5ib2R5LmRvbS5sZWZ0LmFwcGVuZENoaWxkKHRoaXMuZG9tLmZyYW1lKTp0aGlzLmJvZHkuZG9tLnJpZ2h0LmFwcGVuZENoaWxkKHRoaXMuZG9tLmZyYW1lKSksdGhpcy5kb20ubGluZUNvbnRhaW5lci5wYXJlbnROb2RlfHx0aGlzLmJvZHkuZG9tLmJhY2tncm91bmRIb3Jpem9udGFsLmFwcGVuZENoaWxkKHRoaXMuZG9tLmxpbmVDb250YWluZXIpfSxvLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKCl7dGhpcy5oaWRkZW49ITAsdGhpcy5kb20uZnJhbWUucGFyZW50Tm9kZSYmdGhpcy5kb20uZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbS5mcmFtZSksdGhpcy5kb20ubGluZUNvbnRhaW5lci5wYXJlbnROb2RlJiZ0aGlzLmRvbS5saW5lQ29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kb20ubGluZUNvbnRhaW5lcil9LG8ucHJvdG90eXBlLnNldFJhbmdlPWZ1bmN0aW9uKHQsZSl7dGhpcy5yYW5nZS5zdGFydD10LHRoaXMucmFuZ2UuZW5kPWV9LG8ucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbigpe3ZhciB0PSExLGU9MDt0aGlzLmRvbS5saW5lQ29udGFpbmVyLnN0eWxlLnRvcD10aGlzLmJvZHkuZG9tUHJvcHMuc2Nyb2xsVG9wKyJweCI7Zm9yKHZhciBpIGluIHRoaXMuZ3JvdXBzKXRoaXMuZ3JvdXBzLmhhc093blByb3BlcnR5KGkpJiYoITAhPT10aGlzLmdyb3Vwc1tpXS52aXNpYmxlfHx2b2lkIDAhPT10aGlzLmxpbmVncmFwaE9wdGlvbnMudmlzaWJpbGl0eVtpXSYmITAhPT10aGlzLmxpbmVncmFwaE9wdGlvbnMudmlzaWJpbGl0eVtpXXx8ZSsrKTtpZigwPT09dGhpcy5hbW91bnRPZkdyb3Vwc3x8MD09PWUpdGhpcy5oaWRlKCk7ZWxzZXt0aGlzLnNob3coKSx0aGlzLmhlaWdodD1OdW1iZXIodGhpcy5saW5lZ3JhcGhTVkcuc3R5bGUuaGVpZ2h0LnJlcGxhY2UoInB4IiwiIikpLHRoaXMuZG9tLmxpbmVDb250YWluZXIuc3R5bGUuaGVpZ2h0PXRoaXMuaGVpZ2h0KyJweCIsdGhpcy53aWR0aD0hMD09PXRoaXMub3B0aW9ucy52aXNpYmxlP051bWJlcigoIiIrdGhpcy5vcHRpb25zLndpZHRoKS5yZXBsYWNlKCJweCIsIiIpKTowO3ZhciBvPXRoaXMucHJvcHMsbj10aGlzLmRvbS5mcmFtZTtuLmNsYXNzTmFtZT0idmlzLWRhdGEtYXhpcyIsdGhpcy5fY2FsY3VsYXRlQ2hhclNpemUoKTt2YXIgcz10aGlzLm9wdGlvbnMub3JpZW50YXRpb24scj10aGlzLm9wdGlvbnMuc2hvd01pbm9yTGFiZWxzLGE9dGhpcy5vcHRpb25zLnNob3dNYWpvckxhYmVscztvLm1pbm9yTGFiZWxIZWlnaHQ9cj9vLm1pbm9yQ2hhckhlaWdodDowLG8ubWFqb3JMYWJlbEhlaWdodD1hP28ubWFqb3JDaGFySGVpZ2h0OjAsby5taW5vckxpbmVXaWR0aD10aGlzLmJvZHkuZG9tLmJhY2tncm91bmRIb3Jpem9udGFsLm9mZnNldFdpZHRoLXRoaXMubGluZU9mZnNldC10aGlzLndpZHRoKzIqdGhpcy5vcHRpb25zLm1pbm9yTGluZXNPZmZzZXQsby5taW5vckxpbmVIZWlnaHQ9MSxvLm1ham9yTGluZVdpZHRoPXRoaXMuYm9keS5kb20uYmFja2dyb3VuZEhvcml6b250YWwub2Zmc2V0V2lkdGgtdGhpcy5saW5lT2Zmc2V0LXRoaXMud2lkdGgrMip0aGlzLm9wdGlvbnMubWFqb3JMaW5lc09mZnNldCxvLm1ham9yTGluZUhlaWdodD0xLCJsZWZ0Ij09PXM/KG4uc3R5bGUudG9wPSIwIixuLnN0eWxlLmxlZnQ9IjAiLG4uc3R5bGUuYm90dG9tPSIiLG4uc3R5bGUud2lkdGg9dGhpcy53aWR0aCsicHgiLG4uc3R5bGUuaGVpZ2h0PXRoaXMuaGVpZ2h0KyJweCIsdGhpcy5wcm9wcy53aWR0aD10aGlzLmJvZHkuZG9tUHJvcHMubGVmdC53aWR0aCx0aGlzLnByb3BzLmhlaWdodD10aGlzLmJvZHkuZG9tUHJvcHMubGVmdC5oZWlnaHQpOihuLnN0eWxlLnRvcD0iIixuLnN0eWxlLmJvdHRvbT0iMCIsbi5zdHlsZS5sZWZ0PSIwIixuLnN0eWxlLndpZHRoPXRoaXMud2lkdGgrInB4IixuLnN0eWxlLmhlaWdodD10aGlzLmhlaWdodCsicHgiLHRoaXMucHJvcHMud2lkdGg9dGhpcy5ib2R5LmRvbVByb3BzLnJpZ2h0LndpZHRoLHRoaXMucHJvcHMuaGVpZ2h0PXRoaXMuYm9keS5kb21Qcm9wcy5yaWdodC5oZWlnaHQpLHQ9dGhpcy5fcmVkcmF3TGFiZWxzKCksdD10aGlzLl9pc1Jlc2l6ZWQoKXx8dCwhMD09PXRoaXMub3B0aW9ucy5pY29ucz90aGlzLl9yZWRyYXdHcm91cEljb25zKCk6dGhpcy5fY2xlYW51cEljb25zKCksdGhpcy5fcmVkcmF3VGl0bGUocyl9cmV0dXJuIHR9LG8ucHJvdG90eXBlLl9yZWRyYXdMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9ITE7YS5wcmVwYXJlRWxlbWVudHModGhpcy5ET01lbGVtZW50cy5saW5lcyksYS5wcmVwYXJlRWxlbWVudHModGhpcy5ET01lbGVtZW50cy5sYWJlbHMpO3ZhciBpPXRoaXMub3B0aW9ucy5vcmllbnRhdGlvbixvPXZvaWQgMCE9dGhpcy5vcHRpb25zW2ldLnJhbmdlP3RoaXMub3B0aW9uc1tpXS5yYW5nZTp7fSxuPSEwO3ZvaWQgMCE9by5tYXgmJih0aGlzLnJhbmdlLmVuZD1vLm1heCxuPSExKTt2YXIgcz0hMDt2b2lkIDAhPW8ubWluJiYodGhpcy5yYW5nZS5zdGFydD1vLm1pbixzPSExKSx0aGlzLnNjYWxlPW5ldyBkKHRoaXMucmFuZ2Uuc3RhcnQsdGhpcy5yYW5nZS5lbmQscyxuLHRoaXMuZG9tLmZyYW1lLm9mZnNldEhlaWdodCx0aGlzLnByb3BzLm1ham9yQ2hhckhlaWdodCx0aGlzLm9wdGlvbnMuYWxpZ25aZXJvcyx0aGlzLm9wdGlvbnNbaV0uZm9ybWF0KSwhMT09PXRoaXMubWFzdGVyJiZ2b2lkIDAhPXRoaXMubWFzdGVyQXhpcyYmdGhpcy5zY2FsZS5mb2xsb3dTY2FsZSh0aGlzLm1hc3RlckF4aXMuc2NhbGUpLHRoaXMubWF4TGFiZWxTaXplPTAsdGhpcy5zY2FsZS5nZXRMaW5lcygpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG89ZS55LG49ZS5tYWpvcjt0Lm9wdGlvbnMuc2hvd01pbm9yTGFiZWxzJiYhMT09PW4mJnQuX3JlZHJhd0xhYmVsKG8tMixlLnZhbCxpLCJ2aXMteS1heGlzIHZpcy1taW5vciIsdC5wcm9wcy5taW5vckNoYXJIZWlnaHQpLG4mJm8+PTAmJnQuX3JlZHJhd0xhYmVsKG8tMixlLnZhbCxpLCJ2aXMteS1heGlzIHZpcy1tYWpvciIsdC5wcm9wcy5tYWpvckNoYXJIZWlnaHQpLCEwPT09dC5tYXN0ZXImJihuP3QuX3JlZHJhd0xpbmUobyxpLCJ2aXMtZ3JpZCB2aXMtaG9yaXpvbnRhbCB2aXMtbWFqb3IiLHQub3B0aW9ucy5tYWpvckxpbmVzT2Zmc2V0LHQucHJvcHMubWFqb3JMaW5lV2lkdGgpOnQuX3JlZHJhd0xpbmUobyxpLCJ2aXMtZ3JpZCB2aXMtaG9yaXpvbnRhbCB2aXMtbWlub3IiLHQub3B0aW9ucy5taW5vckxpbmVzT2Zmc2V0LHQucHJvcHMubWlub3JMaW5lV2lkdGgpKX0pO3ZhciByPTA7dm9pZCAwIT09dGhpcy5vcHRpb25zW2ldLnRpdGxlJiZ2b2lkIDAhPT10aGlzLm9wdGlvbnNbaV0udGl0bGUudGV4dCYmKHI9dGhpcy5wcm9wcy50aXRsZUNoYXJIZWlnaHQpO3ZhciBoPSEwPT09dGhpcy5vcHRpb25zLmljb25zP01hdGgubWF4KHRoaXMub3B0aW9ucy5pY29uV2lkdGgscikrdGhpcy5vcHRpb25zLmxhYmVsT2Zmc2V0WCsxNTpyK3RoaXMub3B0aW9ucy5sYWJlbE9mZnNldFgrMTU7cmV0dXJuIHRoaXMubWF4TGFiZWxTaXplPnRoaXMud2lkdGgtaCYmITA9PT10aGlzLm9wdGlvbnMudmlzaWJsZT8odGhpcy53aWR0aD10aGlzLm1heExhYmVsU2l6ZStoLHRoaXMub3B0aW9ucy53aWR0aD10aGlzLndpZHRoKyJweCIsYS5jbGVhbnVwRWxlbWVudHModGhpcy5ET01lbGVtZW50cy5saW5lcyksYS5jbGVhbnVwRWxlbWVudHModGhpcy5ET01lbGVtZW50cy5sYWJlbHMpLHRoaXMucmVkcmF3KCksZT0hMCk6dGhpcy5tYXhMYWJlbFNpemU8dGhpcy53aWR0aC1oJiYhMD09PXRoaXMub3B0aW9ucy52aXNpYmxlJiZ0aGlzLndpZHRoPnRoaXMubWluV2lkdGg/KHRoaXMud2lkdGg9TWF0aC5tYXgodGhpcy5taW5XaWR0aCx0aGlzLm1heExhYmVsU2l6ZStoKSx0aGlzLm9wdGlvbnMud2lkdGg9dGhpcy53aWR0aCsicHgiLGEuY2xlYW51cEVsZW1lbnRzKHRoaXMuRE9NZWxlbWVudHMubGluZXMpLGEuY2xlYW51cEVsZW1lbnRzKHRoaXMuRE9NZWxlbWVudHMubGFiZWxzKSx0aGlzLnJlZHJhdygpLGU9ITApOihhLmNsZWFudXBFbGVtZW50cyh0aGlzLkRPTWVsZW1lbnRzLmxpbmVzKSxhLmNsZWFudXBFbGVtZW50cyh0aGlzLkRPTWVsZW1lbnRzLmxhYmVscyksZT0hMSksZX0sby5wcm90b3R5cGUuY29udmVydFZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNjYWxlLmNvbnZlcnRWYWx1ZSh0KX0sby5wcm90b3R5cGUuc2NyZWVuVG9WYWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zY2FsZS5zY3JlZW5Ub1ZhbHVlKHQpfSxvLnByb3RvdHlwZS5fcmVkcmF3TGFiZWw9ZnVuY3Rpb24odCxlLGksbyxuKXt2YXIgcz1hLmdldERPTUVsZW1lbnQoImRpdiIsdGhpcy5ET01lbGVtZW50cy5sYWJlbHMsdGhpcy5kb20uZnJhbWUpO3MuY2xhc3NOYW1lPW8scy5pbm5lckhUTUw9ZSwibGVmdCI9PT1pPyhzLnN0eWxlLmxlZnQ9Ii0iK3RoaXMub3B0aW9ucy5sYWJlbE9mZnNldFgrInB4IixzLnN0eWxlLnRleHRBbGlnbj0icmlnaHQiKToocy5zdHlsZS5yaWdodD0iLSIrdGhpcy5vcHRpb25zLmxhYmVsT2Zmc2V0WCsicHgiLHMuc3R5bGUudGV4dEFsaWduPSJsZWZ0Iikscy5zdHlsZS50b3A9dC0uNSpuK3RoaXMub3B0aW9ucy5sYWJlbE9mZnNldFkrInB4IixlKz0iIjt2YXIgcj1NYXRoLm1heCh0aGlzLnByb3BzLm1ham9yQ2hhcldpZHRoLHRoaXMucHJvcHMubWlub3JDaGFyV2lkdGgpO3RoaXMubWF4TGFiZWxTaXplPGUubGVuZ3RoKnImJih0aGlzLm1heExhYmVsU2l6ZT1lLmxlbmd0aCpyKX0sby5wcm90b3R5cGUuX3JlZHJhd0xpbmU9ZnVuY3Rpb24odCxlLGksbyxuKXtpZighMD09PXRoaXMubWFzdGVyKXt2YXIgcz1hLmdldERPTUVsZW1lbnQoImRpdiIsdGhpcy5ET01lbGVtZW50cy5saW5lcyx0aGlzLmRvbS5saW5lQ29udGFpbmVyKTtzLmNsYXNzTmFtZT1pLHMuaW5uZXJIVE1MPSIiLCJsZWZ0Ij09PWU/cy5zdHlsZS5sZWZ0PXRoaXMud2lkdGgtbysicHgiOnMuc3R5bGUucmlnaHQ9dGhpcy53aWR0aC1vKyJweCIscy5zdHlsZS53aWR0aD1uKyJweCIscy5zdHlsZS50b3A9dCsicHgifX0sby5wcm90b3R5cGUuX3JlZHJhd1RpdGxlPWZ1bmN0aW9uKHQpe2lmKGEucHJlcGFyZUVsZW1lbnRzKHRoaXMuRE9NZWxlbWVudHMudGl0bGUpLHZvaWQgMCE9PXRoaXMub3B0aW9uc1t0XS50aXRsZSYmdm9pZCAwIT09dGhpcy5vcHRpb25zW3RdLnRpdGxlLnRleHQpe3ZhciBlPWEuZ2V0RE9NRWxlbWVudCgiZGl2Iix0aGlzLkRPTWVsZW1lbnRzLnRpdGxlLHRoaXMuZG9tLmZyYW1lKTtlLmNsYXNzTmFtZT0idmlzLXktYXhpcyB2aXMtdGl0bGUgdmlzLSIrdCxlLmlubmVySFRNTD10aGlzLm9wdGlvbnNbdF0udGl0bGUudGV4dCx2b2lkIDAhPT10aGlzLm9wdGlvbnNbdF0udGl0bGUuc3R5bGUmJnIuYWRkQ3NzVGV4dChlLHRoaXMub3B0aW9uc1t0XS50aXRsZS5zdHlsZSksImxlZnQiPT09dD9lLnN0eWxlLmxlZnQ9dGhpcy5wcm9wcy50aXRsZUNoYXJIZWlnaHQrInB4IjplLnN0eWxlLnJpZ2h0PXRoaXMucHJvcHMudGl0bGVDaGFySGVpZ2h0KyJweCIsZS5zdHlsZS53aWR0aD10aGlzLmhlaWdodCsicHgifWEuY2xlYW51cEVsZW1lbnRzKHRoaXMuRE9NZWxlbWVudHMudGl0bGUpfSxvLnByb3RvdHlwZS5fY2FsY3VsYXRlQ2hhclNpemU9ZnVuY3Rpb24oKXtpZighKCJtaW5vckNoYXJIZWlnaHQiaW4gdGhpcy5wcm9wcykpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIwIiksZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLmNsYXNzTmFtZT0idmlzLXktYXhpcyB2aXMtbWlub3IgdmlzLW1lYXN1cmUiLGUuYXBwZW5kQ2hpbGQodCksdGhpcy5kb20uZnJhbWUuYXBwZW5kQ2hpbGQoZSksdGhpcy5wcm9wcy5taW5vckNoYXJIZWlnaHQ9ZS5jbGllbnRIZWlnaHQsdGhpcy5wcm9wcy5taW5vckNoYXJXaWR0aD1lLmNsaWVudFdpZHRoLHRoaXMuZG9tLmZyYW1lLnJlbW92ZUNoaWxkKGUpfWlmKCEoIm1ham9yQ2hhckhlaWdodCJpbiB0aGlzLnByb3BzKSl7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjAiKSxvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO28uY2xhc3NOYW1lPSJ2aXMteS1heGlzIHZpcy1tYWpvciB2aXMtbWVhc3VyZSIsby5hcHBlbmRDaGlsZChpKSx0aGlzLmRvbS5mcmFtZS5hcHBlbmRDaGlsZChvKSx0aGlzLnByb3BzLm1ham9yQ2hhckhlaWdodD1vLmNsaWVudEhlaWdodCx0aGlzLnByb3BzLm1ham9yQ2hhcldpZHRoPW8uY2xpZW50V2lkdGgsdGhpcy5kb20uZnJhbWUucmVtb3ZlQ2hpbGQobyl9aWYoISgidGl0bGVDaGFySGVpZ2h0ImluIHRoaXMucHJvcHMpKXt2YXIgbj1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiMCIpLHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cy5jbGFzc05hbWU9InZpcy15LWF4aXMgdmlzLXRpdGxlIHZpcy1tZWFzdXJlIixzLmFwcGVuZENoaWxkKG4pLHRoaXMuZG9tLmZyYW1lLmFwcGVuZENoaWxkKHMpLHRoaXMucHJvcHMudGl0bGVDaGFySGVpZ2h0PXMuY2xpZW50SGVpZ2h0LHRoaXMucHJvcHMudGl0bGVDaGFyV2lkdGg9cy5jbGllbnRXaWR0aCx0aGlzLmRvbS5mcmFtZS5yZW1vdmVDaGlsZChzKX19LHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkodCxlLGksbyxuLHMpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+NiYmdm9pZCAwIT09YXJndW1lbnRzWzZdJiZhcmd1bWVudHNbNl0sYT1hcmd1bWVudHMubGVuZ3RoPjcmJnZvaWQgMCE9PWFyZ3VtZW50c1s3XSYmYXJndW1lbnRzWzddO2lmKHRoaXMubWFqb3JTdGVwcz1bMSwyLDUsMTBdLHRoaXMubWlub3JTdGVwcz1bLjI1LC41LDEsMl0sdGhpcy5jdXN0b21MaW5lcz1udWxsLHRoaXMuY29udGFpbmVySGVpZ2h0PW4sdGhpcy5tYWpvckNoYXJIZWlnaHQ9cyx0aGlzLl9zdGFydD10LHRoaXMuX2VuZD1lLHRoaXMuc2NhbGU9MSx0aGlzLm1pbm9yU3RlcElkeD0tMSx0aGlzLm1hZ25pdHVkZWZhY3Rvcj0xLHRoaXMuZGV0ZXJtaW5lU2NhbGUoKSx0aGlzLnplcm9BbGlnbj1yLHRoaXMuYXV0b1NjYWxlU3RhcnQ9aSx0aGlzLmF1dG9TY2FsZUVuZD1vLHRoaXMuZm9ybWF0dGluZ0Z1bmN0aW9uPWEsaXx8byl7dmFyIGg9dGhpcyxkPWZ1bmN0aW9uKHQpe3ZhciBlPXQtdCUoaC5tYWduaXR1ZGVmYWN0b3IqaC5taW5vclN0ZXBzW2gubWlub3JTdGVwSWR4XSk7cmV0dXJuIHQlKGgubWFnbml0dWRlZmFjdG9yKmgubWlub3JTdGVwc1toLm1pbm9yU3RlcElkeF0pPmgubWFnbml0dWRlZmFjdG9yKmgubWlub3JTdGVwc1toLm1pbm9yU3RlcElkeF0qLjU/ZStoLm1hZ25pdHVkZWZhY3RvcipoLm1pbm9yU3RlcHNbaC5taW5vclN0ZXBJZHhdOmV9O2kmJih0aGlzLl9zdGFydC09Mip0aGlzLm1hZ25pdHVkZWZhY3Rvcip0aGlzLm1pbm9yU3RlcHNbdGhpcy5taW5vclN0ZXBJZHhdLHRoaXMuX3N0YXJ0PWQodGhpcy5fc3RhcnQpKSxvJiYodGhpcy5fZW5kKz10aGlzLm1hZ25pdHVkZWZhY3Rvcip0aGlzLm1pbm9yU3RlcHNbdGhpcy5taW5vclN0ZXBJZHhdLHRoaXMuX2VuZD1kKHRoaXMuX2VuZCkpLHRoaXMuZGV0ZXJtaW5lU2NhbGUoKX19aS5wcm90b3R5cGUuc2V0Q2hhckhlaWdodD1mdW5jdGlvbih0KXt0aGlzLm1ham9yQ2hhckhlaWdodD10fSxpLnByb3RvdHlwZS5zZXRIZWlnaHQ9ZnVuY3Rpb24odCl7dGhpcy5jb250YWluZXJIZWlnaHQ9dH0saS5wcm90b3R5cGUuZGV0ZXJtaW5lU2NhbGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9lbmQtdGhpcy5fc3RhcnQ7dGhpcy5zY2FsZT10aGlzLmNvbnRhaW5lckhlaWdodC90O3ZhciBlPXRoaXMubWFqb3JDaGFySGVpZ2h0L3RoaXMuc2NhbGUsaT10PjA/TWF0aC5yb3VuZChNYXRoLmxvZyh0KS9NYXRoLkxOMTApOjA7dGhpcy5taW5vclN0ZXBJZHg9LTEsdGhpcy5tYWduaXR1ZGVmYWN0b3I9TWF0aC5wb3coMTAsaSk7dmFyIG89MDtpPDAmJihvPWkpO2Zvcih2YXIgbj0hMSxzPW87TWF0aC5hYnMocyk8PU1hdGguYWJzKGkpO3MrKyl7dGhpcy5tYWduaXR1ZGVmYWN0b3I9TWF0aC5wb3coMTAscyk7Zm9yKHZhciByPTA7cjx0aGlzLm1pbm9yU3RlcHMubGVuZ3RoO3IrKyl7aWYodGhpcy5tYWduaXR1ZGVmYWN0b3IqdGhpcy5taW5vclN0ZXBzW3JdPj1lKXtuPSEwLHRoaXMubWlub3JTdGVwSWR4PXI7YnJlYWt9fWlmKCEwPT09bilicmVha319LGkucHJvdG90eXBlLmlzX21ham9yPWZ1bmN0aW9uKHQpe3JldHVybiB0JSh0aGlzLm1hZ25pdHVkZWZhY3Rvcip0aGlzLm1ham9yU3RlcHNbdGhpcy5taW5vclN0ZXBJZHhdKT09MH0saS5wcm90b3R5cGUuZ2V0U3RlcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1hZ25pdHVkZWZhY3Rvcip0aGlzLm1pbm9yU3RlcHNbdGhpcy5taW5vclN0ZXBJZHhdfSxpLnByb3RvdHlwZS5nZXRGaXJzdE1ham9yPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYWduaXR1ZGVmYWN0b3IqdGhpcy5tYWpvclN0ZXBzW3RoaXMubWlub3JTdGVwSWR4XTtyZXR1cm4gdGhpcy5jb252ZXJ0VmFsdWUodGhpcy5fc3RhcnQrKHQtdGhpcy5fc3RhcnQldCkldCl9LGkucHJvdG90eXBlLmZvcm1hdFZhbHVlPWZ1bmN0aW9uKHQpe3ZhciBlPXQudG9QcmVjaXNpb24oNSk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuZm9ybWF0dGluZ0Z1bmN0aW9uJiYoZT10aGlzLmZvcm1hdHRpbmdGdW5jdGlvbih0KSksIm51bWJlciI9PXR5cGVvZiBlPyIiK2U6InN0cmluZyI9PXR5cGVvZiBlP2U6dC50b1ByZWNpc2lvbig1KX0saS5wcm90b3R5cGUuZ2V0TGluZXM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT10aGlzLmdldFN0ZXAoKSxpPShlLXRoaXMuX3N0YXJ0JWUpJWUsbz10aGlzLl9zdGFydCtpO3RoaXMuX2VuZC1vPjFlLTU7bys9ZSlvIT10aGlzLl9zdGFydCYmdC5wdXNoKHttYWpvcjp0aGlzLmlzX21ham9yKG8pLHk6dGhpcy5jb252ZXJ0VmFsdWUobyksdmFsOnRoaXMuZm9ybWF0VmFsdWUobyl9KTtyZXR1cm4gdH0saS5wcm90b3R5cGUuZm9sbG93U2NhbGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5taW5vclN0ZXBJZHgsaT10aGlzLl9zdGFydCxvPXRoaXMuX2VuZCxuPXRoaXMscz1mdW5jdGlvbigpe24ubWFnbml0dWRlZmFjdG9yKj0yfSxyPWZ1bmN0aW9uKCl7bi5tYWduaXR1ZGVmYWN0b3IvPTJ9O3QubWlub3JTdGVwSWR4PD0xJiZ0aGlzLm1pbm9yU3RlcElkeDw9MXx8dC5taW5vclN0ZXBJZHg+MSYmdGhpcy5taW5vclN0ZXBJZHg+MXx8KHQubWlub3JTdGVwSWR4PHRoaXMubWlub3JTdGVwSWR4Pyh0aGlzLm1pbm9yU3RlcElkeD0xLDI9PWU/cygpOihzKCkscygpKSk6KHRoaXMubWlub3JTdGVwSWR4PTIsMT09ZT9yKCk6KHIoKSxyKCkpKSk7Zm9yKHZhciBhPSh0LmdldExpbmVzKCksdC5jb252ZXJ0VmFsdWUoMCkpLGg9dC5nZXRTdGVwKCkqdC5zY2FsZSxkPSExLGw9MDshZCYmbCsrPDU7KXt0aGlzLnNjYWxlPWgvKHRoaXMubWlub3JTdGVwc1t0aGlzLm1pbm9yU3RlcElkeF0qdGhpcy5tYWduaXR1ZGVmYWN0b3IpO3ZhciB1PXRoaXMuY29udGFpbmVySGVpZ2h0L3RoaXMuc2NhbGU7dGhpcy5fc3RhcnQ9aSx0aGlzLl9lbmQ9dGhpcy5fc3RhcnQrdTt2YXIgYz10aGlzLl9lbmQqdGhpcy5zY2FsZSxwPXRoaXMubWFnbml0dWRlZmFjdG9yKnRoaXMubWFqb3JTdGVwc1t0aGlzLm1pbm9yU3RlcElkeF0sZj10aGlzLmdldEZpcnN0TWFqb3IoKS10LmdldEZpcnN0TWFqb3IoKTtpZih0aGlzLnplcm9BbGlnbil7dmFyIG09YS1jO3RoaXMuX2VuZCs9bS90aGlzLnNjYWxlLHRoaXMuX3N0YXJ0PXRoaXMuX2VuZC11fWVsc2UgdGhpcy5hdXRvU2NhbGVTdGFydD8odGhpcy5fc3RhcnQtPWYvdGhpcy5zY2FsZSx0aGlzLl9lbmQ9dGhpcy5fc3RhcnQrdSk6KHRoaXMuX3N0YXJ0Kz1wLWYvdGhpcy5zY2FsZSx0aGlzLl9lbmQ9dGhpcy5fc3RhcnQrdSk7aWYoIXRoaXMuYXV0b1NjYWxlRW5kJiZ0aGlzLl9lbmQ+bysxZS01KXIoKSxkPSExO2Vsc2V7aWYoIXRoaXMuYXV0b1NjYWxlU3RhcnQmJnRoaXMuX3N0YXJ0PGktMWUtNSl7aWYoISh0aGlzLnplcm9BbGlnbiYmaT49MCkpe3IoKSxkPSExO2NvbnRpbnVlfWNvbnNvbGUud2FybigiQ2FuJ3QgYWRoZXJlIHRvIGdpdmVuICdtaW4nIHJhbmdlLCBkdWUgdG8gemVyb2FsaWduIil9dGhpcy5hdXRvU2NhbGVTdGFydCYmdGhpcy5hdXRvU2NhbGVFbmQmJnU8by1pPyhzKCksZD0hMSk6ZD0hMH19fSxpLnByb3RvdHlwZS5jb252ZXJ0VmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29udGFpbmVySGVpZ2h0LSh0LXRoaXMuX3N0YXJ0KSp0aGlzLnNjYWxlfSxpLnByb3RvdHlwZS5zY3JlZW5Ub1ZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybih0aGlzLmNvbnRhaW5lckhlaWdodC10KS90aGlzLnNjYWxlK3RoaXMuX3N0YXJ0fSx0LmV4cG9ydHM9aX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlLGksbyl7dGhpcy5pZD1lO3ZhciBuPVsic2FtcGxpbmciLCJzdHlsZSIsInNvcnQiLCJ5QXhpc09yaWVudGF0aW9uIiwiYmFyQ2hhcnQiLCJkcmF3UG9pbnRzIiwic2hhZGVkIiwiaW50ZXJwb2xhdGlvbiIsInpJbmRleCIsImV4Y2x1ZGVGcm9tU3RhY2tpbmciLCJleGNsdWRlRnJvbUxlZ2VuZCJdO3RoaXMub3B0aW9ucz1yLnNlbGVjdGl2ZUJyaWRnZU9iamVjdChuLGkpLHRoaXMudXNpbmdEZWZhdWx0U3R5bGU9dm9pZCAwPT09dC5jbGFzc05hbWUsdGhpcy5ncm91cHNVc2luZ0RlZmF1bHRTdHlsZXM9byx0aGlzLnplcm9Qb3NpdGlvbj0wLHRoaXMudXBkYXRlKHQpLDE9PXRoaXMudXNpbmdEZWZhdWx0U3R5bGUmJih0aGlzLmdyb3Vwc1VzaW5nRGVmYXVsdFN0eWxlc1swXSs9MSksdGhpcy5pdGVtc0RhdGE9W10sdGhpcy52aXNpYmxlPXZvaWQgMD09PXQudmlzaWJsZXx8dC52aXNpYmxlfXZhciBuPWkoNjIpLHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fShuKSxyPWkoMSksYT0oaSg4OCksaSgxNTQpKSxoPWkoMTU2KSxkPWkoMTU1KTtvLnByb3RvdHlwZS5zZXRJdGVtcz1mdW5jdGlvbih0KXtudWxsIT10Pyh0aGlzLml0ZW1zRGF0YT10LDE9PXRoaXMub3B0aW9ucy5zb3J0JiZyLmluc2VydFNvcnQodGhpcy5pdGVtc0RhdGEsZnVuY3Rpb24odCxlKXtyZXR1cm4gdC54PmUueD8xOi0xfSkpOnRoaXMuaXRlbXNEYXRhPVtdfSxvLnByb3RvdHlwZS5nZXRJdGVtcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZW1zRGF0YX0sby5wcm90b3R5cGUuc2V0WmVyb1Bvc2l0aW9uPWZ1bmN0aW9uKHQpe3RoaXMuemVyb1Bvc2l0aW9uPXR9LG8ucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7aWYodm9pZCAwIT09dCl7dmFyIGU9WyJzYW1wbGluZyIsInN0eWxlIiwic29ydCIsInlBeGlzT3JpZW50YXRpb24iLCJiYXJDaGFydCIsInpJbmRleCIsImV4Y2x1ZGVGcm9tU3RhY2tpbmciLCJleGNsdWRlRnJvbUxlZ2VuZCJdO3Iuc2VsZWN0aXZlRGVlcEV4dGVuZChlLHRoaXMub3B0aW9ucyx0KSwiZnVuY3Rpb24iPT10eXBlb2YgdC5kcmF3UG9pbnRzJiYodC5kcmF3UG9pbnRzPXtvblJlbmRlcjp0LmRyYXdQb2ludHN9KSxyLm1lcmdlT3B0aW9ucyh0aGlzLm9wdGlvbnMsdCwiaW50ZXJwb2xhdGlvbiIpLHIubWVyZ2VPcHRpb25zKHRoaXMub3B0aW9ucyx0LCJkcmF3UG9pbnRzIiksci5tZXJnZU9wdGlvbnModGhpcy5vcHRpb25zLHQsInNoYWRlZCIpLHQuaW50ZXJwb2xhdGlvbiYmIm9iamVjdCI9PSgwLHMuZGVmYXVsdCkodC5pbnRlcnBvbGF0aW9uKSYmdC5pbnRlcnBvbGF0aW9uLnBhcmFtZXRyaXphdGlvbiYmKCJ1bmlmb3JtIj09dC5pbnRlcnBvbGF0aW9uLnBhcmFtZXRyaXphdGlvbj90aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5hbHBoYT0wOiJjaG9yZGFsIj09dC5pbnRlcnBvbGF0aW9uLnBhcmFtZXRyaXphdGlvbj90aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5hbHBoYT0xOih0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5wYXJhbWV0cml6YXRpb249ImNlbnRyaXBldGFsIix0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5hbHBoYT0uNSkpfX0sby5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe3RoaXMuZ3JvdXA9dCx0aGlzLmNvbnRlbnQ9dC5jb250ZW50fHwiZ3JhcGgiLHRoaXMuY2xhc3NOYW1lPXQuY2xhc3NOYW1lfHx0aGlzLmNsYXNzTmFtZXx8InZpcy1ncmFwaC1ncm91cCIrdGhpcy5ncm91cHNVc2luZ0RlZmF1bHRTdHlsZXNbMF0lMTAsdGhpcy52aXNpYmxlPXZvaWQgMD09PXQudmlzaWJsZXx8dC52aXNpYmxlLHRoaXMuc3R5bGU9dC5zdHlsZSx0aGlzLnNldE9wdGlvbnModC5vcHRpb25zKX0sby5wcm90b3R5cGUuZ2V0TGVnZW5kPWZ1bmN0aW9uKHQsZSxpLG8sbil7aWYodm9pZCAwPT1pfHxudWxsPT1pKXtpPXtzdmc6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2ZyIpLHN2Z0VsZW1lbnRzOnt9LG9wdGlvbnM6dGhpcy5vcHRpb25zLGdyb3VwczpbdGhpc119fXN3aXRjaCh2b2lkIDAhPW8mJm51bGwhPW98fChvPTApLHZvaWQgMCE9biYmbnVsbCE9bnx8KG49LjUqZSksdGhpcy5vcHRpb25zLnN0eWxlKXtjYXNlImxpbmUiOmguZHJhd0ljb24odGhpcyxvLG4sdCxlLGkpO2JyZWFrO2Nhc2UicG9pbnRzIjpjYXNlInBvaW50IjpkLmRyYXdJY29uKHRoaXMsbyxuLHQsZSxpKTticmVhaztjYXNlImJhciI6YS5kcmF3SWNvbih0aGlzLG8sbix0LGUsaSl9cmV0dXJue2ljb246aS5zdmcsbGFiZWw6dGhpcy5jb250ZW50LG9yaWVudGF0aW9uOnRoaXMub3B0aW9ucy55QXhpc09yaWVudGF0aW9ufX0sby5wcm90b3R5cGUuZ2V0WVJhbmdlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10WzBdLnksaT10WzBdLnksbz0wO288dC5sZW5ndGg7bysrKWU9ZT50W29dLnk/dFtvXS55OmUsaT1pPHRbb10ueT90W29dLnk6aTtyZXR1cm57bWluOmUsbWF4OmkseUF4aXNPcmllbnRhdGlvbjp0aGlzLm9wdGlvbnMueUF4aXNPcmllbnRhdGlvbn19LHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUpe312YXIgbj1pKDg4KSxzPWkoMTU1KTtvLmRyYXdJY29uPWZ1bmN0aW9uKHQsZSxpLG8scyxyKXt2YXIgYT0uNSpzLGg9bi5nZXRTVkdFbGVtZW50KCJyZWN0IixyLnN2Z0VsZW1lbnRzLHIuc3ZnKTtoLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGUpLGguc2V0QXR0cmlidXRlTlMobnVsbCwieSIsaS1hKSxoLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIixvKSxoLnNldEF0dHJpYnV0ZU5TKG51bGwsImhlaWdodCIsMiphKSxoLnNldEF0dHJpYnV0ZU5TKG51bGwsImNsYXNzIiwidmlzLW91dGxpbmUiKTt2YXIgZD1NYXRoLnJvdW5kKC4zKm8pLGw9dC5vcHRpb25zLmJhckNoYXJ0LndpZHRoLHU9bC9kLGM9TWF0aC5yb3VuZCguNCpzKSxwPU1hdGgucm91bmQoLjc1KnMpLGY9TWF0aC5yb3VuZCgoby0yKmQpLzMpO2lmKG4uZHJhd0JhcihlKy41KmQrZixpK2EtYy0xLGQsYyx0LmNsYXNzTmFtZSsiIHZpcy1iYXIiLHIuc3ZnRWxlbWVudHMsci5zdmcsdC5zdHlsZSksbi5kcmF3QmFyKGUrMS41KmQrZisyLGkrYS1wLTEsZCxwLHQuY2xhc3NOYW1lKyIgdmlzLWJhciIsci5zdmdFbGVtZW50cyxyLnN2Zyx0LnN0eWxlKSwxPT10Lm9wdGlvbnMuZHJhd1BvaW50cy5lbmFibGVkKXt2YXIgbT17c3R5bGU6dC5vcHRpb25zLmRyYXdQb2ludHMuc3R5bGUsc3R5bGVzOnQub3B0aW9ucy5kcmF3UG9pbnRzLnN0eWxlcyxzaXplOnQub3B0aW9ucy5kcmF3UG9pbnRzLnNpemUvdSxjbGFzc05hbWU6dC5jbGFzc05hbWV9O24uZHJhd1BvaW50KGUrLjUqZCtmLGkrYS1jLTEsbSxyLnN2Z0VsZW1lbnRzLHIuc3ZnKSxuLmRyYXdQb2ludChlKzEuNSpkK2YrMixpK2EtcC0xLG0sci5zdmdFbGVtZW50cyxyLnN2Zyl9fSxvLmRyYXc9ZnVuY3Rpb24odCxlLGkpe3ZhciByLGEsaCxkLGwsdSxjPVtdLHA9e30sZj0wO2ZvcihsPTA7bDx0Lmxlbmd0aDtsKyspaWYoZD1pLmdyb3Vwc1t0W2xdXSwiYmFyIj09PWQub3B0aW9ucy5zdHlsZSYmITA9PT1kLnZpc2libGUmJih2b2lkIDA9PT1pLm9wdGlvbnMuZ3JvdXBzLnZpc2liaWxpdHlbdFtsXV18fCEwPT09aS5vcHRpb25zLmdyb3Vwcy52aXNpYmlsaXR5W3RbbF1dKSlmb3IodT0wO3U8ZVt0W2xdXS5sZW5ndGg7dSsrKWMucHVzaCh7c2NyZWVuX3g6ZVt0W2xdXVt1XS5zY3JlZW5feCxzY3JlZW5fZW5kOmVbdFtsXV1bdV0uc2NyZWVuX2VuZCxzY3JlZW5feTplW3RbbF1dW3VdLnNjcmVlbl95LHg6ZVt0W2xdXVt1XS54LGVuZDplW3RbbF1dW3VdLmVuZCx5OmVbdFtsXV1bdV0ueSxncm91cElkOnRbbF0sbGFiZWw6ZVt0W2xdXVt1XS5sYWJlbH0pLGYrPTE7aWYoMCE9PWYpZm9yKGMuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LnNjcmVlbl94PT09ZS5zY3JlZW5feD90Lmdyb3VwSWQ8ZS5ncm91cElkPy0xOjE6dC5zY3JlZW5feC1lLnNjcmVlbl94fSksby5fZ2V0RGF0YUludGVyc2VjdGlvbnMocCxjKSxsPTA7bDxjLmxlbmd0aDtsKyspe2Q9aS5ncm91cHNbY1tsXS5ncm91cElkXTt2YXIgbT12b2lkIDAhPWQub3B0aW9ucy5iYXJDaGFydC5taW5XaWR0aD9kLm9wdGlvbnMuYmFyQ2hhcnQubWluV2lkdGg6LjEqZC5vcHRpb25zLmJhckNoYXJ0LndpZHRoO2E9Y1tsXS5zY3JlZW5feDt2YXIgdj0wO2lmKHZvaWQgMD09PXBbYV0pbCsxPGMubGVuZ3RoJiYocj1NYXRoLmFicyhjW2wrMV0uc2NyZWVuX3gtYSkpLGg9by5fZ2V0U2FmZURyYXdEYXRhKHIsZCxtKTtlbHNle3ZhciBnPWwrKHBbYV0uYW1vdW50LXBbYV0ucmVzb2x2ZWQpO3BbYV0ucmVzb2x2ZWQ7ZzxjLmxlbmd0aCYmKHI9TWF0aC5hYnMoY1tnXS5zY3JlZW5feC1hKSksaD1vLl9nZXRTYWZlRHJhd0RhdGEocixkLG0pLHBbYV0ucmVzb2x2ZWQrPTEsITA9PT1kLm9wdGlvbnMuc3RhY2smJiEwIT09ZC5vcHRpb25zLmV4Y2x1ZGVGcm9tU3RhY2tpbmc/Y1tsXS5zY3JlZW5feTxkLnplcm9Qb3NpdGlvbj8odj1wW2FdLmFjY3VtdWxhdGVkTmVnYXRpdmUscFthXS5hY2N1bXVsYXRlZE5lZ2F0aXZlKz1kLnplcm9Qb3NpdGlvbi1jW2xdLnNjcmVlbl95KToodj1wW2FdLmFjY3VtdWxhdGVkUG9zaXRpdmUscFthXS5hY2N1bXVsYXRlZFBvc2l0aXZlKz1kLnplcm9Qb3NpdGlvbi1jW2xdLnNjcmVlbl95KTohMD09PWQub3B0aW9ucy5iYXJDaGFydC5zaWRlQnlTaWRlJiYoaC53aWR0aD1oLndpZHRoL3BbYV0uYW1vdW50LGgub2Zmc2V0Kz1wW2FdLnJlc29sdmVkKmgud2lkdGgtLjUqaC53aWR0aCoocFthXS5hbW91bnQrMSkpfXZhciB5PWgud2lkdGgsYj1jW2xdLnNjcmVlbl94O2lmKHZvaWQgMCE9Y1tsXS5zY3JlZW5fZW5kPyh5PWNbbF0uc2NyZWVuX2VuZC1jW2xdLnNjcmVlbl94LGIrPS41KnkpOmIrPWgub2Zmc2V0LG4uZHJhd0JhcihiLGNbbF0uc2NyZWVuX3ktdix5LGQuemVyb1Bvc2l0aW9uLWNbbF0uc2NyZWVuX3ksZC5jbGFzc05hbWUrIiB2aXMtYmFyIixpLnN2Z0VsZW1lbnRzLGkuc3ZnLGQuc3R5bGUpLCEwPT09ZC5vcHRpb25zLmRyYXdQb2ludHMuZW5hYmxlZCl7dmFyIF89e3NjcmVlbl94OmNbbF0uc2NyZWVuX3gsc2NyZWVuX3k6Y1tsXS5zY3JlZW5feS12LHg6Y1tsXS54LHk6Y1tsXS55LGdyb3VwSWQ6Y1tsXS5ncm91cElkLGxhYmVsOmNbbF0ubGFiZWx9O3MuZHJhdyhbX10sZCxpLGgub2Zmc2V0KX19fSxvLl9nZXREYXRhSW50ZXJzZWN0aW9ucz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaSxvPTA7bzxlLmxlbmd0aDtvKyspbysxPGUubGVuZ3RoJiYoaT1NYXRoLmFicyhlW28rMV0uc2NyZWVuX3gtZVtvXS5zY3JlZW5feCkpLG8+MCYmKGk9TWF0aC5taW4oaSxNYXRoLmFicyhlW28tMV0uc2NyZWVuX3gtZVtvXS5zY3JlZW5feCkpKSwwPT09aSYmKHZvaWQgMD09PXRbZVtvXS5zY3JlZW5feF0mJih0W2Vbb10uc2NyZWVuX3hdPXthbW91bnQ6MCxyZXNvbHZlZDowLGFjY3VtdWxhdGVkUG9zaXRpdmU6MCxhY2N1bXVsYXRlZE5lZ2F0aXZlOjB9KSx0W2Vbb10uc2NyZWVuX3hdLmFtb3VudCs9MSl9LG8uX2dldFNhZmVEcmF3RGF0YT1mdW5jdGlvbih0LGUsaSl7dmFyIG8sbjtyZXR1cm4gdDxlLm9wdGlvbnMuYmFyQ2hhcnQud2lkdGgmJnQ+MD8obz10PGk/aTp0LG49MCwibGVmdCI9PT1lLm9wdGlvbnMuYmFyQ2hhcnQuYWxpZ24/bi09LjUqdDoicmlnaHQiPT09ZS5vcHRpb25zLmJhckNoYXJ0LmFsaWduJiYobis9LjUqdCkpOihvPWUub3B0aW9ucy5iYXJDaGFydC53aWR0aCxuPTAsImxlZnQiPT09ZS5vcHRpb25zLmJhckNoYXJ0LmFsaWduP24tPS41KmUub3B0aW9ucy5iYXJDaGFydC53aWR0aDoicmlnaHQiPT09ZS5vcHRpb25zLmJhckNoYXJ0LmFsaWduJiYobis9LjUqZS5vcHRpb25zLmJhckNoYXJ0LndpZHRoKSkse3dpZHRoOm8sb2Zmc2V0Om59fSxvLmdldFN0YWNrZWRZUmFuZ2U9ZnVuY3Rpb24odCxlLGksbixzKXtpZih0Lmxlbmd0aD4wKXt0LnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zY3JlZW5feD09PWUuc2NyZWVuX3g/dC5ncm91cElkPGUuZ3JvdXBJZD8tMToxOnQuc2NyZWVuX3gtZS5zY3JlZW5feH0pO3ZhciByPXt9O28uX2dldERhdGFJbnRlcnNlY3Rpb25zKHIsdCksZVtuXT1vLl9nZXRTdGFja2VkWVJhbmdlKHIsdCksZVtuXS55QXhpc09yaWVudGF0aW9uPXMsaS5wdXNoKG4pfX0sby5fZ2V0U3RhY2tlZFlSYW5nZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaSxvPWVbMF0uc2NyZWVuX3ksbj1lWzBdLnNjcmVlbl95LHM9MDtzPGUubGVuZ3RoO3MrKylpPWVbc10uc2NyZWVuX3gsdm9pZCAwPT09dFtpXT8obz1vPmVbc10uc2NyZWVuX3k/ZVtzXS5zY3JlZW5feTpvLG49bjxlW3NdLnNjcmVlbl95P2Vbc10uc2NyZWVuX3k6bik6ZVtzXS5zY3JlZW5feTwwP3RbaV0uYWNjdW11bGF0ZWROZWdhdGl2ZSs9ZVtzXS5zY3JlZW5feTp0W2ldLmFjY3VtdWxhdGVkUG9zaXRpdmUrPWVbc10uc2NyZWVuX3kNCjtmb3IodmFyIHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiYobz1vPnRbcl0uYWNjdW11bGF0ZWROZWdhdGl2ZT90W3JdLmFjY3VtdWxhdGVkTmVnYXRpdmU6byxvPW8+dFtyXS5hY2N1bXVsYXRlZFBvc2l0aXZlP3Rbcl0uYWNjdW11bGF0ZWRQb3NpdGl2ZTpvLG49bjx0W3JdLmFjY3VtdWxhdGVkTmVnYXRpdmU/dFtyXS5hY2N1bXVsYXRlZE5lZ2F0aXZlOm4sbj1uPHRbcl0uYWNjdW11bGF0ZWRQb3NpdGl2ZT90W3JdLmFjY3VtdWxhdGVkUG9zaXRpdmU6bik7cmV0dXJue21pbjpvLG1heDpufX0sdC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQsZSl7fWZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gZT12b2lkIDA9PT1lP3t9OmUse3N0eWxlOmUuc3R5bGV8fHQub3B0aW9ucy5kcmF3UG9pbnRzLnN0eWxlLHN0eWxlczplLnN0eWxlc3x8dC5vcHRpb25zLmRyYXdQb2ludHMuc3R5bGVzLHNpemU6ZS5zaXplfHx0Lm9wdGlvbnMuZHJhd1BvaW50cy5zaXplLGNsYXNzTmFtZTplLmNsYXNzTmFtZXx8dC5jbGFzc05hbWV9fWZ1bmN0aW9uIHModCxlKXt2YXIgaT12b2lkIDA7cmV0dXJuIHQub3B0aW9ucyYmdC5vcHRpb25zLmRyYXdQb2ludHMmJnQub3B0aW9ucy5kcmF3UG9pbnRzLm9uUmVuZGVyJiYiZnVuY3Rpb24iPT10eXBlb2YgdC5vcHRpb25zLmRyYXdQb2ludHMub25SZW5kZXImJihpPXQub3B0aW9ucy5kcmF3UG9pbnRzLm9uUmVuZGVyKSxlLmdyb3VwLm9wdGlvbnMmJmUuZ3JvdXAub3B0aW9ucy5kcmF3UG9pbnRzJiZlLmdyb3VwLm9wdGlvbnMuZHJhd1BvaW50cy5vblJlbmRlciYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ3JvdXAub3B0aW9ucy5kcmF3UG9pbnRzLm9uUmVuZGVyJiYoaT1lLmdyb3VwLm9wdGlvbnMuZHJhd1BvaW50cy5vblJlbmRlciksaX12YXIgcj1pKDYyKSxhPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX0ociksaD1pKDg4KTtvLmRyYXc9ZnVuY3Rpb24odCxlLGksbyl7bz1vfHwwO2Zvcih2YXIgcj1zKGksZSksZD0wO2Q8dC5sZW5ndGg7ZCsrKWlmKHIpe3ZhciBsPXIodFtkXSxlKTshMCE9PWwmJiJvYmplY3QiIT09KHZvaWQgMD09PWw/InVuZGVmaW5lZCI6KDAsYS5kZWZhdWx0KShsKSl8fGguZHJhd1BvaW50KHRbZF0uc2NyZWVuX3grbyx0W2RdLnNjcmVlbl95LG4oZSxsKSxpLnN2Z0VsZW1lbnRzLGkuc3ZnLHRbZF0ubGFiZWwpfWVsc2UgaC5kcmF3UG9pbnQodFtkXS5zY3JlZW5feCtvLHRbZF0uc2NyZWVuX3ksbihlKSxpLnN2Z0VsZW1lbnRzLGkuc3ZnLHRbZF0ubGFiZWwpfSxvLmRyYXdJY29uPWZ1bmN0aW9uKHQsZSxpLG8scyxyKXt2YXIgYT0uNSpzLGQ9aC5nZXRTVkdFbGVtZW50KCJyZWN0IixyLnN2Z0VsZW1lbnRzLHIuc3ZnKTtkLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGUpLGQuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsaS1hKSxkLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIixvKSxkLnNldEF0dHJpYnV0ZU5TKG51bGwsImhlaWdodCIsMiphKSxkLnNldEF0dHJpYnV0ZU5TKG51bGwsImNsYXNzIiwidmlzLW91dGxpbmUiKSxoLmRyYXdQb2ludChlKy41Km8saSxuKHQpLHIuc3ZnRWxlbWVudHMsci5zdmcpfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlKXt9dmFyIG49aSg4OCk7by5jYWxjUGF0aD1mdW5jdGlvbih0LGUpe2lmKG51bGwhPXQmJnQubGVuZ3RoPjApe3JldHVybiAxPT1lLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5lbmFibGVkP28uX2NhdG11bGxSb20odCxlKTpvLl9saW5lYXIodCl9fSxvLmRyYXdJY29uPWZ1bmN0aW9uKHQsZSxpLG8scyxyKXt2YXIgYSxoLGQ9LjUqcyxsPW4uZ2V0U1ZHRWxlbWVudCgicmVjdCIsci5zdmdFbGVtZW50cyxyLnN2Zyk7aWYobC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IixlKSxsLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGktZCksbC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIsbyksbC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLDIqZCksbC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJjbGFzcyIsInZpcy1vdXRsaW5lIiksYT1uLmdldFNWR0VsZW1lbnQoInBhdGgiLHIuc3ZnRWxlbWVudHMsci5zdmcpLGEuc2V0QXR0cmlidXRlTlMobnVsbCwiY2xhc3MiLHQuY2xhc3NOYW1lKSx2b2lkIDAhPT10LnN0eWxlJiZhLnNldEF0dHJpYnV0ZU5TKG51bGwsInN0eWxlIix0LnN0eWxlKSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsImQiLCJNIitlKyIsIitpKyIgTCIrKGUrbykrIiwiK2kpLDE9PXQub3B0aW9ucy5zaGFkZWQuZW5hYmxlZCYmKGg9bi5nZXRTVkdFbGVtZW50KCJwYXRoIixyLnN2Z0VsZW1lbnRzLHIuc3ZnKSwidG9wIj09dC5vcHRpb25zLnNoYWRlZC5vcmllbnRhdGlvbj9oLnNldEF0dHJpYnV0ZU5TKG51bGwsImQiLCJNIitlKyIsICIrKGktZCkrIkwiK2UrIiwiK2krIiBMIisoZStvKSsiLCIraSsiIEwiKyhlK28pKyIsIisoaS1kKSk6aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkIiwiTSIrZSsiLCIraSsiIEwiK2UrIiwiKyhpK2QpKyIgTCIrKGUrbykrIiwiKyhpK2QpKyJMIisoZStvKSsiLCIraSksaC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJjbGFzcyIsdC5jbGFzc05hbWUrIiB2aXMtaWNvbi1maWxsIiksdm9pZCAwIT09dC5vcHRpb25zLnNoYWRlZC5zdHlsZSYmIiIhPT10Lm9wdGlvbnMuc2hhZGVkLnN0eWxlJiZoLnNldEF0dHJpYnV0ZU5TKG51bGwsInN0eWxlIix0Lm9wdGlvbnMuc2hhZGVkLnN0eWxlKSksMT09dC5vcHRpb25zLmRyYXdQb2ludHMuZW5hYmxlZCl7dmFyIHU9e3N0eWxlOnQub3B0aW9ucy5kcmF3UG9pbnRzLnN0eWxlLHN0eWxlczp0Lm9wdGlvbnMuZHJhd1BvaW50cy5zdHlsZXMsc2l6ZTp0Lm9wdGlvbnMuZHJhd1BvaW50cy5zaXplLGNsYXNzTmFtZTp0LmNsYXNzTmFtZX07bi5kcmF3UG9pbnQoZSsuNSpvLGksdSxyLnN2Z0VsZW1lbnRzLHIuc3ZnKX19LG8uZHJhd1NoYWRpbmc9ZnVuY3Rpb24odCxlLGksbyl7aWYoMT09ZS5vcHRpb25zLnNoYWRlZC5lbmFibGVkKXt2YXIgcz1OdW1iZXIoby5zdmcuc3R5bGUuaGVpZ2h0LnJlcGxhY2UoInB4IiwiIikpLHI9bi5nZXRTVkdFbGVtZW50KCJwYXRoIixvLnN2Z0VsZW1lbnRzLG8uc3ZnKSxhPSJMIjsxPT1lLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5lbmFibGVkJiYoYT0iQyIpO3ZhciBoLGQ9MDtkPSJ0b3AiPT1lLm9wdGlvbnMuc2hhZGVkLm9yaWVudGF0aW9uPzA6ImJvdHRvbSI9PWUub3B0aW9ucy5zaGFkZWQub3JpZW50YXRpb24/czpNYXRoLm1pbihNYXRoLm1heCgwLGUuemVyb1Bvc2l0aW9uKSxzKSxoPSJncm91cCI9PWUub3B0aW9ucy5zaGFkZWQub3JpZW50YXRpb24mJm51bGwhPWkmJnZvaWQgMCE9aT8iTSIrdFswXVswXSsiLCIrdFswXVsxXSsiICIrdGhpcy5zZXJpYWxpemVQYXRoKHQsYSwhMSkrIiBMIitpW2kubGVuZ3RoLTFdWzBdKyIsIitpW2kubGVuZ3RoLTFdWzFdKyIgIit0aGlzLnNlcmlhbGl6ZVBhdGgoaSxhLCEwKStpWzBdWzBdKyIsIitpWzBdWzFdKyIgWiI6Ik0iK3RbMF1bMF0rIiwiK3RbMF1bMV0rIiAiK3RoaXMuc2VyaWFsaXplUGF0aCh0LGEsITEpKyIgViIrZCsiIEgiK3RbMF1bMF0rIiBaIixyLnNldEF0dHJpYnV0ZU5TKG51bGwsImNsYXNzIixlLmNsYXNzTmFtZSsiIHZpcy1maWxsIiksdm9pZCAwIT09ZS5vcHRpb25zLnNoYWRlZC5zdHlsZSYmci5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHlsZSIsZS5vcHRpb25zLnNoYWRlZC5zdHlsZSksci5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkIixoKX19LG8uZHJhdz1mdW5jdGlvbih0LGUsaSl7aWYobnVsbCE9dCYmdm9pZCAwIT10KXt2YXIgbz1uLmdldFNWR0VsZW1lbnQoInBhdGgiLGkuc3ZnRWxlbWVudHMsaS5zdmcpO28uc2V0QXR0cmlidXRlTlMobnVsbCwiY2xhc3MiLGUuY2xhc3NOYW1lKSx2b2lkIDAhPT1lLnN0eWxlJiZvLnNldEF0dHJpYnV0ZU5TKG51bGwsInN0eWxlIixlLnN0eWxlKTt2YXIgcz0iTCI7MT09ZS5vcHRpb25zLmludGVycG9sYXRpb24uZW5hYmxlZCYmKHM9IkMiKSxvLnNldEF0dHJpYnV0ZU5TKG51bGwsImQiLCJNIit0WzBdWzBdKyIsIit0WzBdWzFdKyIgIit0aGlzLnNlcmlhbGl6ZVBhdGgodCxzLCExKSl9fSxvLnNlcmlhbGl6ZVBhdGg9ZnVuY3Rpb24odCxlLGkpe2lmKHQubGVuZ3RoPDIpcmV0dXJuIiI7dmFyIG89ZTtpZihpKWZvcih2YXIgbj10Lmxlbmd0aC0yO24+MDtuLS0pbys9dFtuXVswXSsiLCIrdFtuXVsxXSsiICI7ZWxzZSBmb3IodmFyIG49MTtuPHQubGVuZ3RoO24rKylvKz10W25dWzBdKyIsIit0W25dWzFdKyIgIjtyZXR1cm4gb30sby5fY2F0bXVsbFJvbVVuaWZvcm09ZnVuY3Rpb24odCl7dmFyIGUsaSxvLG4scyxyLGE9W107YS5wdXNoKFtNYXRoLnJvdW5kKHRbMF0uc2NyZWVuX3gpLE1hdGgucm91bmQodFswXS5zY3JlZW5feSldKTtmb3IodmFyIGg9dC5sZW5ndGgsZD0wO2Q8aC0xO2QrKyllPTA9PWQ/dFswXTp0W2QtMV0saT10W2RdLG89dFtkKzFdLG49ZCsyPGg/dFtkKzJdOm8scz17c2NyZWVuX3g6KC1lLnNjcmVlbl94KzYqaS5zY3JlZW5feCtvLnNjcmVlbl94KSooMS82KSxzY3JlZW5feTooLWUuc2NyZWVuX3krNippLnNjcmVlbl95K28uc2NyZWVuX3kpKigxLzYpfSxyPXtzY3JlZW5feDooaS5zY3JlZW5feCs2Km8uc2NyZWVuX3gtbi5zY3JlZW5feCkqKDEvNiksc2NyZWVuX3k6KGkuc2NyZWVuX3krNipvLnNjcmVlbl95LW4uc2NyZWVuX3kpKigxLzYpfSxhLnB1c2goW3Muc2NyZWVuX3gscy5zY3JlZW5feV0pLGEucHVzaChbci5zY3JlZW5feCxyLnNjcmVlbl95XSksYS5wdXNoKFtvLnNjcmVlbl94LG8uc2NyZWVuX3ldKTtyZXR1cm4gYX0sby5fY2F0bXVsbFJvbT1mdW5jdGlvbih0LGUpe3ZhciBpPWUub3B0aW9ucy5pbnRlcnBvbGF0aW9uLmFscGhhO2lmKDA9PWl8fHZvaWQgMD09PWkpcmV0dXJuIHRoaXMuX2NhdG11bGxSb21Vbmlmb3JtKHQpO3ZhciBvLG4scyxyLGEsaCxkLGwsdSxjLHAsZixtLHYsZyx5LGIsXyx3LHg9W107eC5wdXNoKFtNYXRoLnJvdW5kKHRbMF0uc2NyZWVuX3gpLE1hdGgucm91bmQodFswXS5zY3JlZW5feSldKTtmb3IodmFyIGs9dC5sZW5ndGgsRD0wO0Q8ay0xO0QrKylvPTA9PUQ/dFswXTp0W0QtMV0sbj10W0RdLHM9dFtEKzFdLHI9RCsyPGs/dFtEKzJdOnMsZD1NYXRoLnNxcnQoTWF0aC5wb3coby5zY3JlZW5feC1uLnNjcmVlbl94LDIpK01hdGgucG93KG8uc2NyZWVuX3ktbi5zY3JlZW5feSwyKSksbD1NYXRoLnNxcnQoTWF0aC5wb3cobi5zY3JlZW5feC1zLnNjcmVlbl94LDIpK01hdGgucG93KG4uc2NyZWVuX3ktcy5zY3JlZW5feSwyKSksdT1NYXRoLnNxcnQoTWF0aC5wb3cocy5zY3JlZW5feC1yLnNjcmVlbl94LDIpK01hdGgucG93KHMuc2NyZWVuX3ktci5zY3JlZW5feSwyKSksdj1NYXRoLnBvdyh1LGkpLHk9TWF0aC5wb3codSwyKmkpLGc9TWF0aC5wb3cobCxpKSxiPU1hdGgucG93KGwsMippKSx3PU1hdGgucG93KGQsaSksXz1NYXRoLnBvdyhkLDIqaSksYz0yKl8rMyp3KmcrYixwPTIqeSszKnYqZytiLGY9Myp3Kih3K2cpLGY+MCYmKGY9MS9mKSxtPTMqdiooditnKSxtPjAmJihtPTEvbSksYT17c2NyZWVuX3g6KC1iKm8uc2NyZWVuX3grYypuLnNjcmVlbl94K18qcy5zY3JlZW5feCkqZixzY3JlZW5feTooLWIqby5zY3JlZW5feStjKm4uc2NyZWVuX3krXypzLnNjcmVlbl95KSpmfSxoPXtzY3JlZW5feDooeSpuLnNjcmVlbl94K3Aqcy5zY3JlZW5feC1iKnIuc2NyZWVuX3gpKm0sc2NyZWVuX3k6KHkqbi5zY3JlZW5feStwKnMuc2NyZWVuX3ktYipyLnNjcmVlbl95KSptfSwwPT1hLnNjcmVlbl94JiYwPT1hLnNjcmVlbl95JiYoYT1uKSwwPT1oLnNjcmVlbl94JiYwPT1oLnNjcmVlbl95JiYoaD1zKSx4LnB1c2goW2Euc2NyZWVuX3gsYS5zY3JlZW5feV0pLHgucHVzaChbaC5zY3JlZW5feCxoLnNjcmVlbl95XSkseC5wdXNoKFtzLnNjcmVlbl94LHMuc2NyZWVuX3ldKTtyZXR1cm4geH0sby5fbGluZWFyPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxpPTA7aTx0Lmxlbmd0aDtpKyspZS5wdXNoKFt0W2ldLnNjcmVlbl94LHRbaV0uc2NyZWVuX3ldKTtyZXR1cm4gZX0sdC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQsZSxpLG8pe3RoaXMuYm9keT10LHRoaXMuZGVmYXVsdE9wdGlvbnM9e2VuYWJsZWQ6ITEsaWNvbnM6ITAsaWNvblNpemU6MjAsaWNvblNwYWNpbmc6NixsZWZ0Ont2aXNpYmxlOiEwLHBvc2l0aW9uOiJ0b3AtbGVmdCJ9LHJpZ2h0Ont2aXNpYmxlOiEwLHBvc2l0aW9uOiJ0b3AtcmlnaHQifX0sdGhpcy5zaWRlPWksdGhpcy5vcHRpb25zPXIuZXh0ZW5kKHt9LHRoaXMuZGVmYXVsdE9wdGlvbnMpLHRoaXMubGluZWdyYXBoT3B0aW9ucz1vLHRoaXMuc3ZnRWxlbWVudHM9e30sdGhpcy5kb209e30sdGhpcy5ncm91cHM9e30sdGhpcy5hbW91bnRPZkdyb3Vwcz0wLHRoaXMuX2NyZWF0ZSgpLHRoaXMuZnJhbWV3b3JrPXtzdmc6dGhpcy5zdmcsc3ZnRWxlbWVudHM6dGhpcy5zdmdFbGVtZW50cyxvcHRpb25zOnRoaXMub3B0aW9ucyxncm91cHM6dGhpcy5ncm91cHN9LHRoaXMuc2V0T3B0aW9ucyhlKX12YXIgbj1pKDU4KSxzPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX0obikscj1pKDEpLGE9aSg4OCksaD1pKDEyMSk7by5wcm90b3R5cGU9bmV3IGgsby5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmdyb3Vwcz17fSx0aGlzLmFtb3VudE9mR3JvdXBzPTB9LG8ucHJvdG90eXBlLmFkZEdyb3VwPWZ1bmN0aW9uKHQsZSl7MSE9ZS5vcHRpb25zLmV4Y2x1ZGVGcm9tTGVnZW5kJiYodGhpcy5ncm91cHMuaGFzT3duUHJvcGVydHkodCl8fCh0aGlzLmdyb3Vwc1t0XT1lKSx0aGlzLmFtb3VudE9mR3JvdXBzKz0xKX0sby5wcm90b3R5cGUudXBkYXRlR3JvdXA9ZnVuY3Rpb24odCxlKXt0aGlzLmdyb3Vwc1t0XT1lfSxvLnByb3RvdHlwZS5yZW1vdmVHcm91cD1mdW5jdGlvbih0KXt0aGlzLmdyb3Vwcy5oYXNPd25Qcm9wZXJ0eSh0KSYmKGRlbGV0ZSB0aGlzLmdyb3Vwc1t0XSx0aGlzLmFtb3VudE9mR3JvdXBzLT0xKX0sby5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbigpe3RoaXMuZG9tLmZyYW1lPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLmZyYW1lLmNsYXNzTmFtZT0idmlzLWxlZ2VuZCIsdGhpcy5kb20uZnJhbWUuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0aGlzLmRvbS5mcmFtZS5zdHlsZS50b3A9IjEwcHgiLHRoaXMuZG9tLmZyYW1lLnN0eWxlLmRpc3BsYXk9ImJsb2NrIix0aGlzLmRvbS50ZXh0QXJlYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS50ZXh0QXJlYS5jbGFzc05hbWU9InZpcy1sZWdlbmQtdGV4dCIsdGhpcy5kb20udGV4dEFyZWEuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIix0aGlzLmRvbS50ZXh0QXJlYS5zdHlsZS50b3A9IjBweCIsdGhpcy5zdmc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2ZyIpLHRoaXMuc3ZnLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdGhpcy5zdmcuc3R5bGUudG9wPSIwcHgiLHRoaXMuc3ZnLnN0eWxlLndpZHRoPXRoaXMub3B0aW9ucy5pY29uU2l6ZSs1KyJweCIsdGhpcy5zdmcuc3R5bGUuaGVpZ2h0PSIxMDAlIix0aGlzLmRvbS5mcmFtZS5hcHBlbmRDaGlsZCh0aGlzLnN2ZyksdGhpcy5kb20uZnJhbWUuYXBwZW5kQ2hpbGQodGhpcy5kb20udGV4dEFyZWEpfSxvLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKCl7dGhpcy5kb20uZnJhbWUucGFyZW50Tm9kZSYmdGhpcy5kb20uZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbS5mcmFtZSl9LG8ucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oKXt0aGlzLmRvbS5mcmFtZS5wYXJlbnROb2RlfHx0aGlzLmJvZHkuZG9tLmNlbnRlci5hcHBlbmRDaGlsZCh0aGlzLmRvbS5mcmFtZSl9LG8ucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7dmFyIGU9WyJlbmFibGVkIiwib3JpZW50YXRpb24iLCJpY29ucyIsImxlZnQiLCJyaWdodCJdO3Iuc2VsZWN0aXZlRGVlcEV4dGVuZChlLHRoaXMub3B0aW9ucyx0KX0sby5wcm90b3R5cGUucmVkcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9MCxlPSgwLHMuZGVmYXVsdCkodGhpcy5ncm91cHMpO2Uuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0PGU/LTE6MX0pO2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1lW2ldOzEhPXRoaXMuZ3JvdXBzW29dLnZpc2libGV8fHZvaWQgMCE9PXRoaXMubGluZWdyYXBoT3B0aW9ucy52aXNpYmlsaXR5W29dJiYxIT10aGlzLmxpbmVncmFwaE9wdGlvbnMudmlzaWJpbGl0eVtvXXx8dCsrfWlmKDA9PXRoaXMub3B0aW9uc1t0aGlzLnNpZGVdLnZpc2libGV8fDA9PXRoaXMuYW1vdW50T2ZHcm91cHN8fDA9PXRoaXMub3B0aW9ucy5lbmFibGVkfHwwPT10KXRoaXMuaGlkZSgpO2Vsc2V7aWYodGhpcy5zaG93KCksInRvcC1sZWZ0Ij09dGhpcy5vcHRpb25zW3RoaXMuc2lkZV0ucG9zaXRpb258fCJib3R0b20tbGVmdCI9PXRoaXMub3B0aW9uc1t0aGlzLnNpZGVdLnBvc2l0aW9uPyh0aGlzLmRvbS5mcmFtZS5zdHlsZS5sZWZ0PSI0cHgiLHRoaXMuZG9tLmZyYW1lLnN0eWxlLnRleHRBbGlnbj0ibGVmdCIsdGhpcy5kb20udGV4dEFyZWEuc3R5bGUudGV4dEFsaWduPSJsZWZ0Iix0aGlzLmRvbS50ZXh0QXJlYS5zdHlsZS5sZWZ0PXRoaXMub3B0aW9ucy5pY29uU2l6ZSsxNSsicHgiLHRoaXMuZG9tLnRleHRBcmVhLnN0eWxlLnJpZ2h0PSIiLHRoaXMuc3ZnLnN0eWxlLmxlZnQ9IjBweCIsdGhpcy5zdmcuc3R5bGUucmlnaHQ9IiIpOih0aGlzLmRvbS5mcmFtZS5zdHlsZS5yaWdodD0iNHB4Iix0aGlzLmRvbS5mcmFtZS5zdHlsZS50ZXh0QWxpZ249InJpZ2h0Iix0aGlzLmRvbS50ZXh0QXJlYS5zdHlsZS50ZXh0QWxpZ249InJpZ2h0Iix0aGlzLmRvbS50ZXh0QXJlYS5zdHlsZS5yaWdodD10aGlzLm9wdGlvbnMuaWNvblNpemUrMTUrInB4Iix0aGlzLmRvbS50ZXh0QXJlYS5zdHlsZS5sZWZ0PSIiLHRoaXMuc3ZnLnN0eWxlLnJpZ2h0PSIwcHgiLHRoaXMuc3ZnLnN0eWxlLmxlZnQ9IiIpLCJ0b3AtbGVmdCI9PXRoaXMub3B0aW9uc1t0aGlzLnNpZGVdLnBvc2l0aW9ufHwidG9wLXJpZ2h0Ij09dGhpcy5vcHRpb25zW3RoaXMuc2lkZV0ucG9zaXRpb24pdGhpcy5kb20uZnJhbWUuc3R5bGUudG9wPTQtTnVtYmVyKHRoaXMuYm9keS5kb20uY2VudGVyLnN0eWxlLnRvcC5yZXBsYWNlKCJweCIsIiIpKSsicHgiLHRoaXMuZG9tLmZyYW1lLnN0eWxlLmJvdHRvbT0iIjtlbHNle3ZhciBuPXRoaXMuYm9keS5kb21Qcm9wcy5jZW50ZXIuaGVpZ2h0LXRoaXMuYm9keS5kb21Qcm9wcy5jZW50ZXJDb250YWluZXIuaGVpZ2h0O3RoaXMuZG9tLmZyYW1lLnN0eWxlLmJvdHRvbT00K24rTnVtYmVyKHRoaXMuYm9keS5kb20uY2VudGVyLnN0eWxlLnRvcC5yZXBsYWNlKCJweCIsIiIpKSsicHgiLHRoaXMuZG9tLmZyYW1lLnN0eWxlLnRvcD0iIn0wPT10aGlzLm9wdGlvbnMuaWNvbnM/KHRoaXMuZG9tLmZyYW1lLnN0eWxlLndpZHRoPXRoaXMuZG9tLnRleHRBcmVhLm9mZnNldFdpZHRoKzEwKyJweCIsdGhpcy5kb20udGV4dEFyZWEuc3R5bGUucmlnaHQ9IiIsdGhpcy5kb20udGV4dEFyZWEuc3R5bGUubGVmdD0iIix0aGlzLnN2Zy5zdHlsZS53aWR0aD0iMHB4Iik6KHRoaXMuZG9tLmZyYW1lLnN0eWxlLndpZHRoPXRoaXMub3B0aW9ucy5pY29uU2l6ZSsxNSt0aGlzLmRvbS50ZXh0QXJlYS5vZmZzZXRXaWR0aCsxMCsicHgiLHRoaXMuZHJhd0xlZ2VuZEljb25zKCkpO2Zvcih2YXIgcj0iIixpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV07MSE9dGhpcy5ncm91cHNbb10udmlzaWJsZXx8dm9pZCAwIT09dGhpcy5saW5lZ3JhcGhPcHRpb25zLnZpc2liaWxpdHlbb10mJjEhPXRoaXMubGluZWdyYXBoT3B0aW9ucy52aXNpYmlsaXR5W29dfHwocis9dGhpcy5ncm91cHNbb10uY29udGVudCsiPGJyIC8+Iil9dGhpcy5kb20udGV4dEFyZWEuaW5uZXJIVE1MPXIsdGhpcy5kb20udGV4dEFyZWEuc3R5bGUubGluZUhlaWdodD0uNzUqdGhpcy5vcHRpb25zLmljb25TaXplK3RoaXMub3B0aW9ucy5pY29uU3BhY2luZysicHgifX0sby5wcm90b3R5cGUuZHJhd0xlZ2VuZEljb25zPWZ1bmN0aW9uKCl7aWYodGhpcy5kb20uZnJhbWUucGFyZW50Tm9kZSl7dmFyIHQ9KDAscy5kZWZhdWx0KSh0aGlzLmdyb3Vwcyk7dC5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ8ZT8tMToxfSksYS5yZXNldEVsZW1lbnRzKHRoaXMuc3ZnRWxlbWVudHMpO3ZhciBlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZG9tLmZyYW1lKS5wYWRkaW5nVG9wLGk9TnVtYmVyKGUucmVwbGFjZSgicHgiLCIiKSksbz1pLG49dGhpcy5vcHRpb25zLmljb25TaXplLHI9Ljc1KnRoaXMub3B0aW9ucy5pY29uU2l6ZSxoPWkrLjUqciszO3RoaXMuc3ZnLnN0eWxlLndpZHRoPW4rNStpKyJweCI7Zm9yKHZhciBkPTA7ZDx0Lmxlbmd0aDtkKyspe3ZhciBsPXRbZF07MSE9dGhpcy5ncm91cHNbbF0udmlzaWJsZXx8dm9pZCAwIT09dGhpcy5saW5lZ3JhcGhPcHRpb25zLnZpc2liaWxpdHlbbF0mJjEhPXRoaXMubGluZWdyYXBoT3B0aW9ucy52aXNpYmlsaXR5W2xdfHwodGhpcy5ncm91cHNbbF0uZ2V0TGVnZW5kKG4scix0aGlzLmZyYW1ld29yayxvLGgpLGgrPXIrdGhpcy5vcHRpb25zLmljb25TcGFjaW5nKX19fSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9InN0cmluZyIsbz0iYm9vbGVhbiIsbj0ibnVtYmVyIixzPSJvYmplY3QiLHI9e2NvbmZpZ3VyZTp7ZW5hYmxlZDp7Ym9vbGVhbjpvfSxmaWx0ZXI6e2Jvb2xlYW46byxmdW5jdGlvbjoiZnVuY3Rpb24ifSxjb250YWluZXI6e2RvbToiZG9tIn0sX190eXBlX186e29iamVjdDpzLGJvb2xlYW46byxmdW5jdGlvbjoiZnVuY3Rpb24ifX0seUF4aXNPcmllbnRhdGlvbjp7c3RyaW5nOlsibGVmdCIsInJpZ2h0Il19LGRlZmF1bHRHcm91cDp7c3RyaW5nOml9LHNvcnQ6e2Jvb2xlYW46b30sc2FtcGxpbmc6e2Jvb2xlYW46b30sc3RhY2s6e2Jvb2xlYW46b30sZ3JhcGhIZWlnaHQ6e3N0cmluZzppLG51bWJlcjpufSxzaGFkZWQ6e2VuYWJsZWQ6e2Jvb2xlYW46b30sb3JpZW50YXRpb246e3N0cmluZzpbImJvdHRvbSIsInRvcCIsInplcm8iLCJncm91cCJdfSxncm91cElkOntvYmplY3Q6c30sX190eXBlX186e2Jvb2xlYW46byxvYmplY3Q6c319LHN0eWxlOntzdHJpbmc6WyJsaW5lIiwiYmFyIiwicG9pbnRzIl19LGJhckNoYXJ0Ont3aWR0aDp7bnVtYmVyOm59LG1pbldpZHRoOntudW1iZXI6bn0sc2lkZUJ5U2lkZTp7Ym9vbGVhbjpvfSxhbGlnbjp7c3RyaW5nOlsibGVmdCIsImNlbnRlciIsInJpZ2h0Il19LF9fdHlwZV9fOntvYmplY3Q6c319LGludGVycG9sYXRpb246e2VuYWJsZWQ6e2Jvb2xlYW46b30scGFyYW1ldHJpemF0aW9uOntzdHJpbmc6WyJjZW50cmlwZXRhbCIsImNob3JkYWwiLCJ1bmlmb3JtIl19LGFscGhhOntudW1iZXI6bn0sX190eXBlX186e29iamVjdDpzLGJvb2xlYW46b319LGRyYXdQb2ludHM6e2VuYWJsZWQ6e2Jvb2xlYW46b30sb25SZW5kZXI6e2Z1bmN0aW9uOiJmdW5jdGlvbiJ9LHNpemU6e251bWJlcjpufSxzdHlsZTp7c3RyaW5nOlsic3F1YXJlIiwiY2lyY2xlIl19LF9fdHlwZV9fOntvYmplY3Q6cyxib29sZWFuOm8sZnVuY3Rpb246ImZ1bmN0aW9uIn19LGRhdGFBeGlzOntzaG93TWlub3JMYWJlbHM6e2Jvb2xlYW46b30sc2hvd01ham9yTGFiZWxzOntib29sZWFuOm99LGljb25zOntib29sZWFuOm99LHdpZHRoOntzdHJpbmc6aSxudW1iZXI6bn0sdmlzaWJsZTp7Ym9vbGVhbjpvfSxhbGlnblplcm9zOntib29sZWFuOm99LGxlZnQ6e3JhbmdlOnttaW46e251bWJlcjpuLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sbWF4OntudW1iZXI6bix1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LF9fdHlwZV9fOntvYmplY3Q6c319LGZvcm1hdDp7ZnVuY3Rpb246ImZ1bmN0aW9uIn0sdGl0bGU6e3RleHQ6e3N0cmluZzppLG51bWJlcjpuLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sc3R5bGU6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sX190eXBlX186e29iamVjdDpzfX0sX190eXBlX186e29iamVjdDpzfX0scmlnaHQ6e3JhbmdlOnttaW46e251bWJlcjpuLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sbWF4OntudW1iZXI6bix1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LF9fdHlwZV9fOntvYmplY3Q6c319LGZvcm1hdDp7ZnVuY3Rpb246ImZ1bmN0aW9uIn0sdGl0bGU6e3RleHQ6e3N0cmluZzppLG51bWJlcjpuLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sc3R5bGU6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sX190eXBlX186e29iamVjdDpzfX0sX190eXBlX186e29iamVjdDpzfX0sX190eXBlX186e29iamVjdDpzfX0sbGVnZW5kOntlbmFibGVkOntib29sZWFuOm99LGljb25zOntib29sZWFuOm99LGxlZnQ6e3Zpc2libGU6e2Jvb2xlYW46b30scG9zaXRpb246e3N0cmluZzpbInRvcC1yaWdodCIsImJvdHRvbS1yaWdodCIsInRvcC1sZWZ0IiwiYm90dG9tLWxlZnQiXX0sX190eXBlX186e29iamVjdDpzfX0scmlnaHQ6e3Zpc2libGU6e2Jvb2xlYW46b30scG9zaXRpb246e3N0cmluZzpbInRvcC1yaWdodCIsImJvdHRvbS1yaWdodCIsInRvcC1sZWZ0IiwiYm90dG9tLWxlZnQiXX0sX190eXBlX186e29iamVjdDpzfX0sX190eXBlX186e29iamVjdDpzLGJvb2xlYW46b319LGdyb3Vwczp7dmlzaWJpbGl0eTp7YW55OiJhbnkifSxfX3R5cGVfXzp7b2JqZWN0OnN9fSxhdXRvUmVzaXplOntib29sZWFuOm99LHRocm90dGxlUmVkcmF3OntudW1iZXI6bn0sY2xpY2tUb1VzZTp7Ym9vbGVhbjpvfSxlbmQ6e251bWJlcjpuLGRhdGU6ImRhdGUiLHN0cmluZzppLG1vbWVudDoibW9tZW50In0sZm9ybWF0OnttaW5vckxhYmVsczp7bWlsbGlzZWNvbmQ6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sc2Vjb25kOntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LG1pbnV0ZTp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxob3VyOntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LHdlZWtkYXk6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sZGF5OntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LG1vbnRoOntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LHllYXI6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sX190eXBlX186e29iamVjdDpzfX0sbWFqb3JMYWJlbHM6e21pbGxpc2Vjb25kOntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LHNlY29uZDp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxtaW51dGU6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0saG91cjp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSx3ZWVrZGF5OntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LGRheTp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxtb250aDp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSx5ZWFyOntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LF9fdHlwZV9fOntvYmplY3Q6c319LF9fdHlwZV9fOntvYmplY3Q6c319LG1vbWVudDp7ZnVuY3Rpb246ImZ1bmN0aW9uIn0saGVpZ2h0OntzdHJpbmc6aSxudW1iZXI6bn0saGlkZGVuRGF0ZXM6e3N0YXJ0OntkYXRlOiJkYXRlIixudW1iZXI6bixzdHJpbmc6aSxtb21lbnQ6Im1vbWVudCJ9LGVuZDp7ZGF0ZToiZGF0ZSIsbnVtYmVyOm4sc3RyaW5nOmksbW9tZW50OiJtb21lbnQifSxyZXBlYXQ6e3N0cmluZzppfSxfX3R5cGVfXzp7b2JqZWN0OnMsYXJyYXk6ImFycmF5In19LGxvY2FsZTp7c3RyaW5nOml9LGxvY2FsZXM6e19fYW55X186e2FueToiYW55In0sX190eXBlX186e29iamVjdDpzfX0sbWF4OntkYXRlOiJkYXRlIixudW1iZXI6bixzdHJpbmc6aSxtb21lbnQ6Im1vbWVudCJ9LG1heEhlaWdodDp7bnVtYmVyOm4sc3RyaW5nOml9LG1heE1pbm9yQ2hhcnM6e251bWJlcjpufSxtaW46e2RhdGU6ImRhdGUiLG51bWJlcjpuLHN0cmluZzppLG1vbWVudDoibW9tZW50In0sbWluSGVpZ2h0OntudW1iZXI6bixzdHJpbmc6aX0sbW92ZWFibGU6e2Jvb2xlYW46b30sbXVsdGlzZWxlY3Q6e2Jvb2xlYW46b30sb3JpZW50YXRpb246e3N0cmluZzppfSxzaG93Q3VycmVudFRpbWU6e2Jvb2xlYW46b30sc2hvd01ham9yTGFiZWxzOntib29sZWFuOm99LHNob3dNaW5vckxhYmVsczp7Ym9vbGVhbjpvfSxzdGFydDp7ZGF0ZToiZGF0ZSIsbnVtYmVyOm4sc3RyaW5nOmksbW9tZW50OiJtb21lbnQifSx0aW1lQXhpczp7c2NhbGU6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sc3RlcDp7bnVtYmVyOm4sdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxfX3R5cGVfXzp7b2JqZWN0OnN9fSx3aWR0aDp7c3RyaW5nOmksbnVtYmVyOm59LHpvb21hYmxlOntib29sZWFuOm99LHpvb21LZXk6e3N0cmluZzpbImN0cmxLZXkiLCJhbHRLZXkiLCJtZXRhS2V5IiwiIl19LHpvb21NYXg6e251bWJlcjpufSx6b29tTWluOntudW1iZXI6bn0sekluZGV4OntudW1iZXI6bn0sX190eXBlX186e29iamVjdDpzfX0sYT17Z2xvYmFsOntzb3J0OiEwLHNhbXBsaW5nOiEwLHN0YWNrOiExLHNoYWRlZDp7ZW5hYmxlZDohMSxvcmllbnRhdGlvbjpbInplcm8iLCJ0b3AiLCJib3R0b20iLCJncm91cCJdfSxzdHlsZTpbImxpbmUiLCJiYXIiLCJwb2ludHMiXSxiYXJDaGFydDp7d2lkdGg6WzUwLDUsMTAwLDVdLG1pbldpZHRoOls1MCw1LDEwMCw1XSxzaWRlQnlTaWRlOiExLGFsaWduOlsibGVmdCIsImNlbnRlciIsInJpZ2h0Il19LGludGVycG9sYXRpb246e2VuYWJsZWQ6ITAscGFyYW1ldHJpemF0aW9uOlsiY2VudHJpcGV0YWwiLCJjaG9yZGFsIiwidW5pZm9ybSJdfSxkcmF3UG9pbnRzOntlbmFibGVkOiEwLHNpemU6WzYsMiwzMCwxXSxzdHlsZTpbInNxdWFyZSIsImNpcmNsZSJdfSxkYXRhQXhpczp7c2hvd01pbm9yTGFiZWxzOiEwLHNob3dNYWpvckxhYmVsczohMCxpY29uczohMSx3aWR0aDpbNDAsMCwyMDAsMV0sdmlzaWJsZTohMCxhbGlnblplcm9zOiEwLGxlZnQ6e3RpdGxlOnt0ZXh0OiIiLHN0eWxlOiIifX0scmlnaHQ6e3RpdGxlOnt0ZXh0OiIiLHN0eWxlOiIifX19LGxlZ2VuZDp7ZW5hYmxlZDohMSxpY29uczohMCxsZWZ0Ont2aXNpYmxlOiEwLHBvc2l0aW9uOlsidG9wLXJpZ2h0IiwiYm90dG9tLXJpZ2h0IiwidG9wLWxlZnQiLCJib3R0b20tbGVmdCJdfSxyaWdodDp7dmlzaWJsZTohMCxwb3NpdGlvbjpbInRvcC1yaWdodCIsImJvdHRvbS1yaWdodCIsInRvcC1sZWZ0IiwiYm90dG9tLWxlZnQiXX19LGF1dG9SZXNpemU6ITAsY2xpY2tUb1VzZTohMSxlbmQ6IiIsZm9ybWF0OnttaW5vckxhYmVsczp7bWlsbGlzZWNvbmQ6IlNTUyIsc2Vjb25kOiJzIixtaW51dGU6IkhIOm1tIixob3VyOiJISDptbSIsd2Vla2RheToiZGRkIEQiLGRheToiRCIsbW9udGg6Ik1NTSIseWVhcjoiWVlZWSJ9LG1ham9yTGFiZWxzOnttaWxsaXNlY29uZDoiSEg6bW06c3MiLHNlY29uZDoiRCBNTU1NIEhIOm1tIixtaW51dGU6ImRkZCBEIE1NTU0iLGhvdXI6ImRkZCBEIE1NTU0iLHdlZWtkYXk6Ik1NTU0gWVlZWSIsZGF5OiJNTU1NIFlZWVkiLG1vbnRoOiJZWVlZIix5ZWFyOiIifX0saGVpZ2h0OiIiLGxvY2FsZToiIixtYXg6IiIsbWF4SGVpZ2h0OiIiLG1heE1pbm9yQ2hhcnM6WzcsMCwyMCwxXSxtaW46IiIsbWluSGVpZ2h0OiIiLG1vdmVhYmxlOiEwLG9yaWVudGF0aW9uOlsiYm90aCIsImJvdHRvbSIsInRvcCJdLHNob3dDdXJyZW50VGltZTohMSxzaG93TWFqb3JMYWJlbHM6ITAsc2hvd01pbm9yTGFiZWxzOiEwLHN0YXJ0OiIiLHdpZHRoOiIxMDAlIix6b29tYWJsZTohMCx6b29tS2V5OlsiY3RybEtleSIsImFsdEtleSIsIm1ldGFLZXkiLCIiXSx6b29tTWF4OlszMTUzNmUxMCwxMCwzMTUzNmUxMCwxXSx6b29tTWluOlsxMCwxMCwzMTUzNmUxMCwxXSx6SW5kZXg6MH19O2UuYWxsT3B0aW9ucz1yLGUuY29uZmlndXJlT3B0aW9ucz1hfSxmdW5jdGlvbih0LGUsaSl7ZS51dGlsPWkoMSksZS5ET011dGlsPWkoODgpLGUuRGF0YVNldD1pKDg5KSxlLkRhdGFWaWV3PWkoOTMpLGUuUXVldWU9aSg5MiksZS5OZXR3b3JrPWkoMTYwKSxlLm5ldHdvcms9e0ltYWdlczppKDE2NSksZG90cGFyc2VyOmkoMTYyKSxnZXBoaVBhcnNlcjppKDE2MyksYWxsT3B0aW9uczppKDIzMCl9LGUubmV0d29yay5jb252ZXJ0RG90PWZ1bmN0aW9uKHQpe3JldHVybiBlLm5ldHdvcmsuZG90cGFyc2VyLkRPVFRvR3JhcGgodCl9LGUubmV0d29yay5jb252ZXJ0R2VwaGk9ZnVuY3Rpb24odCxpKXtyZXR1cm4gZS5uZXR3b3JrLmdlcGhpUGFyc2VyLnBhcnNlR2VwaGkodCxpKX0sZS5tb21lbnQ9aSg4MiksZS5IYW1tZXI9aSgxMTMpLGUua2V5Y2hhcm09aSgxMTYpfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUsaSl7dmFyIG49dGhpcztpZighKHRoaXMgaW5zdGFuY2VvZiBvKSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoIkNvbnN0cnVjdG9yIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIG5ldyBvcGVyYXRvciIpO3RoaXMub3B0aW9ucz17fSx0aGlzLmRlZmF1bHRPcHRpb25zPXtsb2NhbGU6ImVuIixsb2NhbGVzOmQsY2xpY2tUb1VzZTohMX0scy5leHRlbmQodGhpcy5vcHRpb25zLHRoaXMuZGVmYXVsdE9wdGlvbnMpLHRoaXMuYm9keT17Y29udGFpbmVyOnQsbm9kZXM6e30sbm9kZUluZGljZXM6W10sZWRnZXM6e30sZWRnZUluZGljZXM6W10sZW1pdHRlcjp7b246dGhpcy5vbi5iaW5kKHRoaXMpLG9mZjp0aGlzLm9mZi5iaW5kKHRoaXMpLGVtaXQ6dGhpcy5lbWl0LmJpbmQodGhpcyksb25jZTp0aGlzLm9uY2UuYmluZCh0aGlzKX0sZXZlbnRMaXN0ZW5lcnM6e29uVGFwOmZ1bmN0aW9uKCl7fSxvblRvdWNoOmZ1bmN0aW9uKCl7fSxvbkRvdWJsZVRhcDpmdW5jdGlvbigpe30sb25Ib2xkOmZ1bmN0aW9uKCl7fSxvbkRyYWdTdGFydDpmdW5jdGlvbigpe30sb25EcmFnOmZ1bmN0aW9uKCl7fSxvbkRyYWdFbmQ6ZnVuY3Rpb24oKXt9LG9uTW91c2VXaGVlbDpmdW5jdGlvbigpe30sb25QaW5jaDpmdW5jdGlvbigpe30sb25Nb3VzZU1vdmU6ZnVuY3Rpb24oKXt9LG9uUmVsZWFzZTpmdW5jdGlvbigpe30sb25Db250ZXh0OmZ1bmN0aW9uKCl7fX0sZGF0YTp7bm9kZXM6bnVsbCxlZGdlczpudWxsfSxmdW5jdGlvbnM6e2NyZWF0ZU5vZGU6ZnVuY3Rpb24oKXt9LGNyZWF0ZUVkZ2U6ZnVuY3Rpb24oKXt9LGdldFBvaW50ZXI6ZnVuY3Rpb24oKXt9fSxtb2R1bGVzOnt9LHZpZXc6e3NjYWxlOjEsdHJhbnNsYXRpb246e3g6MCx5OjB9fX0sdGhpcy5iaW5kRXZlbnRMaXN0ZW5lcnMoKSx0aGlzLmltYWdlcz1uZXcgbChmdW5jdGlvbigpe3JldHVybiBuLmJvZHkuZW1pdHRlci5lbWl0KCJfcmVxdWVzdFJlZHJhdyIpfSksdGhpcy5ncm91cHM9bmV3IHUsdGhpcy5jYW52YXM9bmV3IGcodGhpcy5ib2R5KSx0aGlzLnNlbGVjdGlvbkhhbmRsZXI9bmV3IF8odGhpcy5ib2R5LHRoaXMuY2FudmFzKSx0aGlzLmludGVyYWN0aW9uSGFuZGxlcj1uZXcgYih0aGlzLmJvZHksdGhpcy5jYW52YXMsdGhpcy5zZWxlY3Rpb25IYW5kbGVyKSx0aGlzLnZpZXc9bmV3IHkodGhpcy5ib2R5LHRoaXMuY2FudmFzKSx0aGlzLnJlbmRlcmVyPW5ldyB2KHRoaXMuYm9keSx0aGlzLmNhbnZhcyksdGhpcy5waHlzaWNzPW5ldyBmKHRoaXMuYm9keSksdGhpcy5sYXlvdXRFbmdpbmU9bmV3IHcodGhpcy5ib2R5KSx0aGlzLmNsdXN0ZXJpbmc9bmV3IG0odGhpcy5ib2R5KSx0aGlzLm1hbmlwdWxhdGlvbj1uZXcgeCh0aGlzLmJvZHksdGhpcy5jYW52YXMsdGhpcy5zZWxlY3Rpb25IYW5kbGVyKSx0aGlzLm5vZGVzSGFuZGxlcj1uZXcgYyh0aGlzLmJvZHksdGhpcy5pbWFnZXMsdGhpcy5ncm91cHMsdGhpcy5sYXlvdXRFbmdpbmUpLHRoaXMuZWRnZXNIYW5kbGVyPW5ldyBwKHRoaXMuYm9keSx0aGlzLmltYWdlcyx0aGlzLmdyb3VwcyksdGhpcy5ib2R5Lm1vZHVsZXMua2FtYWRhS2F3YWk9bmV3IEUodGhpcy5ib2R5LDE1MCwuMDUpLHRoaXMuYm9keS5tb2R1bGVzLmNsdXN0ZXJpbmc9dGhpcy5jbHVzdGVyaW5nLHRoaXMuY2FudmFzLl9jcmVhdGUoKSx0aGlzLnNldE9wdGlvbnMoaSksdGhpcy5zZXREYXRhKGUpfWkoMTYxKTt2YXIgbj1pKDk5KSxzPWkoMSkscj0oaSg4OSksaSg5MyksaSgxNjIpKSxhPWkoMTYzKSxoPWkoMTQxKSxkPWkoMTY0KSxsPWkoMTY1KS5kZWZhdWx0LHU9aSgxNjcpLmRlZmF1bHQsYz1pKDE2OCkuZGVmYXVsdCxwPWkoMjAxKS5kZWZhdWx0LGY9aSgyMTIpLmRlZmF1bHQsbT1pKDIyMSkuZGVmYXVsdCx2PWkoMjIzKS5kZWZhdWx0LGc9aSgyMjQpLmRlZmF1bHQseT1pKDIyNSkuZGVmYXVsdCxiPWkoMjI2KS5kZWZhdWx0LF89aSgyMjgpLmRlZmF1bHQsdz1pKDIxMCkuZGVmYXVsdCx4PWkoMjI5KS5kZWZhdWx0LGs9aSgxNDcpLmRlZmF1bHQsRD1pKDE0NSkuZGVmYXVsdCxNPWkoMTQ1KSxTPU0ucHJpbnRTdHlsZSxPPWkoMjMwKSxDPU8uYWxsT3B0aW9ucyxUPU8uY29uZmlndXJlT3B0aW9ucyxFPWkoMjMxKS5kZWZhdWx0O24oby5wcm90b3R5cGUpLG8ucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih2b2lkIDAhPT10KXshMD09PUQudmFsaWRhdGUodCxDKSYmY29uc29sZS5sb2coIiVjRXJyb3JzIGhhdmUgYmVlbiBmb3VuZCBpbiB0aGUgc3VwcGxpZWQgb3B0aW9ucyBvYmplY3QuIixTKTt2YXIgaT1bImxvY2FsZSIsImxvY2FsZXMiLCJjbGlja1RvVXNlIl07aWYocy5zZWxlY3RpdmVEZWVwRXh0ZW5kKGksdGhpcy5vcHRpb25zLHQpLHQ9dGhpcy5sYXlvdXRFbmdpbmUuc2V0T3B0aW9ucyh0LmxheW91dCx0KSx0aGlzLmNhbnZhcy5zZXRPcHRpb25zKHQpLHRoaXMuZ3JvdXBzLnNldE9wdGlvbnModC5ncm91cHMpLHRoaXMubm9kZXNIYW5kbGVyLnNldE9wdGlvbnModC5ub2RlcyksdGhpcy5lZGdlc0hhbmRsZXIuc2V0T3B0aW9ucyh0LmVkZ2VzKSx0aGlzLnBoeXNpY3Muc2V0T3B0aW9ucyh0LnBoeXNpY3MpLHRoaXMubWFuaXB1bGF0aW9uLnNldE9wdGlvbnModC5tYW5pcHVsYXRpb24sdCx0aGlzLm9wdGlvbnMpLHRoaXMuaW50ZXJhY3Rpb25IYW5kbGVyLnNldE9wdGlvbnModC5pbnRlcmFjdGlvbiksdGhpcy5yZW5kZXJlci5zZXRPcHRpb25zKHQuaW50ZXJhY3Rpb24pLHRoaXMuc2VsZWN0aW9uSGFuZGxlci5zZXRPcHRpb25zKHQuaW50ZXJhY3Rpb24pLHZvaWQgMCE9PXQuZ3JvdXBzJiZ0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJyZWZyZXNoTm9kZXMiKSwiY29uZmlndXJlImluIHQmJih0aGlzLmNvbmZpZ3VyYXRvcnx8KHRoaXMuY29uZmlndXJhdG9yPW5ldyBrKHRoaXMsdGhpcy5ib2R5LmNvbnRhaW5lcixULHRoaXMuY2FudmFzLnBpeGVsUmF0aW8pKSx0aGlzLmNvbmZpZ3VyYXRvci5zZXRPcHRpb25zKHQuY29uZmlndXJlKSksdGhpcy5jb25maWd1cmF0b3ImJiEwPT09dGhpcy5jb25maWd1cmF0b3Iub3B0aW9ucy5lbmFibGVkKXt2YXIgbz17bm9kZXM6e30sZWRnZXM6e30sbGF5b3V0Ont9LGludGVyYWN0aW9uOnt9LG1hbmlwdWxhdGlvbjp7fSxwaHlzaWNzOnt9LGdsb2JhbDp7fX07cy5kZWVwRXh0ZW5kKG8ubm9kZXMsdGhpcy5ub2Rlc0hhbmRsZXIub3B0aW9ucykscy5kZWVwRXh0ZW5kKG8uZWRnZXMsdGhpcy5lZGdlc0hhbmRsZXIub3B0aW9ucykscy5kZWVwRXh0ZW5kKG8ubGF5b3V0LHRoaXMubGF5b3V0RW5naW5lLm9wdGlvbnMpLHMuZGVlcEV4dGVuZChvLmludGVyYWN0aW9uLHRoaXMuc2VsZWN0aW9uSGFuZGxlci5vcHRpb25zKSxzLmRlZXBFeHRlbmQoby5pbnRlcmFjdGlvbix0aGlzLnJlbmRlcmVyLm9wdGlvbnMpLHMuZGVlcEV4dGVuZChvLmludGVyYWN0aW9uLHRoaXMuaW50ZXJhY3Rpb25IYW5kbGVyLm9wdGlvbnMpLHMuZGVlcEV4dGVuZChvLm1hbmlwdWxhdGlvbix0aGlzLm1hbmlwdWxhdGlvbi5vcHRpb25zKSxzLmRlZXBFeHRlbmQoby5waHlzaWNzLHRoaXMucGh5c2ljcy5vcHRpb25zKSxzLmRlZXBFeHRlbmQoby5nbG9iYWwsdGhpcy5jYW52YXMub3B0aW9ucykscy5kZWVwRXh0ZW5kKG8uZ2xvYmFsLHRoaXMub3B0aW9ucyksdGhpcy5jb25maWd1cmF0b3Iuc2V0TW9kdWxlT3B0aW9ucyhvKX12b2lkIDAhPT10LmNsaWNrVG9Vc2U/ITA9PT10LmNsaWNrVG9Vc2U/dm9pZCAwPT09dGhpcy5hY3RpdmF0b3ImJih0aGlzLmFjdGl2YXRvcj1uZXcgaCh0aGlzLmNhbnZhcy5mcmFtZSksdGhpcy5hY3RpdmF0b3Iub24oImNoYW5nZSIsZnVuY3Rpb24oKXtlLmJvZHkuZW1pdHRlci5lbWl0KCJhY3RpdmF0ZSIpfSkpOih2b2lkIDAhPT10aGlzLmFjdGl2YXRvciYmKHRoaXMuYWN0aXZhdG9yLmRlc3Ryb3koKSxkZWxldGUgdGhpcy5hY3RpdmF0b3IpLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoImFjdGl2YXRlIikpOnRoaXMuYm9keS5lbWl0dGVyLmVtaXQoImFjdGl2YXRlIiksdGhpcy5jYW52YXMuc2V0U2l6ZSgpLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoInN0YXJ0U2ltdWxhdGlvbiIpfX0sby5wcm90b3R5cGUuX3VwZGF0ZVZpc2libGVJbmRpY2VzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5ib2R5Lm5vZGVzLGU9dGhpcy5ib2R5LmVkZ2VzO3RoaXMuYm9keS5ub2RlSW5kaWNlcz1bXSx0aGlzLmJvZHkuZWRnZUluZGljZXM9W107Zm9yKHZhciBpIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShpKSYmITE9PT10W2ldLm9wdGlvbnMuaGlkZGVuJiZ0aGlzLmJvZHkubm9kZUluZGljZXMucHVzaCh0W2ldLmlkKTtmb3IodmFyIG8gaW4gZSllLmhhc093blByb3BlcnR5KG8pJiYhMT09PWVbb10ub3B0aW9ucy5oaWRkZW4mJnRoaXMuYm9keS5lZGdlSW5kaWNlcy5wdXNoKGVbb10uaWQpfSxvLnByb3RvdHlwZS5iaW5kRXZlbnRMaXN0ZW5lcnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuYm9keS5lbWl0dGVyLm9uKCJfZGF0YUNoYW5nZWQiLGZ1bmN0aW9uKCl7dC5fdXBkYXRlVmlzaWJsZUluZGljZXMoKSx0LmJvZHkuZW1pdHRlci5lbWl0KCJfcmVxdWVzdFJlZHJhdyIpLHQuYm9keS5lbWl0dGVyLmVtaXQoIl9kYXRhVXBkYXRlZCIpfSksdGhpcy5ib2R5LmVtaXR0ZXIub24oIl9kYXRhVXBkYXRlZCIsZnVuY3Rpb24oKXt0Ll91cGRhdGVWYWx1ZVJhbmdlKHQuYm9keS5ub2RlcyksdC5fdXBkYXRlVmFsdWVSYW5nZSh0LmJvZHkuZWRnZXMpLHQuYm9keS5lbWl0dGVyLmVtaXQoInN0YXJ0U2ltdWxhdGlvbiIpLHQuYm9keS5lbWl0dGVyLmVtaXQoIl9yZXF1ZXN0UmVkcmF3Iil9KX0sby5wcm90b3R5cGUuc2V0RGF0YT1mdW5jdGlvbih0KXtpZih0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJyZXNldFBoeXNpY3MiKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfcmVzZXREYXRhIiksdGhpcy5zZWxlY3Rpb25IYW5kbGVyLnVuc2VsZWN0QWxsKCksdCYmdC5kb3QmJih0Lm5vZGVzfHx0LmVkZ2VzKSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ0RhdGEgbXVzdCBjb250YWluIGVpdGhlciBwYXJhbWV0ZXIgImRvdCIgb3IgIHBhcmFtZXRlciBwYWlyICJub2RlcyIgYW5kICJlZGdlcyIsIGJ1dCBub3QgYm90aC4nKTtpZih0aGlzLnNldE9wdGlvbnModCYmdC5vcHRpb25zKSx0JiZ0LmRvdCl7Y29uc29sZS5sb2coIlRoZSBkb3QgcHJvcGVydHkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0aGUgc3RhdGljIGNvbnZlcnREb3QgbWV0aG9kIHRvIGNvbnZlcnQgRE9UIGludG8gdmlzLm5ldHdvcmsgZm9ybWF0IGFuZCB1c2UgdGhlIG5vcm1hbCBkYXRhIGZvcm1hdCB3aXRoIG5vZGVzIGFuZCBlZGdlcy4gVGhpcyBjb252ZXJ0ZXIgaXMgdXNlZCBsaWtlIHRoaXM6IHZhciBkYXRhID0gdmlzLm5ldHdvcmsuY29udmVydERvdChkb3RTdHJpbmcpOyIpO3ZhciBlPXIuRE9UVG9HcmFwaCh0LmRvdCk7cmV0dXJuIHZvaWQgdGhpcy5zZXREYXRhKGUpfWlmKHQmJnQuZ2VwaGkpe2NvbnNvbGUubG9nKCJUaGUgZ2VwaGkgcHJvcGVydHkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0aGUgc3RhdGljIGNvbnZlcnRHZXBoaSBtZXRob2QgdG8gY29udmVydCBnZXBoaSBpbnRvIHZpcy5uZXR3b3JrIGZvcm1hdCBhbmQgdXNlIHRoZSBub3JtYWwgZGF0YSBmb3JtYXQgd2l0aCBub2RlcyBhbmQgZWRnZXMuIFRoaXMgY29udmVydGVyIGlzIHVzZWQgbGlrZSB0aGlzOiB2YXIgZGF0YSA9IHZpcy5uZXR3b3JrLmNvbnZlcnRHZXBoaShnZXBoaUpzb24pOyIpO3ZhciBpPWEucGFyc2VHZXBoaSh0LmdlcGhpKTtyZXR1cm4gdm9pZCB0aGlzLnNldERhdGEoaSl9dGhpcy5ub2Rlc0hhbmRsZXIuc2V0RGF0YSh0JiZ0Lm5vZGVzLCEwKSx0aGlzLmVkZ2VzSGFuZGxlci5zZXREYXRhKHQmJnQuZWRnZXMsITApLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9kYXRhQ2hhbmdlZCIpLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9kYXRhTG9hZGVkIiksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiaW5pdFBoeXNpY3MiKX0sby5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuYm9keS5lbWl0dGVyLmVtaXQoImRlc3Ryb3kiKSx0aGlzLmJvZHkuZW1pdHRlci5vZmYoKSx0aGlzLm9mZigpLGRlbGV0ZSB0aGlzLmdyb3VwcyxkZWxldGUgdGhpcy5jYW52YXMsZGVsZXRlIHRoaXMuc2VsZWN0aW9uSGFuZGxlcixkZWxldGUgdGhpcy5pbnRlcmFjdGlvbkhhbmRsZXIsZGVsZXRlIHRoaXMudmlldyxkZWxldGUgdGhpcy5yZW5kZXJlcixkZWxldGUgdGhpcy5waHlzaWNzLGRlbGV0ZSB0aGlzLmxheW91dEVuZ2luZSxkZWxldGUgdGhpcy5jbHVzdGVyaW5nLGRlbGV0ZSB0aGlzLm1hbmlwdWxhdGlvbixkZWxldGUgdGhpcy5ub2Rlc0hhbmRsZXIsZGVsZXRlIHRoaXMuZWRnZXNIYW5kbGVyLGRlbGV0ZSB0aGlzLmNvbmZpZ3VyYXRvcixkZWxldGUgdGhpcy5pbWFnZXM7Zm9yKHZhciB0IGluIHRoaXMuYm9keS5ub2RlcylkZWxldGUgdGhpcy5ib2R5Lm5vZGVzW3RdO2Zvcih2YXIgZSBpbiB0aGlzLmJvZHkuZWRnZXMpZGVsZXRlIHRoaXMuYm9keS5lZGdlc1tlXTtzLnJlY3Vyc2l2ZURPTURlbGV0ZSh0aGlzLmJvZHkuY29udGFpbmVyKX0sby5wcm90b3R5cGUuX3VwZGF0ZVZhbHVlUmFuZ2U9ZnVuY3Rpb24odCl7dmFyIGUsaT12b2lkIDAsbz12b2lkIDAsbj0wO2ZvcihlIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShlKSl7dmFyIHM9dFtlXS5nZXRWYWx1ZSgpO3ZvaWQgMCE9PXMmJihpPXZvaWQgMD09PWk/czpNYXRoLm1pbihzLGkpLG89dm9pZCAwPT09bz9zOk1hdGgubWF4KHMsbyksbis9cyl9aWYodm9pZCAwIT09aSYmdm9pZCAwIT09bylmb3IoZSBpbiB0KXQuaGFzT3duUHJvcGVydHkoZSkmJnRbZV0uc2V0VmFsdWVSYW5nZShpLG8sbil9LG8ucHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuYWN0aXZhdG9yfHx0aGlzLmFjdGl2YXRvci5hY3RpdmV9LG8ucHJvdG90eXBlLnNldFNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW52YXMuc2V0U2l6ZS5hcHBseSh0aGlzLmNhbnZhcyxhcmd1bWVudHMpfSxvLnByb3RvdHlwZS5jYW52YXNUb0RPTT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbnZhcy5jYW52YXNUb0RPTS5hcHBseSh0aGlzLmNhbnZhcyxhcmd1bWVudHMpfSxvLnByb3RvdHlwZS5ET010b0NhbnZhcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbnZhcy5ET010b0NhbnZhcy5hcHBseSh0aGlzLmNhbnZhcyxhcmd1bWVudHMpfSxvLnByb3RvdHlwZS5maW5kTm9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsdXN0ZXJpbmcuZmluZE5vZGUuYXBwbHkodGhpcy5jbHVzdGVyaW5nLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmlzQ2x1c3Rlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsdXN0ZXJpbmcuaXNDbHVzdGVyLmFwcGx5KHRoaXMuY2x1c3RlcmluZyxhcmd1bWVudHMpfSxvLnByb3RvdHlwZS5vcGVuQ2x1c3Rlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsdXN0ZXJpbmcub3BlbkNsdXN0ZXIuYXBwbHkodGhpcy5jbHVzdGVyaW5nLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmNsdXN0ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbHVzdGVyaW5nLmNsdXN0ZXIuYXBwbHkodGhpcy5jbHVzdGVyaW5nLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmdldE5vZGVzSW5DbHVzdGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2x1c3RlcmluZy5nZXROb2Rlc0luQ2x1c3Rlci5hcHBseSh0aGlzLmNsdXN0ZXJpbmcsYXJndW1lbnRzKX0sby5wcm90b3R5cGUuY2x1c3RlckJ5Q29ubmVjdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsdXN0ZXJpbmcuY2x1c3RlckJ5Q29ubmVjdGlvbi5hcHBseSh0aGlzLmNsdXN0ZXJpbmcsYXJndW1lbnRzKX0sby5wcm90b3R5cGUuY2x1c3RlckJ5SHVic2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsdXN0ZXJpbmcuY2x1c3RlckJ5SHVic2l6ZS5hcHBseSh0aGlzLmNsdXN0ZXJpbmcsYXJndW1lbnRzKX0sby5wcm90b3R5cGUuY2x1c3Rlck91dGxpZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2x1c3RlcmluZy5jbHVzdGVyT3V0bGllcnMuYXBwbHkodGhpcy5jbHVzdGVyaW5nLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmdldFNlZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYXlvdXRFbmdpbmUuZ2V0U2VlZC5hcHBseSh0aGlzLmxheW91dEVuZ2luZSxhcmd1bWVudHMpfSxvLnByb3RvdHlwZS5lbmFibGVFZGl0TW9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1hbmlwdWxhdGlvbi5lbmFibGVFZGl0TW9kZS5hcHBseSh0aGlzLm1hbmlwdWxhdGlvbixhcmd1bWVudHMpfSxvLnByb3RvdHlwZS5kaXNhYmxlRWRpdE1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYW5pcHVsYXRpb24uZGlzYWJsZUVkaXRNb2RlLmFwcGx5KHRoaXMubWFuaXB1bGF0aW9uLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmFkZE5vZGVNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFuaXB1bGF0aW9uLmFkZE5vZGVNb2RlLmFwcGx5KHRoaXMubWFuaXB1bGF0aW9uLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmVkaXROb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFuaXB1bGF0aW9uLmVkaXROb2RlLmFwcGx5KHRoaXMubWFuaXB1bGF0aW9uLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmVkaXROb2RlTW9kZT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLmxvZygiRGVwcmVjYXRlZDogUGxlYXNlIHVzZSBlZGl0Tm9kZSBpbnN0ZWFkIG9mIGVkaXROb2RlTW9kZS4iKSx0aGlzLm1hbmlwdWxhdGlvbi5lZGl0Tm9kZS5hcHBseSh0aGlzLm1hbmlwdWxhdGlvbixhcmd1bWVudHMpfSxvLnByb3RvdHlwZS5hZGRFZGdlTW9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1hbmlwdWxhdGlvbi5hZGRFZGdlTW9kZS5hcHBseSh0aGlzLm1hbmlwdWxhdGlvbixhcmd1bWVudHMpfSxvLnByb3RvdHlwZS5lZGl0RWRnZU1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYW5pcHVsYXRpb24uZWRpdEVkZ2VNb2RlLmFwcGx5KHRoaXMubWFuaXB1bGF0aW9uLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmRlbGV0ZVNlbGVjdGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFuaXB1bGF0aW9uLmRlbGV0ZVNlbGVjdGVkLmFwcGx5KHRoaXMubWFuaXB1bGF0aW9uLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmdldFBvc2l0aW9ucz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGVzSGFuZGxlci5nZXRQb3NpdGlvbnMuYXBwbHkodGhpcy5ub2Rlc0hhbmRsZXIsYXJndW1lbnRzKX0sby5wcm90b3R5cGUuc3RvcmVQb3NpdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2Rlc0hhbmRsZXIuc3RvcmVQb3NpdGlvbnMuYXBwbHkodGhpcy5ub2Rlc0hhbmRsZXIsYXJndW1lbnRzKX0sby5wcm90b3R5cGUubW92ZU5vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2Rlc0hhbmRsZXIubW92ZU5vZGUuYXBwbHkodGhpcy5ub2Rlc0hhbmRsZXIsYXJndW1lbnRzKX0sby5wcm90b3R5cGUuZ2V0Qm91bmRpbmdCb3g9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2Rlc0hhbmRsZXIuZ2V0Qm91bmRpbmdCb3guYXBwbHkodGhpcy5ub2Rlc0hhbmRsZXIsYXJndW1lbnRzKX0sby5wcm90b3R5cGUuZ2V0Q29ubmVjdGVkTm9kZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuYm9keS5ub2Rlc1t0XT90aGlzLm5vZGVzSGFuZGxlci5nZXRDb25uZWN0ZWROb2Rlcy5hcHBseSh0aGlzLm5vZGVzSGFuZGxlcixhcmd1bWVudHMpOnRoaXMuZWRnZXNIYW5kbGVyLmdldENvbm5lY3RlZE5vZGVzLmFwcGx5KHRoaXMuZWRnZXNIYW5kbGVyLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmdldENvbm5lY3RlZEVkZ2VzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZXNIYW5kbGVyLmdldENvbm5lY3RlZEVkZ2VzLmFwcGx5KHRoaXMubm9kZXNIYW5kbGVyLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLnN0YXJ0U2ltdWxhdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBoeXNpY3Muc3RhcnRTaW11bGF0aW9uLmFwcGx5KHRoaXMucGh5c2ljcyxhcmd1bWVudHMpfSxvLnByb3RvdHlwZS5zdG9wU2ltdWxhdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBoeXNpY3Muc3RvcFNpbXVsYXRpb24uYXBwbHkodGhpcy5waHlzaWNzLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLnN0YWJpbGl6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBoeXNpY3Muc3RhYmlsaXplLmFwcGx5KHRoaXMucGh5c2ljcyxhcmd1bWVudHMpfSxvLnByb3RvdHlwZS5nZXRTZWxlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb25IYW5kbGVyLmdldFNlbGVjdGlvbi5hcHBseSh0aGlzLnNlbGVjdGlvbkhhbmRsZXIsYXJndW1lbnRzKX0sby5wcm90b3R5cGUuc2V0U2VsZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uSGFuZGxlci5zZXRTZWxlY3Rpb24uYXBwbHkodGhpcy5zZWxlY3Rpb25IYW5kbGVyLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmdldFNlbGVjdGVkTm9kZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb25IYW5kbGVyLmdldFNlbGVjdGVkTm9kZXMuYXBwbHkodGhpcy5zZWxlY3Rpb25IYW5kbGVyLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmdldFNlbGVjdGVkRWRnZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb25IYW5kbGVyLmdldFNlbGVjdGVkRWRnZXMuYXBwbHkodGhpcy5zZWxlY3Rpb25IYW5kbGVyLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmdldE5vZGVBdD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuc2VsZWN0aW9uSGFuZGxlci5nZXROb2RlQXQuYXBwbHkodGhpcy5zZWxlY3Rpb25IYW5kbGVyLGFyZ3VtZW50cyk7cmV0dXJuIHZvaWQgMCE9PXQmJnZvaWQgMCE9PXQuaWQ/dC5pZDp0fSxvLnByb3RvdHlwZS5nZXRFZGdlQXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNlbGVjdGlvbkhhbmRsZXIuZ2V0RWRnZUF0LmFwcGx5KHRoaXMuc2VsZWN0aW9uSGFuZGxlcixhcmd1bWVudHMpO3JldHVybiB2b2lkIDAhPT10JiZ2b2lkIDAhPT10LmlkP3QuaWQ6dH0sby5wcm90b3R5cGUuc2VsZWN0Tm9kZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb25IYW5kbGVyLnNlbGVjdE5vZGVzLmFwcGx5KHRoaXMuc2VsZWN0aW9uSGFuZGxlcixhcmd1bWVudHMpfSxvLnByb3RvdHlwZS5zZWxlY3RFZGdlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvbkhhbmRsZXIuc2VsZWN0RWRnZXMuYXBwbHkodGhpcy5zZWxlY3Rpb25IYW5kbGVyLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLnVuc2VsZWN0QWxsPWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rpb25IYW5kbGVyLnVuc2VsZWN0QWxsLmFwcGx5KHRoaXMuc2VsZWN0aW9uSGFuZGxlcixhcmd1bWVudHMpLHRoaXMucmVkcmF3KCl9LG8ucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlcmVyLnJlZHJhdy5hcHBseSh0aGlzLnJlbmRlcmVyLGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmdldFNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmlldy5nZXRTY2FsZS5hcHBseSh0aGlzLnZpZXcsYXJndW1lbnRzKX0sby5wcm90b3R5cGUuZ2V0Vmlld1Bvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmlldy5nZXRWaWV3UG9zaXRpb24uYXBwbHkodGhpcy52aWV3LGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmZpdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZpZXcuZml0LmFwcGx5KHRoaXMudmlldyxhcmd1bWVudHMpfSxvLnByb3RvdHlwZS5tb3ZlVG89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52aWV3Lm1vdmVUby5hcHBseSh0aGlzLnZpZXcsYXJndW1lbnRzKX0sby5wcm90b3R5cGUuZm9jdXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52aWV3LmZvY3VzLmFwcGx5KHRoaXMudmlldyxhcmd1bWVudHMpfSxvLnByb3RvdHlwZS5yZWxlYXNlTm9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZpZXcucmVsZWFzZU5vZGUuYXBwbHkodGhpcy52aWV3LGFyZ3VtZW50cyl9LG8ucHJvdG90eXBlLmdldE9wdGlvbnNGcm9tQ29uZmlndXJhdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9e307cmV0dXJuIHRoaXMuY29uZmlndXJhdG9yJiYodD10aGlzLmNvbmZpZ3VyYXRvci5nZXRPcHRpb25zLmFwcGx5KHRoaXMuY29uZmlndXJhdG9yKSksdH0sdC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSl7InVuZGVmaW5lZCIhPXR5cGVvZiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQmJihDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQucHJvdG90eXBlLmNpcmNsZT1mdW5jdGlvbih0LGUsaSl7dGhpcy5iZWdpblBhdGgoKSx0aGlzLmFyYyh0LGUsaSwwLDIqTWF0aC5QSSwhMSksdGhpcy5jbG9zZVBhdGgoKX0sQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnByb3RvdHlwZS5zcXVhcmU9ZnVuY3Rpb24odCxlLGkpe3RoaXMuYmVnaW5QYXRoKCksdGhpcy5yZWN0KHQtaSxlLWksMippLDIqaSksdGhpcy5jbG9zZVBhdGgoKX0sQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnByb3RvdHlwZS50cmlhbmdsZT1mdW5jdGlvbih0LGUsaSl7dGhpcy5iZWdpblBhdGgoKSxpKj0xLjE1LGUrPS4yNzUqaTt2YXIgbz0yKmksbj1vLzIscz1NYXRoLnNxcnQoMykvNipvLHI9TWF0aC5zcXJ0KG8qby1uKm4pO3RoaXMubW92ZVRvKHQsZS0oci1zKSksdGhpcy5saW5lVG8odCtuLGUrcyksdGhpcy5saW5lVG8odC1uLGUrcyksdGhpcy5saW5lVG8odCxlLShyLXMpKSx0aGlzLmNsb3NlUGF0aCgpfSxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQucHJvdG90eXBlLnRyaWFuZ2xlRG93bj1mdW5jdGlvbih0LGUsaSl7dGhpcy5iZWdpblBhdGgoKSxpKj0xLjE1LGUtPS4yNzUqaTt2YXIgbz0yKmksbj1vLzIscz1NYXRoLnNxcnQoMykvNipvLHI9TWF0aC5zcXJ0KG8qby1uKm4pO3RoaXMubW92ZVRvKHQsZSsoci1zKSksdGhpcy5saW5lVG8odCtuLGUtcyksdGhpcy5saW5lVG8odC1uLGUtcyksdGhpcy5saW5lVG8odCxlKyhyLXMpKSx0aGlzLmNsb3NlUGF0aCgpfSxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQucHJvdG90eXBlLnN0YXI9ZnVuY3Rpb24odCxlLGkpe3RoaXMuYmVnaW5QYXRoKCksaSo9LjgyLGUrPS4xKmk7Zm9yKHZhciBvPTA7bzwxMDtvKyspe3ZhciBuPW8lMj09MD8xLjMqaTouNSppO3RoaXMubGluZVRvKHQrbipNYXRoLnNpbigyKm8qTWF0aC5QSS8xMCksZS1uKk1hdGguY29zKDIqbypNYXRoLlBJLzEwKSl9dGhpcy5jbG9zZVBhdGgoKX0sQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnByb3RvdHlwZS5kaWFtb25kPWZ1bmN0aW9uKHQsZSxpKXt0aGlzLmJlZ2luUGF0aCgpLHRoaXMubGluZVRvKHQsZStpKSx0aGlzLmxpbmVUbyh0K2ksZSksdGhpcy5saW5lVG8odCxlLWkpLHRoaXMubGluZVRvKHQtaSxlKSx0aGlzLmNsb3NlUGF0aCgpfSxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQucHJvdG90eXBlLnJvdW5kUmVjdD1mdW5jdGlvbih0LGUsaSxvLG4pe3ZhciBzPU1hdGguUEkvMTgwO2ktMipuPDAmJihuPWkvMiksby0yKm48MCYmKG49by8yKSx0aGlzLmJlZ2luUGF0aCgpLHRoaXMubW92ZVRvKHQrbixlKSx0aGlzLmxpbmVUbyh0K2ktbixlKSx0aGlzLmFyYyh0K2ktbixlK24sbiwyNzAqcywzNjAqcywhMSksdGhpcy5saW5lVG8odCtpLGUrby1uKSx0aGlzLmFyYyh0K2ktbixlK28tbixuLDAsOTAqcywhMSksdGhpcy5saW5lVG8odCtuLGUrbyksdGhpcy5hcmModCtuLGUrby1uLG4sOTAqcywxODAqcywhMSksdGhpcy5saW5lVG8odCxlK24pLHRoaXMuYXJjKHQrbixlK24sbiwxODAqcywyNzAqcywhMSksdGhpcy5jbG9zZVBhdGgoKX0sQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnByb3RvdHlwZS5lbGxpcHNlX3Zpcz1mdW5jdGlvbih0LGUsaSxvKXt2YXIgbj1pLzIqLjU1MjI4NDgscz1vLzIqLjU1MjI4NDgscj10K2ksYT1lK28saD10K2kvMixkPWUrby8yO3RoaXMuYmVnaW5QYXRoKCksdGhpcy5tb3ZlVG8odCxkKSx0aGlzLmJlemllckN1cnZlVG8odCxkLXMsaC1uLGUsaCxlKSx0aGlzLmJlemllckN1cnZlVG8oaCtuLGUscixkLXMscixkKSx0aGlzLmJlemllckN1cnZlVG8ocixkK3MsaCtuLGEsaCxhKSx0aGlzLmJlemllckN1cnZlVG8oaC1uLGEsdCxkK3MsdCxkKSx0aGlzLmNsb3NlUGF0aCgpfSxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQucHJvdG90eXBlLmRhdGFiYXNlPWZ1bmN0aW9uKHQsZSxpLG8pe3ZhciBuPWkscz1vKigxLzMpLHI9bi8yKi41NTIyODQ4LGE9cy8yKi41NTIyODQ4LGg9dCtuLGQ9ZStzLGw9dCtuLzIsdT1lK3MvMixjPWUrKG8tcy8yKSxwPWUrbzt0aGlzLmJlZ2luUGF0aCgpLHRoaXMubW92ZVRvKGgsdSksdGhpcy5iZXppZXJDdXJ2ZVRvKGgsdSthLGwrcixkLGwsZCksdGhpcy5iZXppZXJDdXJ2ZVRvKGwtcixkLHQsdSthLHQsdSksdGhpcy5iZXppZXJDdXJ2ZVRvKHQsdS1hLGwtcixlLGwsZSksdGhpcy5iZXppZXJDdXJ2ZVRvKGwrcixlLGgsdS1hLGgsdSksdGhpcy5saW5lVG8oaCxjKSx0aGlzLmJlemllckN1cnZlVG8oaCxjK2EsbCtyLHAsbCxwKSx0aGlzLmJlemllckN1cnZlVG8obC1yLHAsdCxjK2EsdCxjKSx0aGlzLmxpbmVUbyh0LHUpfSxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQucHJvdG90eXBlLmFycm93RW5kcG9pbnQ9ZnVuY3Rpb24odCxlLGksbyl7dmFyIG49dC1vKk1hdGguY29zKGkpLHM9ZS1vKk1hdGguc2luKGkpLHI9dC0uOSpvKk1hdGguY29zKGkpLGE9ZS0uOSpvKk1hdGguc2luKGkpLGg9bitvLzMqTWF0aC5jb3MoaSsuNSpNYXRoLlBJKSxkPXMrby8zKk1hdGguc2luKGkrLjUqTWF0aC5QSSksbD1uK28vMypNYXRoLmNvcyhpLS41Kk1hdGguUEkpLHU9cytvLzMqTWF0aC5zaW4oaS0uNSpNYXRoLlBJKTt0aGlzLmJlZ2luUGF0aCgpLHRoaXMubW92ZVRvKHQsZSksdGhpcy5saW5lVG8oaCxkKSx0aGlzLmxpbmVUbyhyLGEpLHRoaXMubGluZVRvKGwsdSksdGhpcy5jbG9zZVBhdGgoKX0sQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnByb3RvdHlwZS5jaXJjbGVFbmRwb2ludD1mdW5jdGlvbih0LGUsaSxvKXt2YXIgbj0uNCpvLHM9dC1uKk1hdGguY29zKGkpLHI9ZS1uKk1hdGguc2luKGkpO3RoaXMuY2lyY2xlKHMscixuKX0sQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnByb3RvdHlwZS5kYXNoZWRMaW5lPWZ1bmN0aW9uKHQsZSxpLG8sbil7dGhpcy5iZWdpblBhdGgoKSx0aGlzLm1vdmVUbyh0LGUpO2Zvcih2YXIgcz1uLmxlbmd0aCxyPWktdCxhPW8tZSxoPWEvcixkPU1hdGguc3FydChyKnIrYSphKSxsPTAsdT0hMCxjPTAscD1uWzBdO2Q+PS4xOylwPW5bbCsrJXNdLHA+ZCYmKHA9ZCksYz1NYXRoLnNxcnQocCpwLygxK2gqaCkpLGM9cjwwPy1jOmMsdCs9YyxlKz1oKmMsITA9PT11P3RoaXMubGluZVRvKHQsZSk6dGhpcy5tb3ZlVG8odCxlKSxkLT1wLHU9IXV9KX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIEE9dCxmKCl9ZnVuY3Rpb24gbigpe1I9MCx6PUEuY2hhckF0KDApfWZ1bmN0aW9uIHMoKXtSKyssej1BLmNoYXJBdChSKX1mdW5jdGlvbiByKCl7cmV0dXJuIEEuY2hhckF0KFIrMSl9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gQi50ZXN0KHQpfWZ1bmN0aW9uIGgodCxlKXtpZih0fHwodD17fSksDQplKWZvcih2YXIgaSBpbiBlKWUuaGFzT3duUHJvcGVydHkoaSkmJih0W2ldPWVbaV0pO3JldHVybiB0fWZ1bmN0aW9uIGQodCxlLGkpe2Zvcih2YXIgbz1lLnNwbGl0KCIuIiksbj10O28ubGVuZ3RoOyl7dmFyIHM9by5zaGlmdCgpO28ubGVuZ3RoPyhuW3NdfHwobltzXT17fSksbj1uW3NdKTpuW3NdPWl9fWZ1bmN0aW9uIGwodCxlKXtmb3IodmFyIGksbyxuPW51bGwscz1bdF0scj10O3IucGFyZW50OylzLnB1c2goci5wYXJlbnQpLHI9ci5wYXJlbnQ7aWYoci5ub2Rlcylmb3IoaT0wLG89ci5ub2Rlcy5sZW5ndGg7aTxvO2krKylpZihlLmlkPT09ci5ub2Rlc1tpXS5pZCl7bj1yLm5vZGVzW2ldO2JyZWFrfWZvcihufHwobj17aWQ6ZS5pZH0sdC5ub2RlJiYobi5hdHRyPWgobi5hdHRyLHQubm9kZSkpKSxpPXMubGVuZ3RoLTE7aT49MDtpLS0pe3ZhciBhPXNbaV07YS5ub2Rlc3x8KGEubm9kZXM9W10pLC0xPT09YS5ub2Rlcy5pbmRleE9mKG4pJiZhLm5vZGVzLnB1c2gobil9ZS5hdHRyJiYobi5hdHRyPWgobi5hdHRyLGUuYXR0cikpfWZ1bmN0aW9uIHUodCxlKXtpZih0LmVkZ2VzfHwodC5lZGdlcz1bXSksdC5lZGdlcy5wdXNoKGUpLHQuZWRnZSl7dmFyIGk9aCh7fSx0LmVkZ2UpO2UuYXR0cj1oKGksZS5hdHRyKX19ZnVuY3Rpb24gYyh0LGUsaSxvLG4pe3ZhciBzPXtmcm9tOmUsdG86aSx0eXBlOm99O3JldHVybiB0LmVkZ2UmJihzLmF0dHI9aCh7fSx0LmVkZ2UpKSxzLmF0dHI9aChzLmF0dHJ8fHt9LG4pLHN9ZnVuY3Rpb24gcCgpe2ZvcihGPUkuTlVMTCxMPSIiOyIgIj09PXp8fCJcdCI9PT16fHwiXG4iPT09enx8IlxyIj09PXo7KXMoKTtkb3t2YXIgdD0hMTtpZigiIyI9PT16KXtmb3IodmFyIGU9Ui0xOyIgIj09PUEuY2hhckF0KGUpfHwiXHQiPT09QS5jaGFyQXQoZSk7KWUtLTtpZigiXG4iPT09QS5jaGFyQXQoZSl8fCIiPT09QS5jaGFyQXQoZSkpe2Zvcig7IiIhPXomJiJcbiIhPXo7KXMoKTt0PSEwfX1pZigiLyI9PT16JiYiLyI9PT1yKCkpe2Zvcig7IiIhPXomJiJcbiIhPXo7KXMoKTt0PSEwfWlmKCIvIj09PXomJiIqIj09PXIoKSl7Zm9yKDsiIiE9ejspe2lmKCIqIj09PXomJiIvIj09PXIoKSl7cygpLHMoKTticmVha31zKCl9dD0hMH1mb3IoOyIgIj09PXp8fCJcdCI9PT16fHwiXG4iPT09enx8IlxyIj09PXo7KXMoKX13aGlsZSh0KTtpZigiIj09PXopcmV0dXJuIHZvaWQoRj1JLkRFTElNSVRFUik7dmFyIGk9eityKCk7aWYoTltpXSlyZXR1cm4gRj1JLkRFTElNSVRFUixMPWkscygpLHZvaWQgcygpO2lmKE5bel0pcmV0dXJuIEY9SS5ERUxJTUlURVIsTD16LHZvaWQgcygpO2lmKGEoeil8fCItIj09PXope2ZvcihMKz16LHMoKTthKHopOylMKz16LHMoKTtyZXR1cm4iZmFsc2UiPT09TD9MPSExOiJ0cnVlIj09PUw/TD0hMDppc05hTihOdW1iZXIoTCkpfHwoTD1OdW1iZXIoTCkpLHZvaWQoRj1JLklERU5USUZJRVIpfWlmKCciJz09PXope2ZvcihzKCk7IiIhPXomJignIichPXp8fCciJz09PXomJiciJz09PXIoKSk7KSciJz09PXo/KEwrPXoscygpKToiXFwiPT09eiYmIm4iPT09cigpPyhMKz0iXG4iLHMoKSk6TCs9eixzKCk7aWYoJyInIT16KXRocm93IHgoJ0VuZCBvZiBzdHJpbmcgIiBleHBlY3RlZCcpO3JldHVybiBzKCksdm9pZChGPUkuSURFTlRJRklFUil9Zm9yKEY9SS5VTktOT1dOOyIiIT16OylMKz16LHMoKTt0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1N5bnRheCBlcnJvciBpbiBwYXJ0ICInK2soTCwzMCkrJyInKX1mdW5jdGlvbiBmKCl7dmFyIHQ9e307aWYobigpLHAoKSwic3RyaWN0Ij09PUwmJih0LnN0cmljdD0hMCxwKCkpLCJncmFwaCIhPT1MJiYiZGlncmFwaCIhPT1MfHwodC50eXBlPUwscCgpKSxGPT09SS5JREVOVElGSUVSJiYodC5pZD1MLHAoKSksInsiIT1MKXRocm93IHgoIkFuZ2xlIGJyYWNrZXQgeyBleHBlY3RlZCIpO2lmKHAoKSxtKHQpLCJ9IiE9TCl0aHJvdyB4KCJBbmdsZSBicmFja2V0IH0gZXhwZWN0ZWQiKTtpZihwKCksIiIhPT1MKXRocm93IHgoIkVuZCBvZiBmaWxlIGV4cGVjdGVkIik7cmV0dXJuIHAoKSxkZWxldGUgdC5ub2RlLGRlbGV0ZSB0LmVkZ2UsZGVsZXRlIHQuZ3JhcGgsdH1mdW5jdGlvbiBtKHQpe2Zvcig7IiIhPT1MJiYifSIhPUw7KXYodCksIjsiPT09TCYmcCgpfWZ1bmN0aW9uIHYodCl7dmFyIGU9Zyh0KTtpZihlKXJldHVybiB2b2lkIF8odCxlKTtpZigheSh0KSl7aWYoRiE9SS5JREVOVElGSUVSKXRocm93IHgoIklkZW50aWZpZXIgZXhwZWN0ZWQiKTt2YXIgaT1MO2lmKHAoKSwiPSI9PT1MKXtpZihwKCksRiE9SS5JREVOVElGSUVSKXRocm93IHgoIklkZW50aWZpZXIgZXhwZWN0ZWQiKTt0W2ldPUwscCgpfWVsc2UgYih0LGkpfX1mdW5jdGlvbiBnKHQpe3ZhciBlPW51bGw7aWYoInN1YmdyYXBoIj09PUwmJihlPXt9LGUudHlwZT0ic3ViZ3JhcGgiLHAoKSxGPT09SS5JREVOVElGSUVSJiYoZS5pZD1MLHAoKSkpLCJ7Ij09PUwpe2lmKHAoKSxlfHwoZT17fSksZS5wYXJlbnQ9dCxlLm5vZGU9dC5ub2RlLGUuZWRnZT10LmVkZ2UsZS5ncmFwaD10LmdyYXBoLG0oZSksIn0iIT1MKXRocm93IHgoIkFuZ2xlIGJyYWNrZXQgfSBleHBlY3RlZCIpO3AoKSxkZWxldGUgZS5ub2RlLGRlbGV0ZSBlLmVkZ2UsZGVsZXRlIGUuZ3JhcGgsZGVsZXRlIGUucGFyZW50LHQuc3ViZ3JhcGhzfHwodC5zdWJncmFwaHM9W10pLHQuc3ViZ3JhcGhzLnB1c2goZSl9cmV0dXJuIGV9ZnVuY3Rpb24geSh0KXtyZXR1cm4ibm9kZSI9PT1MPyhwKCksdC5ub2RlPXcoKSwibm9kZSIpOiJlZGdlIj09PUw/KHAoKSx0LmVkZ2U9dygpLCJlZGdlIik6ImdyYXBoIj09PUw/KHAoKSx0LmdyYXBoPXcoKSwiZ3JhcGgiKTpudWxsfWZ1bmN0aW9uIGIodCxlKXt2YXIgaT17aWQ6ZX0sbz13KCk7byYmKGkuYXR0cj1vKSxsKHQsaSksXyh0LGUpfWZ1bmN0aW9uIF8odCxlKXtmb3IoOyItPiI9PT1MfHwiLS0iPT09TDspe3ZhciBpLG89TDtwKCk7dmFyIG49Zyh0KTtpZihuKWk9bjtlbHNle2lmKEYhPUkuSURFTlRJRklFUil0aHJvdyB4KCJJZGVudGlmaWVyIG9yIHN1YmdyYXBoIGV4cGVjdGVkIik7aT1MLGwodCx7aWQ6aX0pLHAoKX11KHQsYyh0LGUsaSxvLHcoKSkpLGU9aX19ZnVuY3Rpb24gdygpe2Zvcih2YXIgdD1udWxsOyJbIj09PUw7KXtmb3IocCgpLHQ9e307IiIhPT1MJiYiXSIhPUw7KXtpZihGIT1JLklERU5USUZJRVIpdGhyb3cgeCgiQXR0cmlidXRlIG5hbWUgZXhwZWN0ZWQiKTt2YXIgZT1MO2lmKHAoKSwiPSIhPUwpdGhyb3cgeCgiRXF1YWwgc2lnbiA9IGV4cGVjdGVkIik7aWYocCgpLEYhPUkuSURFTlRJRklFUil0aHJvdyB4KCJBdHRyaWJ1dGUgdmFsdWUgZXhwZWN0ZWQiKTtkKHQsZSxMKSxwKCksIiwiPT1MJiZwKCl9aWYoIl0iIT1MKXRocm93IHgoIkJyYWNrZXQgXSBleHBlY3RlZCIpO3AoKX1yZXR1cm4gdH1mdW5jdGlvbiB4KHQpe3JldHVybiBuZXcgU3ludGF4RXJyb3IodCsnLCBnb3QgIicrayhMLDMwKSsnIiAoY2hhciAnK1IrIikiKX1mdW5jdGlvbiBrKHQsZSl7cmV0dXJuIHQubGVuZ3RoPD1lP3Q6dC5zdWJzdHIoMCwyNykrIi4uLiJ9ZnVuY3Rpb24gRCh0LGUsaSl7QXJyYXkuaXNBcnJheSh0KT90LmZvckVhY2goZnVuY3Rpb24odCl7QXJyYXkuaXNBcnJheShlKT9lLmZvckVhY2goZnVuY3Rpb24oZSl7aSh0LGUpfSk6aSh0LGUpfSk6QXJyYXkuaXNBcnJheShlKT9lLmZvckVhY2goZnVuY3Rpb24oZSl7aSh0LGUpfSk6aSh0LGUpfWZ1bmN0aW9uIE0odCxlLGkpe2Zvcih2YXIgbz1lLnNwbGl0KCIuIiksbj1vLnBvcCgpLHM9dCxyPTA7cjxvLmxlbmd0aDtyKyspe3ZhciBhPW9bcl07YSBpbiBzfHwoc1thXT17fSkscz1zW2FdfXJldHVybiBzW25dPWksdH1mdW5jdGlvbiBTKHQsZSl7dmFyIGk9e307Zm9yKHZhciBvIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShvKSl7dmFyIG49ZVtvXTtBcnJheS5pc0FycmF5KG4pP24uZm9yRWFjaChmdW5jdGlvbihlKXtNKGksZSx0W29dKX0pOiJzdHJpbmciPT10eXBlb2Ygbj9NKGksbix0W29dKTpNKGksbyx0W29dKX1yZXR1cm4gaX1mdW5jdGlvbiBPKHQpe3ZhciBlPW8odCksaT17bm9kZXM6W10sZWRnZXM6W10sb3B0aW9uczp7fX07aWYoZS5ub2RlcyYmZS5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPXtpZDp0LmlkLGxhYmVsOlN0cmluZyh0LmxhYmVsfHx0LmlkKX07aChlLFModC5hdHRyLEUpKSxlLmltYWdlJiYoZS5zaGFwZT0iaW1hZ2UiKSxpLm5vZGVzLnB1c2goZSl9KSxlLmVkZ2VzKXt2YXIgbj1mdW5jdGlvbih0KXt2YXIgZT17ZnJvbTp0LmZyb20sdG86dC50b307cmV0dXJuIGgoZSxTKHQuYXR0cixQKSksZS5hcnJvd3M9Ii0+Ij09PXQudHlwZT8idG8iOnZvaWQgMCxlfTtlLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGUsbztlPXQuZnJvbSBpbnN0YW5jZW9mIE9iamVjdD90LmZyb20ubm9kZXM6e2lkOnQuZnJvbX0sbz10LnRvIGluc3RhbmNlb2YgT2JqZWN0P3QudG8ubm9kZXM6e2lkOnQudG99LHQuZnJvbSBpbnN0YW5jZW9mIE9iamVjdCYmdC5mcm9tLmVkZ2VzJiZ0LmZyb20uZWRnZXMuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1uKHQpO2kuZWRnZXMucHVzaChlKX0pLEQoZSxvLGZ1bmN0aW9uKGUsbyl7dmFyIHM9YyhpLGUuaWQsby5pZCx0LnR5cGUsdC5hdHRyKSxyPW4ocyk7aS5lZGdlcy5wdXNoKHIpfSksdC50byBpbnN0YW5jZW9mIE9iamVjdCYmdC50by5lZGdlcyYmdC50by5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPW4odCk7aS5lZGdlcy5wdXNoKGUpfSl9KX1yZXR1cm4gZS5hdHRyJiYoaS5vcHRpb25zPWUuYXR0ciksaX12YXIgQz1pKDU1KSxUPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX0oQyksRT17Zm9udHNpemU6ImZvbnQuc2l6ZSIsZm9udGNvbG9yOiJmb250LmNvbG9yIixsYWJlbGZvbnRjb2xvcjoiZm9udC5jb2xvciIsZm9udG5hbWU6ImZvbnQuZmFjZSIsY29sb3I6WyJjb2xvci5ib3JkZXIiLCJjb2xvci5iYWNrZ3JvdW5kIl0sZmlsbGNvbG9yOiJjb2xvci5iYWNrZ3JvdW5kIix0b29sdGlwOiJ0aXRsZSIsbGFiZWx0b29sdGlwOiJ0aXRsZSJ9LFA9KDAsVC5kZWZhdWx0KShFKTtQLmNvbG9yPSJjb2xvci5jb2xvciI7dmFyIEk9e05VTEw6MCxERUxJTUlURVI6MSxJREVOVElGSUVSOjIsVU5LTk9XTjozfSxOPXsieyI6ITAsIn0iOiEwLCJbIjohMCwiXSI6ITAsIjsiOiEwLCI9IjohMCwiLCI6ITAsIi0+IjohMCwiLS0iOiEwfSxBPSIiLFI9MCx6PSIiLEw9IiIsRj1JLk5VTEwsQj0vW2EtekEtWl8wLTkuOiNdLztlLnBhcnNlRE9UPW8sZS5ET1RUb0dyYXBoPU99LGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSh0LGUpe3ZhciBpPVtdLG89W10sbj17ZWRnZXM6e2luaGVyaXRDb2xvcjohMX0sbm9kZXM6e2ZpeGVkOiExLHBhcnNlQ29sb3I6ITF9fTt2b2lkIDAhPT1lJiYodm9pZCAwIT09ZS5maXhlZCYmKG4ubm9kZXMuZml4ZWQ9ZS5maXhlZCksdm9pZCAwIT09ZS5wYXJzZUNvbG9yJiYobi5ub2Rlcy5wYXJzZUNvbG9yPWUucGFyc2VDb2xvciksdm9pZCAwIT09ZS5pbmhlcml0Q29sb3ImJihuLmVkZ2VzLmluaGVyaXRDb2xvcj1lLmluaGVyaXRDb2xvcikpO2Zvcih2YXIgcz10LmVkZ2VzLHI9dC5ub2RlcyxhPTA7YTxzLmxlbmd0aDthKyspe3ZhciBoPXt9LGQ9c1thXTtoLmlkPWQuaWQsaC5mcm9tPWQuc291cmNlLGgudG89ZC50YXJnZXQsaC5hdHRyaWJ1dGVzPWQuYXR0cmlidXRlcyxoLmxhYmVsPWQubGFiZWwsaC50aXRsZT12b2lkIDAhPT1kLmF0dHJpYnV0ZXM/ZC5hdHRyaWJ1dGVzLnRpdGxlOnZvaWQgMCwiRGlyZWN0ZWQiPT09ZC50eXBlJiYoaC5hcnJvd3M9InRvIiksZC5jb2xvciYmITE9PT1uLmluaGVyaXRDb2xvciYmKGguY29sb3I9ZC5jb2xvciksaS5wdXNoKGgpfWZvcih2YXIgYT0wO2E8ci5sZW5ndGg7YSsrKXt2YXIgbD17fSx1PXJbYV07bC5pZD11LmlkLGwuYXR0cmlidXRlcz11LmF0dHJpYnV0ZXMsbC54PXUueCxsLnk9dS55LGwubGFiZWw9dS5sYWJlbCxsLnRpdGxlPXZvaWQgMCE9PXUuYXR0cmlidXRlcz91LmF0dHJpYnV0ZXMudGl0bGU6dS50aXRsZSwhMD09PW4ubm9kZXMucGFyc2VDb2xvcj9sLmNvbG9yPXUuY29sb3I6bC5jb2xvcj12b2lkIDAhPT11LmNvbG9yP3tiYWNrZ3JvdW5kOnUuY29sb3IsYm9yZGVyOnUuY29sb3IsaGlnaGxpZ2h0OntiYWNrZ3JvdW5kOnUuY29sb3IsYm9yZGVyOnUuY29sb3J9LGhvdmVyOntiYWNrZ3JvdW5kOnUuY29sb3IsYm9yZGVyOnUuY29sb3J9fTp2b2lkIDAsbC5zaXplPXUuc2l6ZSxsLmZpeGVkPW4ubm9kZXMuZml4ZWQmJnZvaWQgMCE9PXUueCYmdm9pZCAwIT09dS55LG8ucHVzaChsKX1yZXR1cm57bm9kZXM6byxlZGdlczppfX1lLnBhcnNlR2VwaGk9aX0sZnVuY3Rpb24odCxlKXtlLmVuPXtlZGl0OiJFZGl0IixkZWw6IkRlbGV0ZSBzZWxlY3RlZCIsYmFjazoiQmFjayIsYWRkTm9kZToiQWRkIE5vZGUiLGFkZEVkZ2U6IkFkZCBFZGdlIixlZGl0Tm9kZToiRWRpdCBOb2RlIixlZGl0RWRnZToiRWRpdCBFZGdlIixhZGREZXNjcmlwdGlvbjoiQ2xpY2sgaW4gYW4gZW1wdHkgc3BhY2UgdG8gcGxhY2UgYSBuZXcgbm9kZS4iLGVkZ2VEZXNjcmlwdGlvbjoiQ2xpY2sgb24gYSBub2RlIGFuZCBkcmFnIHRoZSBlZGdlIHRvIGFub3RoZXIgbm9kZSB0byBjb25uZWN0IHRoZW0uIixlZGl0RWRnZURlc2NyaXB0aW9uOiJDbGljayBvbiB0aGUgY29udHJvbCBwb2ludHMgYW5kIGRyYWcgdGhlbSB0byBhIG5vZGUgdG8gY29ubmVjdCB0byBpdC4iLGNyZWF0ZUVkZ2VFcnJvcjoiQ2Fubm90IGxpbmsgZWRnZXMgdG8gYSBjbHVzdGVyLiIsZGVsZXRlQ2x1c3RlckVycm9yOiJDbHVzdGVycyBjYW5ub3QgYmUgZGVsZXRlZC4iLGVkaXRDbHVzdGVyRXJyb3I6IkNsdXN0ZXJzIGNhbm5vdCBiZSBlZGl0ZWQuIn0sZS5lbl9FTj1lLmVuLGUuZW5fVVM9ZS5lbixlLmRlPXtlZGl0OiJFZGl0aWVyZW4iLGRlbDoiTMO2c2NoZSBBdXN3YWhsIixiYWNrOiJadXLDvGNrIixhZGROb2RlOiJLbm90ZW4gaGluenVmw7xnZW4iLGFkZEVkZ2U6IkthbnRlIGhpbnp1ZsO8Z2VuIixlZGl0Tm9kZToiS25vdGVuIGVkaXRpZXJlbiIsZWRpdEVkZ2U6IkthbnRlIGVkaXRpZXJlbiIsYWRkRGVzY3JpcHRpb246IktsaWNrZSBhdWYgZWluZSBmcmVpZSBTdGVsbGUsIHVtIGVpbmVuIG5ldWVuIEtub3RlbiB6dSBwbGF6aWVyZW4uIixlZGdlRGVzY3JpcHRpb246IktsaWNrZSBhdWYgZWluZW4gS25vdGVuIHVuZCB6aWVoZSBkaWUgS2FudGUgenUgZWluZW0gYW5kZXJlbiBLbm90ZW4sIHVtIGRpZXNlIHp1IHZlcmJpbmRlbi4iLGVkaXRFZGdlRGVzY3JpcHRpb246IktsaWNrZSBhdWYgZGllIFZlcmJpbmR1bmdzcHVua3RlIHVuZCB6aWVoZSBkaWVzZSBhdWYgZWluZW4gS25vdGVuLCB1bSBzaWUgenUgdmVyYmluZGVuLiIsY3JlYXRlRWRnZUVycm9yOiJFcyBpc3QgbmljaHQgbcO2Z2xpY2gsIEthbnRlbiBtaXQgQ2x1c3Rlcm4genUgdmVyYmluZGVuLiIsZGVsZXRlQ2x1c3RlckVycm9yOiJDbHVzdGVyIGvDtm5uZW4gbmljaHQgZ2Vsw7ZzY2h0IHdlcmRlbi4iLGVkaXRDbHVzdGVyRXJyb3I6IkNsdXN0ZXIga8O2bm5lbiBuaWNodCBlZGl0aWVydCB3ZXJkZW4uIn0sZS5kZV9ERT1lLmRlLGUuZXM9e2VkaXQ6IkVkaXRhciIsZGVsOiJFbGltaW5hciBzZWxlY2Npw7NuIixiYWNrOiLDgXRyYXMiLGFkZE5vZGU6IkHDsWFkaXIgbm9kbyIsYWRkRWRnZToiQcOxYWRpciBhcmlzdGEiLGVkaXROb2RlOiJFZGl0YXIgbm9kbyIsZWRpdEVkZ2U6IkVkaXRhciBhcmlzdGEiLGFkZERlc2NyaXB0aW9uOiJIYWdhIGNsaWMgZW4gdW4gbHVnYXIgdmFjw61vIHBhcmEgY29sb2NhciB1biBudWV2byBub2RvLiIsZWRnZURlc2NyaXB0aW9uOiJIYWdhIGNsaWMgZW4gdW4gbm9kbyB5IGFycmFzdHJlIGxhIGFyaXN0YSBoYWNpYSBvdHJvIG5vZG8gcGFyYSBjb25lY3Rhcmxvcy4iLGVkaXRFZGdlRGVzY3JpcHRpb246IkhhZ2EgY2xpYyBlbiB1biBwdW50byBkZSBjb250cm9sIHkgYXJyYXN0cmVsbyBhIHVuIG5vZG8gcGFyYSBjb25lY3RhcmxvLiIsY3JlYXRlRWRnZUVycm9yOiJObyBzZSBwdWVkZSBjb25lY3RhciB1bmEgYXJpc3RhIGEgdW4gZ3J1cG8uIixkZWxldGVDbHVzdGVyRXJyb3I6Ik5vIGVzIHBvc2libGUgZWxpbWluYXIgZ3J1cG9zLiIsZWRpdENsdXN0ZXJFcnJvcjoiTm8gZXMgcG9zaWJsZSBlZGl0YXIgZ3J1cG9zLiJ9LGUuZXNfRVM9ZS5lcyxlLml0PXtlZGl0OiJNb2RpZmljYSIsZGVsOiJDYW5jZWxsYSBsYSBzZWxlemlvbmUiLGJhY2s6IkluZGlldHJvIixhZGROb2RlOiJBZ2dpdW5naSB1biBub2RvIixhZGRFZGdlOiJBZ2dpdW5naSB1biB2ZXJ0aWNlIixlZGl0Tm9kZToiTW9kaWZpY2EgaWwgbm9kbyIsZWRpdEVkZ2U6Ik1vZGlmaWNhIGlsIHZlcnRpY2UiLGFkZERlc2NyaXB0aW9uOiJDbGljY2EgcGVyIGFnZ2l1bmdlcmUgdW4gbnVvdm8gbm9kbyIsZWRnZURlc2NyaXB0aW9uOiJDbGljY2Egc3UgdW4gbm9kbyBlIHRyYXNjaW5hbG8gYWQgdW4gYWx0cm8gbm9kbyBwZXIgY29ubmV0dGVybGkuIixlZGl0RWRnZURlc2NyaXB0aW9uOiJDbGljY2Egc3VpIFB1bnRpIGRpIGNvbnRyb2xsbyBlIHRyYXNjaW5hbGkgYWQgdW4gbm9kbyBwZXIgY29ubmV0dGVybGkuIixjcmVhdGVFZGdlRXJyb3I6Ik5vbiBzaSBwb3Nzb25vIGNvbGxlZ2FyZSB2ZXJ0aWNpIGFkIHVuIGNsdXN0ZXIiLGRlbGV0ZUNsdXN0ZXJFcnJvcjoiSSBjbHVzdGVyIG5vbiBwb3Nzb25vIGVzc2VyZSBjYW5jZWxsYXRpIixlZGl0Q2x1c3RlckVycm9yOiJJIGNsdXN0ZXJzIG5vbiBwb3Nzb25vIGVzc2VyZSBtb2RpZmljYXRpLiJ9LGUuaXRfSVQ9ZS5pdCxlLm5sPXtlZGl0OiJXaWp6aWdlbiIsZGVsOiJTZWxlY3RpZSB2ZXJ3aWpkZXJlbiIsYmFjazoiVGVydWciLGFkZE5vZGU6Ik5vZGUgdG9ldm9lZ2VuIixhZGRFZGdlOiJMaW5rIHRvZXZvZWdlbiIsZWRpdE5vZGU6Ik5vZGUgd2lqemlnZW4iLGVkaXRFZGdlOiJMaW5rIHdpanppZ2VuIixhZGREZXNjcmlwdGlvbjoiS2xpayBvcCBlZW4gbGVlZyBnZWJpZWQgb20gZWVuIG5pZXV3ZSBub2RlIHRlIG1ha2VuLiIsZWRnZURlc2NyaXB0aW9uOiJLbGlrIG9wIGVlbiBub2RlIGVuIHNsZWVwIGRlIGxpbmsgbmFhciBlZW4gYW5kZXJlIG5vZGUgb20gemUgdGUgdmVyYmluZGVuLiIsZWRpdEVkZ2VEZXNjcmlwdGlvbjoiS2xpayBvcCBkZSB2ZXJiaW5kaW5nc3B1bnRlbiBlbiBzbGVlcCB6ZSBuYWFyIGVlbiBub2RlIG9tIGRhYXJtZWUgdGUgdmVyYmluZGVuLiIsY3JlYXRlRWRnZUVycm9yOiJLYW4gZ2VlbiBsaW5rIG1ha2VuIG5hYXIgZWVuIGNsdXN0ZXIuIixkZWxldGVDbHVzdGVyRXJyb3I6IkNsdXN0ZXJzIGt1bm5lbiBuaWV0IHdvcmRlbiB2ZXJ3aWpkZXJkLiIsZWRpdENsdXN0ZXJFcnJvcjoiQ2x1c3RlcnMga3VubmVuIG5pZXQgd29yZGVuIGFhbmdlcGFzdC4ifSxlLm5sX05MPWUubmwsZS5ubF9CRT1lLm5sLGVbInB0LWJyIl09e2VkaXQ6IkVkaXRhciIsZGVsOiJSZW1vdmVyIHNlbGVjaW9uYWRvIixiYWNrOiJWb2x0YXIiLGFkZE5vZGU6IkFkaWNpb25hciBuw7MiLGFkZEVkZ2U6IkFkaWNpb25hciBhcmVzdGEiLGVkaXROb2RlOiJFZGl0YXIgbsOzIixlZGl0RWRnZToiRWRpdGFyIGFyZXN0YSIsYWRkRGVzY3JpcHRpb246IkNsaXF1ZSBlbSB1bSBlc3Bhw6dvIGVtIGJyYW5jbyBwYXJhIGFkaWNpb25hciB1bSBub3ZvIG7DsyIsZWRnZURlc2NyaXB0aW9uOiJDbGlxdWUgZW0gdW0gbsOzIGUgYXJyYXN0ZSBhIGFyZXN0YSBhdMOpIG91dHJvIG7DsyBwYXJhIGNvbmVjdMOhLWxvcyIsZWRpdEVkZ2VEZXNjcmlwdGlvbjoiQ2xpcXVlIG5vcyBwb250b3MgZGUgY29udHJvbGUgZSBvcyBhcnJhc3RlIHBhcmEgdW0gbsOzIHBhcmEgY29uZWN0w6EtbG9zIixjcmVhdGVFZGdlRXJyb3I6Ik7Do28gZm9pIHBvc3PDrXZlbCBsaW5rYXIgYXJlc3RhcyBhIHVtIGNsdXN0ZXIuIixkZWxldGVDbHVzdGVyRXJyb3I6IkNsdXN0ZXJzIG7Do28gcHVkZXJhbSBzZXIgcmVtb3ZpZG9zLiIsZWRpdENsdXN0ZXJFcnJvcjoiQ2x1c3RlcnMgbsOjbyBwdWRlcmFtIHNlciBlZGl0YWRvcy4ifSxlWyJwdC1CUiJdPWVbInB0LWJyIl0sZS5wdF9CUj1lWyJwdC1iciJdLGUucHRfYnI9ZVsicHQtYnIiXSxlLnJ1PXtlZGl0OiLQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCIsZGVsOiLQo9C00LDQu9C40YLRjCDQstGL0LHRgNCw0L3QvdC+0LUiLGJhY2s6ItCd0LDQt9Cw0LQiLGFkZE5vZGU6ItCU0L7QsdCw0LLQuNGC0Ywg0YPQt9C10LsiLGFkZEVkZ2U6ItCU0L7QsdCw0LLQuNGC0Ywg0YDQtdCx0YDQviIsZWRpdE5vZGU6ItCg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINGD0LfQtdC7IixlZGl0RWRnZToi0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0YDQtdCx0YDQviIsYWRkRGVzY3JpcHRpb246ItCa0LvQuNC60L3QuNGC0LUg0LIg0YHQstC+0LHQvtC00L3QvtC1INC80LXRgdGC0L4sINGH0YLQvtCx0Ysg0LTQvtCx0LDQstC40YLRjCDQvdC+0LLRi9C5INGD0LfQtdC7LiIsZWRnZURlc2NyaXB0aW9uOiLQmtC70LjQutC90LjRgtC1INC90LAg0YPQt9C10Lsg0Lgg0L/RgNC+0YLRj9C90LjRgtC1INGA0LXQsdGA0L4g0Log0LTRgNGD0LPQvtC80YMg0YPQt9C70YMsINGH0YLQvtCx0Ysg0YHQvtC10LTQuNC90LjRgtGMINC40YUuIixlZGl0RWRnZURlc2NyaXB0aW9uOiLQmtC70LjQutC90LjRgtC1INC90LAg0LrQvtC90YLRgNC+0LvRjNC90YvQtSDRgtC+0YfQutC4INC4INC/0LXRgNC10YLQsNGJ0LjRgtC1INC40YUg0LIg0YPQt9C10LssINGH0YLQvtCx0Ysg0L/QvtC00LrQu9GO0YfQuNGC0YzRgdGPINC6INC90LXQvNGDLiIsY3JlYXRlRWRnZUVycm9yOiLQndC10LLQvtC30LzQvtC20L3QviDRgdC+0LXQtNC40L3QuNGC0Ywg0YDQtdCx0YDQsCDQsiDQutC70LDRgdGC0LXRgC4iLGRlbGV0ZUNsdXN0ZXJFcnJvcjoi0JrQu9Cw0YHRgtC10YDRiyDQvdC1INC80L7Qs9GD0YIg0LHRi9GC0Ywg0YPQtNCw0LvQtdC90YsiLGVkaXRDbHVzdGVyRXJyb3I6ItCa0LvQsNGB0YLQtdGA0Ysg0L3QtdC00L7RgdGC0YPQv9C90Ysg0LTQu9GPINGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8uIn0sZS5ydV9SVT1lLnJ1fSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoMTM1KSxzPW8obikscj1pKDEzNiksYT1vKHIpLGg9aSgxNjYpLGQ9byhoKSxsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXsoMCxzLmRlZmF1bHQpKHRoaXMsdCksdGhpcy5pbWFnZXM9e30sdGhpcy5pbWFnZUJyb2tlbj17fSx0aGlzLmNhbGxiYWNrPWV9cmV0dXJuKDAsYS5kZWZhdWx0KSh0LFt7a2V5OiJfdHJ5bG9hZEJyb2tlblVybCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe2lmKHZvaWQgMCE9PXQmJnZvaWQgMCE9PWkpe2lmKHZvaWQgMD09PWUpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJObyBicm9rZW4gdXJsIGltYWdlIGRlZmluZWQiKTtpLm9uZXJyb3I9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJDb3VsZCBub3QgbG9hZCBicm9rZW5JbWFnZToiLGUpfSxpLmltYWdlLnNyYz1lfX19LHtrZXk6Il9yZWRyYXdXaXRoSW1hZ2UiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY2FsbGJhY2smJnRoaXMuY2FsbGJhY2sodCl9fSx7a2V5OiJsb2FkIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIG89dGhpcyxuPXRoaXMuaW1hZ2VzW3RdO2lmKG4pcmV0dXJuIG47dmFyIHM9bmV3IGQuZGVmYXVsdDtyZXR1cm4gdGhpcy5pbWFnZXNbdF09cyxzLmltYWdlLm9ubG9hZD1mdW5jdGlvbigpe28uX2ZpeEltYWdlQ29vcmRpbmF0ZXMocy5pbWFnZSkscy5pbml0KCksby5fcmVkcmF3V2l0aEltYWdlKHMpfSxzLmltYWdlLm9uZXJyb3I9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJDb3VsZCBub3QgbG9hZCBpbWFnZToiLHQpLG8uX3RyeWxvYWRCcm9rZW5VcmwodCxlLHMpfSxzLmltYWdlLnNyYz10LHN9fSx7a2V5OiJfZml4SW1hZ2VDb29yZGluYXRlcyIsdmFsdWU6ZnVuY3Rpb24odCl7MD09PXQud2lkdGgmJihkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpLHQud2lkdGg9dC5vZmZzZXRXaWR0aCx0LmhlaWdodD10Lm9mZnNldEhlaWdodCxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpKX19XSksdH0oKTtlLmRlZmF1bHQ9bH0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDEzNSkscz1vKG4pLHI9aSgxMzYpLGE9byhyKSxoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXsoMCxzLmRlZmF1bHQpKHRoaXMsdCksdGhpcy5OVU1fSVRFUkFUSU9OUz00LHRoaXMuaW1hZ2U9bmV3IEltYWdlLHRoaXMuY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpfXJldHVybigwLGEuZGVmYXVsdCkodCxbe2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5pbml0aWFsaXplZCgpKXt0aGlzLnNyYz10aGlzLmltYWdlLnNyYzt2YXIgdD10aGlzLmltYWdlLndpZHRoLGU9dGhpcy5pbWFnZS5oZWlnaHQ7dGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PWUsdGhpcy5jYW52YXMud2lkdGg9Myp0LzQsdGhpcy5jYW52YXMuaGVpZ2h0PWUvMix0aGlzLmNvb3JkaW5hdGVzPVtbMCwwLHQvMixlLzJdLFt0LzIsMCx0LzQsZS80XSxbdC8yLGUvNCx0LzgsZS84XSxbNSp0LzgsZS80LHQvMTYsZS8xNl1dLHRoaXMuX2ZpbGxNaXBNYXAoKX19fSx7a2V5OiJpbml0aWFsaXplZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5jb29yZGluYXRlc319LHtrZXk6Il9maWxsTWlwTWFwIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuY2FudmFzLmdldENvbnRleHQoIjJkIiksZT10aGlzLmNvb3JkaW5hdGVzWzBdO3QuZHJhd0ltYWdlKHRoaXMuaW1hZ2UsZVswXSxlWzFdLGVbMl0sZVszXSk7Zm9yKHZhciBpPTE7aTx0aGlzLk5VTV9JVEVSQVRJT05TO2krKyl7dmFyIG89dGhpcy5jb29yZGluYXRlc1tpLTFdLG49dGhpcy5jb29yZGluYXRlc1tpXTt0LmRyYXdJbWFnZSh0aGlzLmNhbnZhcyxvWzBdLG9bMV0sb1syXSxvWzNdLG5bMF0sblsxXSxuWzJdLG5bM10pfX19LHtrZXk6ImRyYXdJbWFnZUF0UG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLG8sbixzKXtpZihlPjImJnRoaXMuaW5pdGlhbGl6ZWQoKSl7ZSo9LjU7Zm9yKHZhciByPTA7ZT4yJiZyPHRoaXMuTlVNX0lURVJBVElPTlM7KWUqPS41LHIrPTE7cj49dGhpcy5OVU1fSVRFUkFUSU9OUyYmKHI9dGhpcy5OVU1fSVRFUkFUSU9OUy0xKTt2YXIgYT10aGlzLmNvb3JkaW5hdGVzW3JdO3QuZHJhd0ltYWdlKHRoaXMuY2FudmFzLGFbMF0sYVsxXSxhWzJdLGFbM10saSxvLG4scyl9ZWxzZSB0aGlzLl9pc0ltYWdlT2soKSYmdC5kcmF3SW1hZ2UodGhpcy5pbWFnZSxpLG8sbixzKX19LHtrZXk6Il9pc0ltYWdlT2siLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciB0PXRoaXMuaW1hZ2U7cmV0dXJuISF0LmNvbXBsZXRlJiYodm9pZCAwPT09dC5uYXR1cmFsV2lkdGh8fDAhPT10Lm5hdHVyYWxXaWR0aCl9fV0pLHR9KCk7ZS5kZWZhdWx0PWh9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxMzUpLHM9byhuKSxyPWkoMTM2KSxhPW8ociksaD1pKDEpLGQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7KDAscy5kZWZhdWx0KSh0aGlzLHQpLHRoaXMuY2xlYXIoKSx0aGlzLmRlZmF1bHRJbmRleD0wLHRoaXMuZ3JvdXBzQXJyYXk9W10sdGhpcy5ncm91cEluZGV4PTAsdGhpcy5kZWZhdWx0R3JvdXBzPVt7Ym9yZGVyOiIjMkI3Q0U5IixiYWNrZ3JvdW5kOiIjOTdDMkZDIixoaWdobGlnaHQ6e2JvcmRlcjoiIzJCN0NFOSIsYmFja2dyb3VuZDoiI0QyRTVGRiJ9LGhvdmVyOntib3JkZXI6IiMyQjdDRTkiLGJhY2tncm91bmQ6IiNEMkU1RkYifX0se2JvcmRlcjoiI0ZGQTUwMCIsYmFja2dyb3VuZDoiI0ZGRkYwMCIsaGlnaGxpZ2h0Ontib3JkZXI6IiNGRkE1MDAiLGJhY2tncm91bmQ6IiNGRkZGQTMifSxob3Zlcjp7Ym9yZGVyOiIjRkZBNTAwIixiYWNrZ3JvdW5kOiIjRkZGRkEzIn19LHtib3JkZXI6IiNGQTBBMTAiLGJhY2tncm91bmQ6IiNGQjdFODEiLGhpZ2hsaWdodDp7Ym9yZGVyOiIjRkEwQTEwIixiYWNrZ3JvdW5kOiIjRkZBRkIxIn0saG92ZXI6e2JvcmRlcjoiI0ZBMEExMCIsYmFja2dyb3VuZDoiI0ZGQUZCMSJ9fSx7Ym9yZGVyOiIjNDFBOTA2IixiYWNrZ3JvdW5kOiIjN0JFMTQxIixoaWdobGlnaHQ6e2JvcmRlcjoiIzQxQTkwNiIsYmFja2dyb3VuZDoiI0ExRUM3NiJ9LGhvdmVyOntib3JkZXI6IiM0MUE5MDYiLGJhY2tncm91bmQ6IiNBMUVDNzYifX0se2JvcmRlcjoiI0UxMjlGMCIsYmFja2dyb3VuZDoiI0VCN0RGNCIsaGlnaGxpZ2h0Ontib3JkZXI6IiNFMTI5RjAiLGJhY2tncm91bmQ6IiNGMEIzRjUifSxob3Zlcjp7Ym9yZGVyOiIjRTEyOUYwIixiYWNrZ3JvdW5kOiIjRjBCM0Y1In19LHtib3JkZXI6IiM3QzI5RjAiLGJhY2tncm91bmQ6IiNBRDg1RTQiLGhpZ2hsaWdodDp7Ym9yZGVyOiIjN0MyOUYwIixiYWNrZ3JvdW5kOiIjRDNCREYwIn0saG92ZXI6e2JvcmRlcjoiIzdDMjlGMCIsYmFja2dyb3VuZDoiI0QzQkRGMCJ9fSx7Ym9yZGVyOiIjQzM3RjAwIixiYWNrZ3JvdW5kOiIjRkZBODA3IixoaWdobGlnaHQ6e2JvcmRlcjoiI0MzN0YwMCIsYmFja2dyb3VuZDoiI0ZGQ0E2NiJ9LGhvdmVyOntib3JkZXI6IiNDMzdGMDAiLGJhY2tncm91bmQ6IiNGRkNBNjYifX0se2JvcmRlcjoiIzQyMjBGQiIsYmFja2dyb3VuZDoiIzZFNkVGRCIsaGlnaGxpZ2h0Ontib3JkZXI6IiM0MjIwRkIiLGJhY2tncm91bmQ6IiM5QjlCRkQifSxob3Zlcjp7Ym9yZGVyOiIjNDIyMEZCIixiYWNrZ3JvdW5kOiIjOUI5QkZEIn19LHtib3JkZXI6IiNGRDVBNzciLGJhY2tncm91bmQ6IiNGRkMwQ0IiLGhpZ2hsaWdodDp7Ym9yZGVyOiIjRkQ1QTc3IixiYWNrZ3JvdW5kOiIjRkZEMUQ5In0saG92ZXI6e2JvcmRlcjoiI0ZENUE3NyIsYmFja2dyb3VuZDoiI0ZGRDFEOSJ9fSx7Ym9yZGVyOiIjNEFENjNBIixiYWNrZ3JvdW5kOiIjQzJGQUJDIixoaWdobGlnaHQ6e2JvcmRlcjoiIzRBRDYzQSIsYmFja2dyb3VuZDoiI0U2RkZFMyJ9LGhvdmVyOntib3JkZXI6IiM0QUQ2M0EiLGJhY2tncm91bmQ6IiNFNkZGRTMifX0se2JvcmRlcjoiIzk5MDAwMCIsYmFja2dyb3VuZDoiI0VFMDAwMCIsaGlnaGxpZ2h0Ontib3JkZXI6IiNCQjAwMDAiLGJhY2tncm91bmQ6IiNGRjMzMzMifSxob3Zlcjp7Ym9yZGVyOiIjQkIwMDAwIixiYWNrZ3JvdW5kOiIjRkYzMzMzIn19LHtib3JkZXI6IiNGRjYwMDAiLGJhY2tncm91bmQ6IiNGRjYwMDAiLGhpZ2hsaWdodDp7Ym9yZGVyOiIjRkY2MDAwIixiYWNrZ3JvdW5kOiIjRkY2MDAwIn0saG92ZXI6e2JvcmRlcjoiI0ZGNjAwMCIsYmFja2dyb3VuZDoiI0ZGNjAwMCJ9fSx7Ym9yZGVyOiIjOTdDMkZDIixiYWNrZ3JvdW5kOiIjMkI3Q0U5IixoaWdobGlnaHQ6e2JvcmRlcjoiI0QyRTVGRiIsYmFja2dyb3VuZDoiIzJCN0NFOSJ9LGhvdmVyOntib3JkZXI6IiNEMkU1RkYiLGJhY2tncm91bmQ6IiMyQjdDRTkifX0se2JvcmRlcjoiIzM5OTYwNSIsYmFja2dyb3VuZDoiIzI1NUMwMyIsaGlnaGxpZ2h0Ontib3JkZXI6IiMzOTk2MDUiLGJhY2tncm91bmQ6IiMyNTVDMDMifSxob3Zlcjp7Ym9yZGVyOiIjMzk5NjA1IixiYWNrZ3JvdW5kOiIjMjU1QzAzIn19LHtib3JkZXI6IiNCNzAwNTQiLGJhY2tncm91bmQ6IiNGRjAwN0UiLGhpZ2hsaWdodDp7Ym9yZGVyOiIjQjcwMDU0IixiYWNrZ3JvdW5kOiIjRkYwMDdFIn0saG92ZXI6e2JvcmRlcjoiI0I3MDA1NCIsYmFja2dyb3VuZDoiI0ZGMDA3RSJ9fSx7Ym9yZGVyOiIjQUQ4NUU0IixiYWNrZ3JvdW5kOiIjN0MyOUYwIixoaWdobGlnaHQ6e2JvcmRlcjoiI0QzQkRGMCIsYmFja2dyb3VuZDoiIzdDMjlGMCJ9LGhvdmVyOntib3JkZXI6IiNEM0JERjAiLGJhY2tncm91bmQ6IiM3QzI5RjAifX0se2JvcmRlcjoiIzQ1NTdGQSIsYmFja2dyb3VuZDoiIzAwMEVBMSIsaGlnaGxpZ2h0Ontib3JkZXI6IiM2RTZFRkQiLGJhY2tncm91bmQ6IiMwMDBFQTEifSxob3Zlcjp7Ym9yZGVyOiIjNkU2RUZEIixiYWNrZ3JvdW5kOiIjMDAwRUExIn19LHtib3JkZXI6IiNGRkMwQ0IiLGJhY2tncm91bmQ6IiNGRDVBNzciLGhpZ2hsaWdodDp7Ym9yZGVyOiIjRkZEMUQ5IixiYWNrZ3JvdW5kOiIjRkQ1QTc3In0saG92ZXI6e2JvcmRlcjoiI0ZGRDFEOSIsYmFja2dyb3VuZDoiI0ZENUE3NyJ9fSx7Ym9yZGVyOiIjQzJGQUJDIixiYWNrZ3JvdW5kOiIjNzRENjZBIixoaWdobGlnaHQ6e2JvcmRlcjoiI0U2RkZFMyIsYmFja2dyb3VuZDoiIzc0RDY2QSJ9LGhvdmVyOntib3JkZXI6IiNFNkZGRTMiLGJhY2tncm91bmQ6IiM3NEQ2NkEifX0se2JvcmRlcjoiI0VFMDAwMCIsYmFja2dyb3VuZDoiIzk5MDAwMCIsaGlnaGxpZ2h0Ontib3JkZXI6IiNGRjMzMzMiLGJhY2tncm91bmQ6IiNCQjAwMDAifSxob3Zlcjp7Ym9yZGVyOiIjRkYzMzMzIixiYWNrZ3JvdW5kOiIjQkIwMDAwIn19XSx0aGlzLm9wdGlvbnM9e30sdGhpcy5kZWZhdWx0T3B0aW9ucz17dXNlRGVmYXVsdEdyb3VwczohMH0saC5leHRlbmQodGhpcy5vcHRpb25zLHRoaXMuZGVmYXVsdE9wdGlvbnMpfXJldHVybigwLGEuZGVmYXVsdCkodCxbe2tleToic2V0T3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9WyJ1c2VEZWZhdWx0R3JvdXBzIl07aWYodm9pZCAwIT09dClmb3IodmFyIGkgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGkpJiYtMT09PWUuaW5kZXhPZihpKSl7dmFyIG89dFtpXTt0aGlzLmFkZChpLG8pfX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZ3JvdXBzPXt9LHRoaXMuZ3JvdXBzQXJyYXk9W119fSx7a2V5OiJnZXQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ3JvdXBzW3RdO2lmKHZvaWQgMD09PWUpaWYoITE9PT10aGlzLm9wdGlvbnMudXNlRGVmYXVsdEdyb3VwcyYmdGhpcy5ncm91cHNBcnJheS5sZW5ndGg+MCl7dmFyIGk9dGhpcy5ncm91cEluZGV4JXRoaXMuZ3JvdXBzQXJyYXkubGVuZ3RoO3RoaXMuZ3JvdXBJbmRleCsrLGU9e30sZS5jb2xvcj10aGlzLmdyb3Vwc1t0aGlzLmdyb3Vwc0FycmF5W2ldXSx0aGlzLmdyb3Vwc1t0XT1lfWVsc2V7dmFyIG89dGhpcy5kZWZhdWx0SW5kZXgldGhpcy5kZWZhdWx0R3JvdXBzLmxlbmd0aDt0aGlzLmRlZmF1bHRJbmRleCsrLGU9e30sZS5jb2xvcj10aGlzLmRlZmF1bHRHcm91cHNbb10sdGhpcy5ncm91cHNbdF09ZX1yZXR1cm4gZX19LHtrZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5ncm91cHNbdF09ZSx0aGlzLmdyb3Vwc0FycmF5LnB1c2godCksZX19XSksdH0oKTtlLmRlZmF1bHQ9ZH0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDEzNSkscz1vKG4pLHI9aSgxMzYpLGE9byhyKSxoPWkoMSksZD1pKDg5KSxsPWkoOTMpLHU9aSgxNjkpLmRlZmF1bHQsYz1pKDE3MCkuZGVmYXVsdCxwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGksbyxuKXt2YXIgcj10aGlzO2lmKCgwLHMuZGVmYXVsdCkodGhpcyx0KSx0aGlzLmJvZHk9ZSx0aGlzLmltYWdlcz1pLHRoaXMuZ3JvdXBzPW8sdGhpcy5sYXlvdXRFbmdpbmU9bix0aGlzLmJvZHkuZnVuY3Rpb25zLmNyZWF0ZU5vZGU9dGhpcy5jcmVhdGUuYmluZCh0aGlzKSx0aGlzLm5vZGVzTGlzdGVuZXJzPXthZGQ6ZnVuY3Rpb24odCxlKXtyLmFkZChlLml0ZW1zKX0sdXBkYXRlOmZ1bmN0aW9uKHQsZSl7ci51cGRhdGUoZS5pdGVtcyxlLmRhdGEpfSxyZW1vdmU6ZnVuY3Rpb24odCxlKXtyLnJlbW92ZShlLml0ZW1zKX19LHRoaXMub3B0aW9ucz17fSx0aGlzLmRlZmF1bHRPcHRpb25zPXtib3JkZXJXaWR0aDoxLGJvcmRlcldpZHRoU2VsZWN0ZWQ6Mixicm9rZW5JbWFnZTp2b2lkIDAsY29sb3I6e2JvcmRlcjoiIzJCN0NFOSIsYmFja2dyb3VuZDoiIzk3QzJGQyIsaGlnaGxpZ2h0Ontib3JkZXI6IiMyQjdDRTkiLGJhY2tncm91bmQ6IiNEMkU1RkYifSxob3Zlcjp7Ym9yZGVyOiIjMkI3Q0U5IixiYWNrZ3JvdW5kOiIjRDJFNUZGIn19LGZpeGVkOnt4OiExLHk6ITF9LGZvbnQ6e2NvbG9yOiIjMzQzNDM0IixzaXplOjE0LGZhY2U6ImFyaWFsIixiYWNrZ3JvdW5kOiJub25lIixzdHJva2VXaWR0aDowLHN0cm9rZUNvbG9yOiIjZmZmZmZmIixhbGlnbjoiY2VudGVyIix2YWRqdXN0OjAsbXVsdGk6ITEsYm9sZDp7bW9kOiJib2xkIn0sYm9sZGl0YWw6e21vZDoiYm9sZCBpdGFsaWMifSxpdGFsOnttb2Q6Iml0YWxpYyJ9LG1vbm86e21vZDoiIixzaXplOjE1LGZhY2U6Im1vbm9zcGFjZSIsdmFkanVzdDoyfX0sZ3JvdXA6dm9pZCAwLGhpZGRlbjohMSxpY29uOntmYWNlOiJGb250QXdlc29tZSIsY29kZTp2b2lkIDAsc2l6ZTo1MCxjb2xvcjoiIzJCN0NFOSJ9LGltYWdlOnZvaWQgMCxsYWJlbDp2b2lkIDAsbGFiZWxIaWdobGlnaHRCb2xkOiEwLGxldmVsOnZvaWQgMCxtYXJnaW46e3RvcDo1LHJpZ2h0OjUsYm90dG9tOjUsbGVmdDo1fSxtYXNzOjEscGh5c2ljczohMCxzY2FsaW5nOnttaW46MTAsbWF4OjMwLGxhYmVsOntlbmFibGVkOiExLG1pbjoxNCxtYXg6MzAsbWF4VmlzaWJsZTozMCxkcmF3VGhyZXNob2xkOjV9LGN1c3RvbVNjYWxpbmdGdW5jdGlvbjpmdW5jdGlvbih0LGUsaSxvKXtpZihlPT09dClyZXR1cm4uNTt2YXIgbj0xLyhlLXQpO3JldHVybiBNYXRoLm1heCgwLChvLXQpKm4pfX0sc2hhZG93OntlbmFibGVkOiExLGNvbG9yOiJyZ2JhKDAsMCwwLDAuNSkiLHNpemU6MTAseDo1LHk6NX0sc2hhcGU6ImVsbGlwc2UiLHNoYXBlUHJvcGVydGllczp7Ym9yZGVyRGFzaGVzOiExLGJvcmRlclJhZGl1czo2LGludGVycG9sYXRpb246ITAsdXNlSW1hZ2VTaXplOiExLHVzZUJvcmRlcldpdGhJbWFnZTohMX0sc2l6ZToyNSx0aXRsZTp2b2lkIDAsdmFsdWU6dm9pZCAwLHg6dm9pZCAwLHk6dm9pZCAwfSx0aGlzLmRlZmF1bHRPcHRpb25zLm1hc3M8PTApdGhyb3ciSW50ZXJuYWwgZXJyb3I6IG1hc3MgaW4gZGVmYXVsdE9wdGlvbnMgb2YgTm9kZXNIYW5kbGVyIG1heSBub3QgYmUgemVybyBvciBuZWdhdGl2ZSI7aC5leHRlbmQodGhpcy5vcHRpb25zLHRoaXMuZGVmYXVsdE9wdGlvbnMpLHRoaXMuYmluZEV2ZW50TGlzdGVuZXJzKCl9cmV0dXJuKDAsYS5kZWZhdWx0KSh0LFt7a2V5OiJiaW5kRXZlbnRMaXN0ZW5lcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmJvZHkuZW1pdHRlci5vbigicmVmcmVzaE5vZGVzIix0aGlzLnJlZnJlc2guYmluZCh0aGlzKSksdGhpcy5ib2R5LmVtaXR0ZXIub24oInJlZnJlc2giLHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpKSx0aGlzLmJvZHkuZW1pdHRlci5vbigiZGVzdHJveSIsZnVuY3Rpb24oKXtoLmZvckVhY2godC5ub2Rlc0xpc3RlbmVycyxmdW5jdGlvbihlLGkpe3QuYm9keS5kYXRhLm5vZGVzJiZ0LmJvZHkuZGF0YS5ub2Rlcy5vZmYoaSxlKX0pLGRlbGV0ZSB0LmJvZHkuZnVuY3Rpb25zLmNyZWF0ZU5vZGUsZGVsZXRlIHQubm9kZXNMaXN0ZW5lcnMuYWRkLGRlbGV0ZSB0Lm5vZGVzTGlzdGVuZXJzLnVwZGF0ZSxkZWxldGUgdC5ub2Rlc0xpc3RlbmVycy5yZW1vdmUsZGVsZXRlIHQubm9kZXNMaXN0ZW5lcnN9KX19LHtrZXk6InNldE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRoaXMubm9kZU9wdGlvbnM9dCx2b2lkIDAhPT10KXtpZih1LnBhcnNlT3B0aW9ucyh0aGlzLm9wdGlvbnMsdCksdm9pZCAwIT09dC5zaGFwZSlmb3IodmFyIGUgaW4gdGhpcy5ib2R5Lm5vZGVzKXRoaXMuYm9keS5ub2Rlcy5oYXNPd25Qcm9wZXJ0eShlKSYmdGhpcy5ib2R5Lm5vZGVzW2VdLnVwZGF0ZVNoYXBlKCk7aWYodm9pZCAwIT09dC5mb250KXtjLnBhcnNlT3B0aW9ucyh0aGlzLm9wdGlvbnMuZm9udCx0KTtmb3IodmFyIGkgaW4gdGhpcy5ib2R5Lm5vZGVzKXRoaXMuYm9keS5ub2Rlcy5oYXNPd25Qcm9wZXJ0eShpKSYmKHRoaXMuYm9keS5ub2Rlc1tpXS51cGRhdGVMYWJlbE1vZHVsZSgpLHRoaXMuYm9keS5ub2Rlc1tpXS5uZWVkc1JlZnJlc2goKSl9aWYodm9pZCAwIT09dC5zaXplKWZvcih2YXIgbyBpbiB0aGlzLmJvZHkubm9kZXMpdGhpcy5ib2R5Lm5vZGVzLmhhc093blByb3BlcnR5KG8pJiZ0aGlzLmJvZHkubm9kZXNbb10ubmVlZHNSZWZyZXNoKCk7dm9pZCAwPT09dC5oaWRkZW4mJnZvaWQgMD09PXQucGh5c2ljc3x8dGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX2RhdGFDaGFuZ2VkIil9fX0se2tleToic2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxpPXRoaXMuYm9keS5kYXRhLm5vZGVzO2lmKHQgaW5zdGFuY2VvZiBkfHx0IGluc3RhbmNlb2YgbCl0aGlzLmJvZHkuZGF0YS5ub2Rlcz10O2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl0aGlzLmJvZHkuZGF0YS5ub2Rlcz1uZXcgZCx0aGlzLmJvZHkuZGF0YS5ub2Rlcy5hZGQodCk7ZWxzZXtpZih0KXRocm93IG5ldyBUeXBlRXJyb3IoIkFycmF5IG9yIERhdGFTZXQgZXhwZWN0ZWQiKTt0aGlzLmJvZHkuZGF0YS5ub2Rlcz1uZXcgZH1pZihpJiZoLmZvckVhY2godGhpcy5ub2Rlc0xpc3RlbmVycyxmdW5jdGlvbih0LGUpe2kub2ZmKGUsdCl9KSx0aGlzLmJvZHkubm9kZXM9e30sdGhpcy5ib2R5LmRhdGEubm9kZXMpe3ZhciBvPXRoaXM7aC5mb3JFYWNoKHRoaXMubm9kZXNMaXN0ZW5lcnMsZnVuY3Rpb24odCxlKXtvLmJvZHkuZGF0YS5ub2Rlcy5vbihlLHQpfSk7dmFyIG49dGhpcy5ib2R5LmRhdGEubm9kZXMuZ2V0SWRzKCk7dGhpcy5hZGQobiwhMCl9ITE9PT1lJiZ0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfZGF0YUNoYW5nZWQiKX19LHtrZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0saT12b2lkIDAsbz1bXSxuPTA7bjx0Lmxlbmd0aDtuKyspe2k9dFtuXTt2YXIgcz10aGlzLmJvZHkuZGF0YS5ub2Rlcy5nZXQoaSkscj10aGlzLmNyZWF0ZShzKTtvLnB1c2gociksdGhpcy5ib2R5Lm5vZGVzW2ldPXJ9dGhpcy5sYXlvdXRFbmdpbmUucG9zaXRpb25Jbml0aWFsbHkobyksITE9PT1lJiZ0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfZGF0YUNoYW5nZWQiKX19LHtrZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dGhpcy5ib2R5Lm5vZGVzLG89ITEsbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcz10W25dLHI9aVtzXSxhPWVbbl07dm9pZCAwIT09cj9vPXIuc2V0T3B0aW9ucyhhKToobz0hMCxyPXRoaXMuY3JlYXRlKGEpLGlbc109cil9ITA9PT1vP3RoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9kYXRhQ2hhbmdlZCIpOnRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9kYXRhVXBkYXRlZCIpfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5ib2R5Lm5vZGVzLGk9MDtpPHQubGVuZ3RoO2krKyl7ZGVsZXRlIGVbdFtpXV19dGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX2RhdGFDaGFuZ2VkIil9fSx7a2V5OiJjcmVhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnUpKHQsdGhpcy5ib2R5LHRoaXMuaW1hZ2VzLHRoaXMuZ3JvdXBzLHRoaXMub3B0aW9ucyx0aGlzLmRlZmF1bHRPcHRpb25zLHRoaXMubm9kZU9wdGlvbnMpfX0se2tleToicmVmcmVzaCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLGU9dGhpcy5ib2R5Lm5vZGVzO2Zvcih2YXIgaSBpbiBlKXt2YXIgbz12b2lkIDA7ZS5oYXNPd25Qcm9wZXJ0eShpKSYmKG89ZVtpXSk7dmFyIG49dGhpcy5ib2R5LmRhdGEubm9kZXMuZ2V0KGkpO3ZvaWQgMCE9PW8mJnZvaWQgMCE9PW4mJighMD09PXQmJm8uc2V0T3B0aW9ucyh7eDpudWxsLHk6bnVsbH0pLG8uc2V0T3B0aW9ucyh7Zml4ZWQ6ITF9KSxvLnNldE9wdGlvbnMobikpfX19LHtrZXk6ImdldFBvc2l0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9e307aWYodm9pZCAwIT09dCl7aWYoITA9PT1BcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKylpZih2b2lkIDAhPT10aGlzLmJvZHkubm9kZXNbdFtpXV0pe3ZhciBvPXRoaXMuYm9keS5ub2Rlc1t0W2ldXTtlW3RbaV1dPXt4Ok1hdGgucm91bmQoby54KSx5Ok1hdGgucm91bmQoby55KX19fWVsc2UgaWYodm9pZCAwIT09dGhpcy5ib2R5Lm5vZGVzW3RdKXt2YXIgbj10aGlzLmJvZHkubm9kZXNbdF07ZVt0XT17eDpNYXRoLnJvdW5kKG4ueCkseTpNYXRoLnJvdW5kKG4ueSl9fX1lbHNlIGZvcih2YXIgcz0wO3M8dGhpcy5ib2R5Lm5vZGVJbmRpY2VzLmxlbmd0aDtzKyspe3ZhciByPXRoaXMuYm9keS5ub2Rlc1t0aGlzLmJvZHkubm9kZUluZGljZXNbc11dO2VbdGhpcy5ib2R5Lm5vZGVJbmRpY2VzW3NdXT17eDpNYXRoLnJvdW5kKHIueCkseTpNYXRoLnJvdW5kKHIueSl9fXJldHVybiBlfX0se2tleToic3RvcmVQb3NpdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9W10sZT10aGlzLmJvZHkuZGF0YS5ub2Rlcy5nZXREYXRhU2V0KCk7Zm9yKHZhciBpIGluIGUuX2RhdGEpaWYoZS5fZGF0YS5oYXNPd25Qcm9wZXJ0eShpKSl7dmFyIG89dGhpcy5ib2R5Lm5vZGVzW2ldO2UuX2RhdGFbaV0ueD09TWF0aC5yb3VuZChvLngpJiZlLl9kYXRhW2ldLnk9PU1hdGgucm91bmQoby55KXx8dC5wdXNoKHtpZDpvLmlkLHg6TWF0aC5yb3VuZChvLngpLHk6TWF0aC5yb3VuZChvLnkpfSl9ZS51cGRhdGUodCl9fSx7a2V5OiJnZXRCb3VuZGluZ0JveCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodm9pZCAwIT09dGhpcy5ib2R5Lm5vZGVzW3RdKXJldHVybiB0aGlzLmJvZHkubm9kZXNbdF0uc2hhcGUuYm91bmRpbmdCb3h9fSx7a2V5OiJnZXRDb25uZWN0ZWROb2RlcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1bXTtpZih2b2lkIDAhPT10aGlzLmJvZHkubm9kZXNbdF0pZm9yKHZhciBvPXRoaXMuYm9keS5ub2Rlc1t0XSxuPXt9LHM9MDtzPG8uZWRnZXMubGVuZ3RoO3MrKyl7dmFyIHI9by5lZGdlc1tzXTsidG8iIT09ZSYmci50b0lkPT1vLmlkP3ZvaWQgMD09PW5bci5mcm9tSWRdJiYoaS5wdXNoKHIuZnJvbUlkKSxuW3IuZnJvbUlkXT0hMCk6ImZyb20iIT09ZSYmci5mcm9tSWQ9PW8uaWQmJnZvaWQgMD09PW5bci50b0lkXSYmKGkucHVzaChyLnRvSWQpLG5bci50b0lkXT0hMCl9cmV0dXJuIGl9fSx7a2V5OiJnZXRDb25uZWN0ZWRFZGdlcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9W107aWYodm9pZCAwIT09dGhpcy5ib2R5Lm5vZGVzW3RdKWZvcih2YXIgaT10aGlzLmJvZHkubm9kZXNbdF0sbz0wO288aS5lZGdlcy5sZW5ndGg7bysrKWUucHVzaChpLmVkZ2VzW29dLmlkKTtlbHNlIGNvbnNvbGUubG9nKCJOb2RlSWQgcHJvdmlkZWQgZm9yIGdldENvbm5lY3RlZEVkZ2VzIGRvZXMgbm90IGV4aXN0LiBQcm92aWRlZDogIix0KTtyZXR1cm4gZX19LHtrZXk6Im1vdmVOb2RlIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIG89dGhpczt2b2lkIDAhPT10aGlzLmJvZHkubm9kZXNbdF0/KHRoaXMuYm9keS5ub2Rlc1t0XS54PU51bWJlcihlKSx0aGlzLmJvZHkubm9kZXNbdF0ueT1OdW1iZXIoaSksc2V0VGltZW91dChmdW5jdGlvbigpe28uYm9keS5lbWl0dGVyLmVtaXQoInN0YXJ0U2ltdWxhdGlvbiIpfSwwKSk6Y29uc29sZS5sb2coIk5vZGUgaWQgc3VwcGxpZWQgdG8gbW92ZU5vZGUgZG9lcyBub3QgZXhpc3QuIFByb3ZpZGVkOiAiLHQpfX1dKSx0fSgpO2UuZGVmYXVsdD1wfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoNjIpLHM9byhuKSxyPWkoMTM1KSxhPW8ociksaD1pKDEzNiksZD1vKGgpLGw9aSgxKSx1PWkoMTcwKS5kZWZhdWx0LGM9aSgxNzUpLmRlZmF1bHQscD1pKDE4NikuZGVmYXVsdCxmPWkoMTg4KS5kZWZhdWx0LG09aSgxODkpLmRlZmF1bHQsdj1pKDE5MCkuZGVmYXVsdCxnPWkoMTkyKS5kZWZhdWx0LHk9aSgxOTMpLmRlZmF1bHQsYj1pKDE5NCkuZGVmYXVsdCxfPWkoMTk1KS5kZWZhdWx0LHc9aSgxOTYpLmRlZmF1bHQseD1pKDE5NykuZGVmYXVsdCxrPWkoMTk4KS5kZWZhdWx0LEQ9aSgxOTkpLmRlZmF1bHQsTT1pKDIwMCkuZGVmYXVsdCxTPShpKDE0NSkuZGVmYXVsdCxpKDE0NSkpLE89Uy5wcmludFN0eWxlLEM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSxvLG4scyxyLGgpeygwLGEuZGVmYXVsdCkodGhpcyx0KSx0aGlzLm9wdGlvbnM9bC5icmlkZ2VPYmplY3QocyksdGhpcy5nbG9iYWxPcHRpb25zPXMsdGhpcy5kZWZhdWx0T3B0aW9ucz1yLHRoaXMubm9kZU9wdGlvbnM9aCx0aGlzLmJvZHk9aSx0aGlzLmVkZ2VzPVtdLHRoaXMuaWQ9dm9pZCAwLHRoaXMuaW1hZ2VsaXN0PW8sdGhpcy5ncm91cGxpc3Q9bix0aGlzLng9dm9pZCAwLHRoaXMueT12b2lkIDAsdGhpcy5iYXNlU2l6ZT10aGlzLm9wdGlvbnMuc2l6ZSx0aGlzLmJhc2VGb250U2l6ZT10aGlzLm9wdGlvbnMuZm9udC5zaXplLHRoaXMucHJlZGVmaW5lZFBvc2l0aW9uPSExLHRoaXMuc2VsZWN0ZWQ9ITEsdGhpcy5ob3Zlcj0hMSx0aGlzLmxhYmVsTW9kdWxlPW5ldyB1KHRoaXMuYm9keSx0aGlzLm9wdGlvbnMsITEpLHRoaXMuc2V0T3B0aW9ucyhlKX1yZXR1cm4oMCxkLmRlZmF1bHQpKHQsW3trZXk6ImF0dGFjaEVkZ2UiLHZhbHVlOmZ1bmN0aW9uKHQpey0xPT09dGhpcy5lZGdlcy5pbmRleE9mKHQpJiZ0aGlzLmVkZ2VzLnB1c2godCl9fSx7a2V5OiJkZXRhY2hFZGdlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmVkZ2VzLmluZGV4T2YodCk7LTEhPWUmJnRoaXMuZWRnZXMuc3BsaWNlKGUsMSl9fSx7a2V5OiJzZXRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgaT10aGlzLm9wdGlvbnMuc2hhcGU7aWYoZSl7aWYodm9pZCAwIT09ZS5pZCYmKHRoaXMuaWQ9ZS5pZCksdm9pZCAwPT09dGhpcy5pZCl0aHJvdyJOb2RlIG11c3QgaGF2ZSBhbiBpZCI7aWYodC5jaGVja01hc3MoZSx0aGlzLmlkKSx2b2lkIDAhPT1lLngmJihudWxsPT09ZS54Pyh0aGlzLng9dm9pZCAwLHRoaXMucHJlZGVmaW5lZFBvc2l0aW9uPSExKToodGhpcy54PXBhcnNlSW50KGUueCksdGhpcy5wcmVkZWZpbmVkUG9zaXRpb249ITApKSx2b2lkIDAhPT1lLnkmJihudWxsPT09ZS55Pyh0aGlzLnk9dm9pZCAwLHRoaXMucHJlZGVmaW5lZFBvc2l0aW9uPSExKToodGhpcy55PXBhcnNlSW50KGUueSksdGhpcy5wcmVkZWZpbmVkUG9zaXRpb249ITApKSx2b2lkIDAhPT1lLnNpemUmJih0aGlzLmJhc2VTaXplPWUuc2l6ZSksdm9pZCAwIT09ZS52YWx1ZSYmKGUudmFsdWU9cGFyc2VGbG9hdChlLnZhbHVlKSksIm51bWJlciI9PXR5cGVvZiBlLmdyb3VwfHwic3RyaW5nIj09dHlwZW9mIGUuZ3JvdXAmJiIiIT1lLmdyb3VwKXt2YXIgbz10aGlzLmdyb3VwbGlzdC5nZXQoZS5ncm91cCk7bC5kZWVwRXh0ZW5kKHRoaXMub3B0aW9ucyxvKSx0aGlzLm9wdGlvbnMuY29sb3I9bC5wYXJzZUNvbG9yKHRoaXMub3B0aW9ucy5jb2xvcil9cmV0dXJuIHQucGFyc2VPcHRpb25zKHRoaXMub3B0aW9ucyxlLCEwLHRoaXMuZ2xvYmFsT3B0aW9ucyksdGhpcy5jaG9vc2lmeShlKSx0aGlzLl9sb2FkX2ltYWdlcygpLHRoaXMudXBkYXRlTGFiZWxNb2R1bGUoZSksdGhpcy51cGRhdGVTaGFwZShpKSx0aGlzLmxhYmVsTW9kdWxlLnByb3BhZ2F0ZUZvbnRzKHRoaXMubm9kZU9wdGlvbnMsZSx0aGlzLmRlZmF1bHRPcHRpb25zKSx2b2lkIDAhPT1lLmhpZGRlbnx8dm9pZCAwIT09ZS5waHlzaWNzfX19LHtrZXk6Il9sb2FkX2ltYWdlcyIsdmFsdWU6ZnVuY3Rpb24oKXtpZigiY2lyY3VsYXJJbWFnZSI9PT10aGlzLm9wdGlvbnMuc2hhcGV8fCJpbWFnZSI9PT10aGlzLm9wdGlvbnMuc2hhcGUpe2lmKHZvaWQgMD09PXRoaXMub3B0aW9ucy5pbWFnZSl0aHJvdyJPcHRpb24gaW1hZ2UgbXVzdCBiZSBkZWZpbmVkIGZvciBub2RlIHR5cGUgJyIrdGhpcy5vcHRpb25zLnNoYXBlKyInIjtpZih2b2lkIDA9PT10aGlzLmltYWdlbGlzdCl0aHJvdyJJbnRlcm5hbCBFcnJvcjogTm8gaW1hZ2VzIHByb3ZpZGVkIjtpZigic3RyaW5nIj09dHlwZW9mIHRoaXMub3B0aW9ucy5pbWFnZSl0aGlzLmltYWdlT2JqPXRoaXMuaW1hZ2VsaXN0LmxvYWQodGhpcy5vcHRpb25zLmltYWdlLHRoaXMub3B0aW9ucy5icm9rZW5JbWFnZSx0aGlzLmlkKTtlbHNle2lmKHZvaWQgMD09PXRoaXMub3B0aW9ucy5pbWFnZS51bnNlbGVjdGVkKXRocm93Ik5vIHVuc2VsZWN0ZWQgaW1hZ2UgcHJvdmlkZWQiO3RoaXMuaW1hZ2VPYmo9dGhpcy5pbWFnZWxpc3QubG9hZCh0aGlzLm9wdGlvbnMuaW1hZ2UudW5zZWxlY3RlZCx0aGlzLm9wdGlvbnMuYnJva2VuSW1hZ2UsdGhpcy5pZCksdm9pZCAwIT09dGhpcy5vcHRpb25zLmltYWdlLnNlbGVjdGVkP3RoaXMuaW1hZ2VPYmpBbHQ9dGhpcy5pbWFnZWxpc3QubG9hZCh0aGlzLm9wdGlvbnMuaW1hZ2Uuc2VsZWN0ZWQsdGhpcy5vcHRpb25zLmJyb2tlbkltYWdlLHRoaXMuaWQpOnRoaXMuaW1hZ2VPYmpBbHQ9dm9pZCAwfX19fSx7a2V5OiJjaG9vc2lmeSIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5jaG9vc2VyPSEwO3ZhciBlPVt0LHRoaXMub3B0aW9ucyx0aGlzLmRlZmF1bHRPcHRpb25zXSxpPWwudG9wTW9zdChlLCJjaG9zZW4iKTtpZigiYm9vbGVhbiI9PXR5cGVvZiBpKXRoaXMuY2hvb3Nlcj1pO2Vsc2UgaWYoIm9iamVjdCI9PT0odm9pZCAwPT09aT8idW5kZWZpbmVkIjooMCxzLmRlZmF1bHQpKGkpKSl7dmFyIG89bC50b3BNb3N0KGUsWyJjaG9zZW4iLCJub2RlIl0pOyJib29sZWFuIiE9dHlwZW9mIG8mJiJmdW5jdGlvbiIhPXR5cGVvZiBvfHwodGhpcy5jaG9vc2VyPW8pfX19LHtrZXk6ImdldEZvcm1hdHRpbmdWYWx1ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9e2NvbG9yOnRoaXMub3B0aW9ucy5jb2xvci5iYWNrZ3JvdW5kLGJvcmRlcldpZHRoOnRoaXMub3B0aW9ucy5ib3JkZXJXaWR0aCxib3JkZXJDb2xvcjp0aGlzLm9wdGlvbnMuY29sb3IuYm9yZGVyLHNpemU6dGhpcy5vcHRpb25zLnNpemUsYm9yZGVyRGFzaGVzOnRoaXMub3B0aW9ucy5zaGFwZVByb3BlcnRpZXMuYm9yZGVyRGFzaGVzLGJvcmRlclJhZGl1czp0aGlzLm9wdGlvbnMuc2hhcGVQcm9wZXJ0aWVzLmJvcmRlclJhZGl1cyxzaGFkb3c6dGhpcy5vcHRpb25zLnNoYWRvdy5lbmFibGVkLHNoYWRvd0NvbG9yOnRoaXMub3B0aW9ucy5zaGFkb3cuY29sb3Isc2hhZG93U2l6ZTp0aGlzLm9wdGlvbnMuc2hhZG93LnNpemUsc2hhZG93WDp0aGlzLm9wdGlvbnMuc2hhZG93Lngsc2hhZG93WTp0aGlzLm9wdGlvbnMuc2hhZG93Lnl9O3JldHVybiB0aGlzLnNlbGVjdGVkfHx0aGlzLmhvdmVyPyEwPT09dGhpcy5jaG9vc2VyP3RoaXMuc2VsZWN0ZWQ/KHQuYm9yZGVyV2lkdGgqPTIsdC5jb2xvcj10aGlzLm9wdGlvbnMuY29sb3IuaGlnaGxpZ2h0LmJhY2tncm91bmQsdC5ib3JkZXJDb2xvcj10aGlzLm9wdGlvbnMuY29sb3IuaGlnaGxpZ2h0LmJvcmRlcix0LnNoYWRvdz10aGlzLm9wdGlvbnMuc2hhZG93LmVuYWJsZWQpOnRoaXMuaG92ZXImJih0LmNvbG9yPXRoaXMub3B0aW9ucy5jb2xvci5ob3Zlci5iYWNrZ3JvdW5kLHQuYm9yZGVyQ29sb3I9dGhpcy5vcHRpb25zLmNvbG9yLmhvdmVyLmJvcmRlcix0LnNoYWRvdz10aGlzLm9wdGlvbnMuc2hhZG93LmVuYWJsZWQpOiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmNob29zZXImJih0aGlzLmNob29zZXIodCx0aGlzLm9wdGlvbnMuaWQsdGhpcy5zZWxlY3RlZCx0aGlzLmhvdmVyKSwhMT09PXQuc2hhZG93JiYodC5zaGFkb3dDb2xvcj09PXRoaXMub3B0aW9ucy5zaGFkb3cuY29sb3ImJnQuc2hhZG93U2l6ZT09PXRoaXMub3B0aW9ucy5zaGFkb3cuc2l6ZSYmdC5zaGFkb3dYPT09dGhpcy5vcHRpb25zLnNoYWRvdy54JiZ0LnNoYWRvd1k9PT10aGlzLm9wdGlvbnMuc2hhZG93Lnl8fCh0LnNoYWRvdz0hMCkpKTp0LnNoYWRvdz10aGlzLm9wdGlvbnMuc2hhZG93LmVuYWJsZWQsdH19LHtrZXk6InVwZGF0ZUxhYmVsTW9kdWxlIix2YWx1ZTpmdW5jdGlvbih0KXt2b2lkIDAhPT10aGlzLm9wdGlvbnMubGFiZWwmJm51bGwhPT10aGlzLm9wdGlvbnMubGFiZWx8fCh0aGlzLm9wdGlvbnMubGFiZWw9IiIpLHRoaXMubGFiZWxNb2R1bGUuc2V0T3B0aW9ucyh0aGlzLm9wdGlvbnMsITApLHZvaWQgMCE9PXRoaXMubGFiZWxNb2R1bGUuYmFzZVNpemUmJih0aGlzLmJhc2VGb250U2l6ZT10aGlzLmxhYmVsTW9kdWxlLmJhc2VTaXplKSx0aGlzLmxhYmVsTW9kdWxlLmNvbnN0cmFpbih0aGlzLm5vZGVPcHRpb25zLHQsdGhpcy5kZWZhdWx0T3B0aW9ucyksdGhpcy5sYWJlbE1vZHVsZS5jaG9vc2lmeSh0aGlzLm5vZGVPcHRpb25zLHQsdGhpcy5kZWZhdWx0T3B0aW9ucyl9fSx7a2V5OiJ1cGRhdGVTaGFwZSIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodD09PXRoaXMub3B0aW9ucy5zaGFwZSYmdGhpcy5zaGFwZSl0aGlzLnNoYXBlLnNldE9wdGlvbnModGhpcy5vcHRpb25zLHRoaXMuaW1hZ2VPYmosdGhpcy5pbWFnZU9iakFsdCk7ZWxzZSBzd2l0Y2godGhpcy5vcHRpb25zLnNoYXBlKXtjYXNlImJveCI6dGhpcy5zaGFwZT1uZXcgYyh0aGlzLm9wdGlvbnMsdGhpcy5ib2R5LHRoaXMubGFiZWxNb2R1bGUpO2JyZWFrO2Nhc2UiY2lyY2xlIjp0aGlzLnNoYXBlPW5ldyBwKHRoaXMub3B0aW9ucyx0aGlzLmJvZHksdGhpcy5sYWJlbE1vZHVsZSk7YnJlYWs7Y2FzZSJjaXJjdWxhckltYWdlIjp0aGlzLnNoYXBlPW5ldyBmKHRoaXMub3B0aW9ucyx0aGlzLmJvZHksdGhpcy5sYWJlbE1vZHVsZSx0aGlzLmltYWdlT2JqLHRoaXMuaW1hZ2VPYmpBbHQpO2JyZWFrO2Nhc2UiZGF0YWJhc2UiOnRoaXMuc2hhcGU9bmV3IG0odGhpcy5vcHRpb25zLHRoaXMuYm9keSx0aGlzLmxhYmVsTW9kdWxlKTticmVhaztjYXNlImRpYW1vbmQiOnRoaXMuc2hhcGU9bmV3IHYodGhpcy5vcHRpb25zLHRoaXMuYm9keSx0aGlzLmxhYmVsTW9kdWxlKTticmVhaztjYXNlImRvdCI6dGhpcy5zaGFwZT1uZXcgZyh0aGlzLm9wdGlvbnMsdGhpcy5ib2R5LHRoaXMubGFiZWxNb2R1bGUpO2JyZWFrO2Nhc2UiZWxsaXBzZSI6dGhpcy5zaGFwZT1uZXcgeSh0aGlzLm9wdGlvbnMsdGhpcy5ib2R5LHRoaXMubGFiZWxNb2R1bGUpO2JyZWFrO2Nhc2UiaWNvbiI6dGhpcy5zaGFwZT1uZXcgYih0aGlzLm9wdGlvbnMsdGhpcy5ib2R5LHRoaXMubGFiZWxNb2R1bGUpO2JyZWFrO2Nhc2UiaW1hZ2UiOnRoaXMuc2hhcGU9bmV3IF8odGhpcy5vcHRpb25zLHRoaXMuYm9keSx0aGlzLmxhYmVsTW9kdWxlLHRoaXMuaW1hZ2VPYmosdGhpcy5pbWFnZU9iakFsdCk7YnJlYWs7Y2FzZSJzcXVhcmUiOnRoaXMuc2hhcGU9bmV3IHcodGhpcy5vcHRpb25zLHRoaXMuYm9keSx0aGlzLmxhYmVsTW9kdWxlKTticmVhaztjYXNlInN0YXIiOnRoaXMuc2hhcGU9bmV3IHgodGhpcy5vcHRpb25zLHRoaXMuYm9keSx0aGlzLmxhYmVsTW9kdWxlKTticmVhaztjYXNlInRleHQiOnRoaXMuc2hhcGU9bmV3IGsodGhpcy5vcHRpb25zLHRoaXMuYm9keSx0aGlzLmxhYmVsTW9kdWxlKTticmVhaztjYXNlInRyaWFuZ2xlIjp0aGlzLnNoYXBlPW5ldyBEKHRoaXMub3B0aW9ucyx0aGlzLmJvZHksdGhpcy5sYWJlbE1vZHVsZSk7YnJlYWs7Y2FzZSJ0cmlhbmdsZURvd24iOnRoaXMuc2hhcGU9bmV3IE0odGhpcy5vcHRpb25zLHRoaXMuYm9keSx0aGlzLmxhYmVsTW9kdWxlKTticmVhaztkZWZhdWx0OnRoaXMuc2hhcGU9bmV3IHkodGhpcy5vcHRpb25zLHRoaXMuYm9keSx0aGlzLmxhYmVsTW9kdWxlKX10aGlzLm5lZWRzUmVmcmVzaCgpfX0se2tleToic2VsZWN0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWQ9ITAsdGhpcy5uZWVkc1JlZnJlc2goKX19LHtrZXk6InVuc2VsZWN0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWQ9ITEsdGhpcy5uZWVkc1JlZnJlc2goKX19LHtrZXk6Im5lZWRzUmVmcmVzaCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNoYXBlLnJlZnJlc2hOZWVkZWQ9ITB9fSx7a2V5OiJnZXRUaXRsZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLnRpdGxlfX0se2tleToiZGlzdGFuY2VUb0JvcmRlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5zaGFwZS5kaXN0YW5jZVRvQm9yZGVyKHQsZSl9fSx7a2V5OiJpc0ZpeGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuZml4ZWQueCYmdGhpcy5vcHRpb25zLmZpeGVkLnl9fSx7a2V5OiJpc1NlbGVjdGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGVkfX0se2tleToiZ2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy52YWx1ZX19LHtrZXk6InNldFZhbHVlUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtpZih2b2lkIDAhPT10aGlzLm9wdGlvbnMudmFsdWUpe3ZhciBvPXRoaXMub3B0aW9ucy5zY2FsaW5nLmN1c3RvbVNjYWxpbmdGdW5jdGlvbih0LGUsaSx0aGlzLm9wdGlvbnMudmFsdWUpLG49dGhpcy5vcHRpb25zLnNjYWxpbmcubWF4LXRoaXMub3B0aW9ucy5zY2FsaW5nLm1pbjtpZighMD09PXRoaXMub3B0aW9ucy5zY2FsaW5nLmxhYmVsLmVuYWJsZWQpe3ZhciBzPXRoaXMub3B0aW9ucy5zY2FsaW5nLmxhYmVsLm1heC10aGlzLm9wdGlvbnMuc2NhbGluZy5sYWJlbC5taW47dGhpcy5vcHRpb25zLmZvbnQuc2l6ZT10aGlzLm9wdGlvbnMuc2NhbGluZy5sYWJlbC5taW4rbypzfXRoaXMub3B0aW9ucy5zaXplPXRoaXMub3B0aW9ucy5zY2FsaW5nLm1pbitvKm59ZWxzZSB0aGlzLm9wdGlvbnMuc2l6ZT10aGlzLmJhc2VTaXplLHRoaXMub3B0aW9ucy5mb250LnNpemU9dGhpcy5iYXNlRm9udFNpemU7dGhpcy51cGRhdGVMYWJlbE1vZHVsZSgpfX0se2tleToiZHJhdyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRGb3JtYXR0aW5nVmFsdWVzKCk7dGhpcy5zaGFwZS5kcmF3KHQsdGhpcy54LHRoaXMueSx0aGlzLnNlbGVjdGVkLHRoaXMuaG92ZXIsZSl9fSx7a2V5OiJ1cGRhdGVCb3VuZGluZ0JveCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5zaGFwZS51cGRhdGVCb3VuZGluZ0JveCh0aGlzLngsdGhpcy55LHQpfX0se2tleToicmVzaXplIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldEZvcm1hdHRpbmdWYWx1ZXMoKTt0aGlzLnNoYXBlLnJlc2l6ZSh0LHRoaXMuc2VsZWN0ZWQsdGhpcy5ob3ZlcixlKX19LHtrZXk6ImlzT3ZlcmxhcHBpbmdXaXRoIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zaGFwZS5sZWZ0PHQucmlnaHQmJnRoaXMuc2hhcGUubGVmdCt0aGlzLnNoYXBlLndpZHRoPnQubGVmdCYmdGhpcy5zaGFwZS50b3A8dC5ib3R0b20mJnRoaXMuc2hhcGUudG9wK3RoaXMuc2hhcGUuaGVpZ2h0PnQudG9wfX0se2tleToiaXNCb3VuZGluZ0JveE92ZXJsYXBwaW5nV2l0aCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2hhcGUuYm91bmRpbmdCb3gubGVmdDx0LnJpZ2h0JiZ0aGlzLnNoYXBlLmJvdW5kaW5nQm94LnJpZ2h0PnQubGVmdCYmdGhpcy5zaGFwZS5ib3VuZGluZ0JveC50b3A8dC5ib3R0b20mJnRoaXMuc2hhcGUuYm91bmRpbmdCb3guYm90dG9tPnQudG9wfX1dLFt7a2V5OiJwYXJzZU9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGUsaSl7dmFyIG89YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxuPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTp7fSxzPVsiY29sb3IiLCJmb250IiwiZml4ZWQiLCJzaGFkb3ciXTtpZihsLnNlbGVjdGl2ZU5vdERlZXBFeHRlbmQocyxlLGksbyksdC5jaGVja01hc3MoaSksbC5tZXJnZU9wdGlvbnMoZSxpLCJzaGFkb3ciLG8sbiksdm9pZCAwIT09aS5jb2xvciYmbnVsbCE9PWkuY29sb3Ipe3ZhciByPWwucGFyc2VDb2xvcihpLmNvbG9yKTtsLmZpbGxJZkRlZmluZWQoZS5jb2xvcixyKX1lbHNlITA9PT1vJiZudWxsPT09aS5jb2xvciYmKGUuY29sb3I9bC5icmlkZ2VPYmplY3Qobi5jb2xvcikpDQo7dm9pZCAwIT09aS5maXhlZCYmbnVsbCE9PWkuZml4ZWQmJigiYm9vbGVhbiI9PXR5cGVvZiBpLmZpeGVkPyhlLmZpeGVkLng9aS5maXhlZCxlLmZpeGVkLnk9aS5maXhlZCk6KHZvaWQgMCE9PWkuZml4ZWQueCYmImJvb2xlYW4iPT10eXBlb2YgaS5maXhlZC54JiYoZS5maXhlZC54PWkuZml4ZWQueCksdm9pZCAwIT09aS5maXhlZC55JiYiYm9vbGVhbiI9PXR5cGVvZiBpLmZpeGVkLnkmJihlLmZpeGVkLnk9aS5maXhlZC55KSkpLHZvaWQgMCE9PWkuZm9udCYmbnVsbCE9PWkuZm9udD91LnBhcnNlT3B0aW9ucyhlLmZvbnQsaSk6ITA9PT1vJiZudWxsPT09aS5mb250JiYoZS5mb250PWwuYnJpZGdlT2JqZWN0KG4uZm9udCkpLHZvaWQgMCE9PWkuc2NhbGluZyYmbC5tZXJnZU9wdGlvbnMoZS5zY2FsaW5nLGkuc2NhbGluZywibGFiZWwiLG8sbi5zY2FsaW5nKX19LHtrZXk6ImNoZWNrTWFzcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZih2b2lkIDAhPT10Lm1hc3MmJnQubWFzczw9MCl7dmFyIGk9IiI7dm9pZCAwIT09ZSYmKGk9IiBpbiBub2RlIGlkOiAiK2UpLGNvbnNvbGUubG9nKCIlY05lZ2F0aXZlIG9yIHplcm8gbWFzcyBkaXNhbGxvd2VkIitpKyIsIHNldHRpbmcgbWFzcyB0byAxLiIsTyksdC5tYXNzPTF9fX1dKSx0fSgpO2UuZGVmYXVsdD1DfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoMTcxKSxzPW8obikscj1pKDIpLGE9byhyKSxoPWkoNjIpLGQ9byhoKSxsPWkoMTM1KSx1PW8obCksYz1pKDEzNikscD1vKGMpLGY9aSgxKSxtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe3ZhciBvPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07KDAsdS5kZWZhdWx0KSh0aGlzLHQpLHRoaXMuYm9keT1lLHRoaXMucG9pbnRUb1NlbGY9ITEsdGhpcy5iYXNlU2l6ZT12b2lkIDAsdGhpcy5mb250T3B0aW9ucz17fSx0aGlzLnNldE9wdGlvbnMoaSksdGhpcy5zaXplPXt0b3A6MCxsZWZ0OjAsd2lkdGg6MCxoZWlnaHQ6MCx5TGluZTowfSx0aGlzLmlzRWRnZUxhYmVsPW99cmV0dXJuKDAscC5kZWZhdWx0KSh0LFt7a2V5OiJzZXRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO3RoaXMuZWxlbWVudE9wdGlvbnM9ZSx0aGlzLmZvbnRPcHRpb25zPWYuZGVlcEV4dGVuZCh7fSxlLmZvbnQsITApLHZvaWQgMCE9PWUubGFiZWwmJih0aGlzLmxhYmVsRGlydHk9ITApLHZvaWQgMCE9PWUuZm9udCYmKHQucGFyc2VPcHRpb25zKHRoaXMuZm9udE9wdGlvbnMsZSxpKSwic3RyaW5nIj09dHlwZW9mIGUuZm9udD90aGlzLmJhc2VTaXplPXRoaXMuZm9udE9wdGlvbnMuc2l6ZToib2JqZWN0Ij09PSgwLGQuZGVmYXVsdCkoZS5mb250KSYmdm9pZCAwIT09ZS5mb250LnNpemUmJih0aGlzLmJhc2VTaXplPWUuZm9udC5zaXplKSl9fSx7a2V5OiJjb25zdHJhaW4iLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmZvbnRPcHRpb25zLmNvbnN0cmFpbldpZHRoPSExLHRoaXMuZm9udE9wdGlvbnMubWF4V2R0PS0xLHRoaXMuZm9udE9wdGlvbnMubWluV2R0PS0xO3ZhciBvPVtlLHQsaV0sbj1mLnRvcE1vc3Qobywid2lkdGhDb25zdHJhaW50Iik7aWYoIm51bWJlciI9PXR5cGVvZiBuKXRoaXMuZm9udE9wdGlvbnMubWF4V2R0PU51bWJlcihuKSx0aGlzLmZvbnRPcHRpb25zLm1pbldkdD1OdW1iZXIobik7ZWxzZSBpZigib2JqZWN0Ij09PSh2b2lkIDA9PT1uPyJ1bmRlZmluZWQiOigwLGQuZGVmYXVsdCkobikpKXt2YXIgcz1mLnRvcE1vc3QobyxbIndpZHRoQ29uc3RyYWludCIsIm1heGltdW0iXSk7Im51bWJlciI9PXR5cGVvZiBzJiYodGhpcy5mb250T3B0aW9ucy5tYXhXZHQ9TnVtYmVyKHMpKTt2YXIgcj1mLnRvcE1vc3QobyxbIndpZHRoQ29uc3RyYWludCIsIm1pbmltdW0iXSk7Im51bWJlciI9PXR5cGVvZiByJiYodGhpcy5mb250T3B0aW9ucy5taW5XZHQ9TnVtYmVyKHIpKX10aGlzLmZvbnRPcHRpb25zLmNvbnN0cmFpbkhlaWdodD0hMSx0aGlzLmZvbnRPcHRpb25zLm1pbkhndD0tMSx0aGlzLmZvbnRPcHRpb25zLnZhbGlnbj0ibWlkZGxlIjt2YXIgYT1mLnRvcE1vc3QobywiaGVpZ2h0Q29uc3RyYWludCIpO2lmKCJudW1iZXIiPT10eXBlb2YgYSl0aGlzLmZvbnRPcHRpb25zLm1pbkhndD1OdW1iZXIoYSk7ZWxzZSBpZigib2JqZWN0Ij09PSh2b2lkIDA9PT1hPyJ1bmRlZmluZWQiOigwLGQuZGVmYXVsdCkoYSkpKXt2YXIgaD1mLnRvcE1vc3QobyxbImhlaWdodENvbnN0cmFpbnQiLCJtaW5pbXVtIl0pOyJudW1iZXIiPT10eXBlb2YgaCYmKHRoaXMuZm9udE9wdGlvbnMubWluSGd0PU51bWJlcihoKSk7dmFyIGw9Zi50b3BNb3N0KG8sWyJoZWlnaHRDb25zdHJhaW50IiwidmFsaWduIl0pOyJzdHJpbmciPT10eXBlb2YgbCYmKCJ0b3AiIT09bCYmImJvdHRvbSIhPT1sfHwodGhpcy5mb250T3B0aW9ucy52YWxpZ249bCkpfX19LHtrZXk6ImNob29zaWZ5Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5mb250T3B0aW9ucy5jaG9vc2VyPSEwO3ZhciBvPVtlLHQsaV0sbj1mLnRvcE1vc3QobywiY2hvc2VuIik7aWYoImJvb2xlYW4iPT10eXBlb2Ygbil0aGlzLmZvbnRPcHRpb25zLmNob29zZXI9bjtlbHNlIGlmKCJvYmplY3QiPT09KHZvaWQgMD09PW4/InVuZGVmaW5lZCI6KDAsZC5kZWZhdWx0KShuKSkpe3ZhciBzPWYudG9wTW9zdChvLFsiY2hvc2VuIiwibGFiZWwiXSk7ImJvb2xlYW4iIT10eXBlb2YgcyYmImZ1bmN0aW9uIiE9dHlwZW9mIHN8fCh0aGlzLmZvbnRPcHRpb25zLmNob29zZXI9cyl9fX0se2tleToiYWRqdXN0U2l6ZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQ/dC5yaWdodCt0LmxlZnQ6MDt0aGlzLmZvbnRPcHRpb25zLmNvbnN0cmFpbldpZHRoJiYodGhpcy5mb250T3B0aW9ucy5tYXhXZHQtPWUsdGhpcy5mb250T3B0aW9ucy5taW5XZHQtPWUpO3ZhciBpPXQ/dC50b3ArdC5ib3R0b206MDt0aGlzLmZvbnRPcHRpb25zLmNvbnN0cmFpbkhlaWdodCYmKHRoaXMuZm9udE9wdGlvbnMubWluSGd0LT1pKX19LHtrZXk6InByb3BhZ2F0ZUZvbnRzIix2YWx1ZTpmdW5jdGlvbihlLGksbyl7aWYodGhpcy5mb250T3B0aW9ucy5tdWx0aSl7dmFyIG49ZnVuY3Rpb24odCxlKXtpZighdHx8IXQuZm9udClyZXR1cm4gbnVsbDt2YXIgaT10LmZvbnQ7aWYoZSl7aWYoIWlbZV0pcmV0dXJuIG51bGw7aT1pW2VdfXJldHVybiBpfSxzPWZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1uKHQsZSk7cmV0dXJuIG8mJm8uaGFzT3duUHJvcGVydHkoaSk/b1tpXTpudWxsfSxyPVsiYm9sZCIsIml0YWwiLCJib2xkaXRhbCIsIm1vbm8iXSxoPSEwLGQ9ITEsbD12b2lkIDA7dHJ5e2Zvcih2YXIgdSxjPSgwLGEuZGVmYXVsdCkocik7IShoPSh1PWMubmV4dCgpKS5kb25lKTtoPSEwKXt2YXIgcD11LnZhbHVlLGY9dGhpcy5mb250T3B0aW9uc1twXSxtPW8uZm9udFtwXTtpZih0LnBhcnNlRm9udFN0cmluZyhmLG4oZSxwKSkpZi52YWRqdXN0PXRoaXMuZm9udE9wdGlvbnMudmFkanVzdCxmLm1vZD1tLm1vZDtlbHNle2YuZmFjZT1zKGUscCwiZmFjZSIpfHxzKGkscCwiZmFjZSIpfHwoIm1vbm8iPT09cD9tLmZhY2U6bnVsbCl8fHMoaSxudWxsLCJmYWNlIil8fHRoaXMuZm9udE9wdGlvbnMuZmFjZSxmLmNvbG9yPXMoZSxwLCJjb2xvciIpfHxzKGkscCwiY29sb3IiKXx8cyhpLG51bGwsImNvbG9yIil8fHRoaXMuZm9udE9wdGlvbnMuY29sb3IsZi5tb2Q9cyhlLHAsIm1vZCIpfHxzKGkscCwibW9kIil8fHMoaSxudWxsLCJtb2QiKXx8bS5tb2Q7dmFyIHY9dm9pZCAwO2YuZmFjZT09PW0uZmFjZSYmdGhpcy5mb250T3B0aW9ucy5mYWNlPT09by5mb250LmZhY2UmJih2PXRoaXMuZm9udE9wdGlvbnMuc2l6ZS9OdW1iZXIoby5mb250LnNpemUpKSxmLnNpemU9cyhlLHAsInNpemUiKXx8cyhpLHAsInNpemUiKXx8KHY/bS5zaXplKnY6bnVsbCl8fHMoaSxudWxsLCJzaXplIil8fHRoaXMuZm9udE9wdGlvbnMuc2l6ZSxmLnZhZGp1c3Q9cyhlLHAsInZhZGp1c3QiKXx8cyhpLHAsInZhZGp1c3QiKXx8KHY/bS52YWRqdXN0Kk1hdGgucm91bmQodik6bnVsbCl8fHRoaXMuZm9udE9wdGlvbnMudmFkanVzdH1mLnNpemU9TnVtYmVyKGYuc2l6ZSksZi52YWRqdXN0PU51bWJlcihmLnZhZGp1c3QpfX1jYXRjaCh0KXtkPSEwLGw9dH1maW5hbGx5e3RyeXshaCYmYy5yZXR1cm4mJmMucmV0dXJuKCl9ZmluYWxseXtpZihkKXRocm93IGx9fX19fSx7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvLG4pe3ZhciBzPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XToibWlkZGxlIjtpZih2b2lkIDAhPT10aGlzLmVsZW1lbnRPcHRpb25zLmxhYmVsKXt2YXIgcj10aGlzLmZvbnRPcHRpb25zLnNpemUqdGhpcy5ib2R5LnZpZXcuc2NhbGU7dGhpcy5lbGVtZW50T3B0aW9ucy5sYWJlbCYmcjx0aGlzLmVsZW1lbnRPcHRpb25zLnNjYWxpbmcubGFiZWwuZHJhd1RocmVzaG9sZC0xfHwodGhpcy5jYWxjdWxhdGVMYWJlbFNpemUodCxvLG4sZSxpLHMpLHRoaXMuX2RyYXdCYWNrZ3JvdW5kKHQpLHRoaXMuX2RyYXdUZXh0KHQsbyxuLGUsaSxzKSl9fX0se2tleToiX2RyYXdCYWNrZ3JvdW5kIix2YWx1ZTpmdW5jdGlvbih0KXtpZih2b2lkIDAhPT10aGlzLmZvbnRPcHRpb25zLmJhY2tncm91bmQmJiJub25lIiE9PXRoaXMuZm9udE9wdGlvbnMuYmFja2dyb3VuZCl7dC5maWxsU3R5bGU9dGhpcy5mb250T3B0aW9ucy5iYWNrZ3JvdW5kO2lmKHRoaXMuaXNFZGdlTGFiZWwpc3dpdGNoKHRoaXMuZm9udE9wdGlvbnMuYWxpZ24pe2Nhc2UibWlkZGxlIjp0LmZpbGxSZWN0KC41Ki10aGlzLnNpemUud2lkdGgsLjUqLXRoaXMuc2l6ZS5oZWlnaHQsdGhpcy5zaXplLndpZHRoLHRoaXMuc2l6ZS5oZWlnaHQpO2JyZWFrO2Nhc2UidG9wIjp0LmZpbGxSZWN0KC41Ki10aGlzLnNpemUud2lkdGgsLSh0aGlzLnNpemUuaGVpZ2h0KzIpLHRoaXMuc2l6ZS53aWR0aCx0aGlzLnNpemUuaGVpZ2h0KTticmVhaztjYXNlImJvdHRvbSI6dC5maWxsUmVjdCguNSotdGhpcy5zaXplLndpZHRoLDIsdGhpcy5zaXplLndpZHRoLHRoaXMuc2l6ZS5oZWlnaHQpO2JyZWFrO2RlZmF1bHQ6dC5maWxsUmVjdCh0aGlzLnNpemUubGVmdCx0aGlzLnNpemUudG9wLTEsdGhpcy5zaXplLndpZHRoLHRoaXMuc2l6ZS5oZWlnaHQpfWVsc2UgdC5maWxsUmVjdCh0aGlzLnNpemUubGVmdCx0aGlzLnNpemUudG9wLTEsdGhpcy5zaXplLndpZHRoLHRoaXMuc2l6ZS5oZWlnaHQpfX19LHtrZXk6Il9kcmF3VGV4dCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06Im1pZGRsZSIsYT10aGlzLmZvbnRPcHRpb25zLnNpemUsaD1hKnRoaXMuYm9keS52aWV3LnNjYWxlO2g+PXRoaXMuZWxlbWVudE9wdGlvbnMuc2NhbGluZy5sYWJlbC5tYXhWaXNpYmxlJiYoYT1OdW1iZXIodGhpcy5lbGVtZW50T3B0aW9ucy5zY2FsaW5nLmxhYmVsLm1heFZpc2libGUpL3RoaXMuYm9keS52aWV3LnNjYWxlKTt2YXIgZD10aGlzLnNpemUueUxpbmUsbD10aGlzLl9zZXRBbGlnbm1lbnQodCxvLGQsciksdT0oMCxzLmRlZmF1bHQpKGwsMik7bz11WzBdLGQ9dVsxXSx0LnRleHRBbGlnbj0ibGVmdCIsby09dGhpcy5zaXplLndpZHRoLzIsdGhpcy5mb250T3B0aW9ucy52YWxpZ24mJnRoaXMuc2l6ZS5oZWlnaHQ+dGhpcy5zaXplLmxhYmVsSGVpZ2h0JiYoInRvcCI9PT10aGlzLmZvbnRPcHRpb25zLnZhbGlnbiYmKGQtPSh0aGlzLnNpemUuaGVpZ2h0LXRoaXMuc2l6ZS5sYWJlbEhlaWdodCkvMiksImJvdHRvbSI9PT10aGlzLmZvbnRPcHRpb25zLnZhbGlnbiYmKGQrPSh0aGlzLnNpemUuaGVpZ2h0LXRoaXMuc2l6ZS5sYWJlbEhlaWdodCkvMikpO2Zvcih2YXIgYz0wO2M8dGhpcy5saW5lQ291bnQ7YysrKWlmKHRoaXMubGluZXNbY10mJnRoaXMubGluZXNbY10uYmxvY2tzKXt2YXIgcD0wO3RoaXMuaXNFZGdlTGFiZWx8fCJjZW50ZXIiPT09dGhpcy5mb250T3B0aW9ucy5hbGlnbj9wKz0odGhpcy5zaXplLndpZHRoLXRoaXMubGluZXNbY10ud2lkdGgpLzI6InJpZ2h0Ij09PXRoaXMuZm9udE9wdGlvbnMuYWxpZ24mJihwKz10aGlzLnNpemUud2lkdGgtdGhpcy5saW5lc1tjXS53aWR0aCk7Zm9yKHZhciBmPTA7Zjx0aGlzLmxpbmVzW2NdLmJsb2Nrcy5sZW5ndGg7ZisrKXt2YXIgbT10aGlzLmxpbmVzW2NdLmJsb2Nrc1tmXTt0LmZvbnQ9bS5mb250O3ZhciB2PXRoaXMuX2dldENvbG9yKG0uY29sb3IsaCxtLnN0cm9rZUNvbG9yKSxnPSgwLHMuZGVmYXVsdCkodiwyKSx5PWdbMF0sYj1nWzFdO20uc3Ryb2tlV2lkdGg+MCYmKHQubGluZVdpZHRoPW0uc3Ryb2tlV2lkdGgsdC5zdHJva2VTdHlsZT1iLHQubGluZUpvaW49InJvdW5kIiksdC5maWxsU3R5bGU9eSxtLnN0cm9rZVdpZHRoPjAmJnQuc3Ryb2tlVGV4dChtLnRleHQsbytwLGQrbS52YWRqdXN0KSx0LmZpbGxUZXh0KG0udGV4dCxvK3AsZCttLnZhZGp1c3QpLHArPW0ud2lkdGh9ZCs9dGhpcy5saW5lc1tjXS5oZWlnaHR9fX0se2tleToiX3NldEFsaWdubWVudCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyl7aWYodGhpcy5pc0VkZ2VMYWJlbCYmImhvcml6b250YWwiIT09dGhpcy5mb250T3B0aW9ucy5hbGlnbiYmITE9PT10aGlzLnBvaW50VG9TZWxmKXtlPTAsaT0wOyJ0b3AiPT09dGhpcy5mb250T3B0aW9ucy5hbGlnbj8odC50ZXh0QmFzZWxpbmU9ImFscGhhYmV0aWMiLGktPTQpOiJib3R0b20iPT09dGhpcy5mb250T3B0aW9ucy5hbGlnbj8odC50ZXh0QmFzZWxpbmU9ImhhbmdpbmciLGkrPTQpOnQudGV4dEJhc2VsaW5lPSJtaWRkbGUifWVsc2UgdC50ZXh0QmFzZWxpbmU9bztyZXR1cm5bZSxpXX19LHtrZXk6Il9nZXRDb2xvciIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBvPXR8fCIjMDAwMDAwIixuPWl8fCIjZmZmZmZmIjtpZihlPD10aGlzLmVsZW1lbnRPcHRpb25zLnNjYWxpbmcubGFiZWwuZHJhd1RocmVzaG9sZCl7dmFyIHM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLDEtKHRoaXMuZWxlbWVudE9wdGlvbnMuc2NhbGluZy5sYWJlbC5kcmF3VGhyZXNob2xkLWUpKSk7bz1mLm92ZXJyaWRlT3BhY2l0eShvLHMpLG49Zi5vdmVycmlkZU9wYWNpdHkobixzKX1yZXR1cm5bbyxuXX19LHtrZXk6ImdldFRleHRTaXplIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtyZXR1cm4gdGhpcy5fcHJvY2Vzc0xhYmVsKHQsZSxpKSx7d2lkdGg6dGhpcy5zaXplLndpZHRoLGhlaWdodDp0aGlzLnNpemUuaGVpZ2h0LGxpbmVDb3VudDp0aGlzLmxpbmVDb3VudH19fSx7a2V5OiJjYWxjdWxhdGVMYWJlbFNpemUiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MCxuPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTowLHM9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOiJtaWRkbGUiOyEwPT09dGhpcy5sYWJlbERpcnR5JiZ0aGlzLl9wcm9jZXNzTGFiZWwodCxlLGkpLHRoaXMuc2l6ZS5sZWZ0PW8tLjUqdGhpcy5zaXplLndpZHRoLHRoaXMuc2l6ZS50b3A9bi0uNSp0aGlzLnNpemUuaGVpZ2h0LHRoaXMuc2l6ZS55TGluZT1uKy41KigxLXRoaXMubGluZUNvdW50KSp0aGlzLmZvbnRPcHRpb25zLnNpemUsImhhbmdpbmciPT09cyYmKHRoaXMuc2l6ZS50b3ArPS41KnRoaXMuZm9udE9wdGlvbnMuc2l6ZSx0aGlzLnNpemUudG9wKz00LHRoaXMuc2l6ZS55TGluZSs9NCksdGhpcy5sYWJlbERpcnR5PSExfX0se2tleToiZGVjb2RlTWFya3VwU3lzdGVtIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0ibm9uZSI7cmV0dXJuIm1hcmtkb3duIj09PXR8fCJtZCI9PT10P2U9Im1hcmtkb3duIjohMCE9PXQmJiJodG1sIiE9PXR8fChlPSJodG1sIiksZX19LHtrZXk6InNwbGl0QmxvY2tzIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZGVjb2RlTWFya3VwU3lzdGVtKGUpO3JldHVybiJub25lIj09PWk/W3t0ZXh0OnQsbW9kOiJub3JtYWwifV06Im1hcmtkb3duIj09PWk/dGhpcy5zcGxpdE1hcmtkb3duQmxvY2tzKHQpOiJodG1sIj09PWk/dGhpcy5zcGxpdEh0bWxCbG9ja3ModCk6dm9pZCAwfX0se2tleToic3BsaXRNYXJrZG93bkJsb2NrcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9W10saT17Ym9sZDohMSxpdGFsOiExLG1vbm86ITEsYmVnaW5hYmxlOiEwLHNwYWNpbmc6ITEscG9zaXRpb246MCxidWZmZXI6IiIsbW9kU3RhY2s6W119O2ZvcihpLm1vZD1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5tb2RTdGFjay5sZW5ndGg/Im5vcm1hbCI6dGhpcy5tb2RTdGFja1swXX0saS5tb2ROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLm1vZFN0YWNrLmxlbmd0aD8ibm9ybWFsIjoibW9ubyI9PT10aGlzLm1vZFN0YWNrWzBdPyJtb25vIjppLmJvbGQmJmkuaXRhbD8iYm9sZGl0YWwiOmkuYm9sZD8iYm9sZCI6aS5pdGFsPyJpdGFsIjp2b2lkIDB9LGkuZW1pdEJsb2NrPWZ1bmN0aW9uKCl7YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTt0aGlzLnNwYWNpbmcmJih0aGlzLmFkZCgiICIpLHRoaXMuc3BhY2luZz0hMSksdGhpcy5idWZmZXIubGVuZ3RoPjAmJihlLnB1c2goe3RleHQ6dGhpcy5idWZmZXIsbW9kOnRoaXMubW9kTmFtZSgpfSksdGhpcy5idWZmZXI9IiIpfSxpLmFkZD1mdW5jdGlvbih0KXsiICI9PT10JiYoaS5zcGFjaW5nPSEwKSxpLnNwYWNpbmcmJih0aGlzLmJ1ZmZlcis9IiAiLHRoaXMuc3BhY2luZz0hMSksIiAiIT10JiYodGhpcy5idWZmZXIrPXQpfTtpLnBvc2l0aW9uPHQubGVuZ3RoOyl7dmFyIG89dC5jaGFyQXQoaS5wb3NpdGlvbik7L1sgXHRdLy50ZXN0KG8pPyhpLm1vbm8/aS5hZGQobyk6aS5zcGFjaW5nPSEwLGkuYmVnaW5hYmxlPSEwKTovXFwvLnRlc3Qobyk/aS5wb3NpdGlvbjx0Lmxlbmd0aCsxJiYoaS5wb3NpdGlvbisrLG89dC5jaGFyQXQoaS5wb3NpdGlvbiksLyBcdC8udGVzdChvKT9pLnNwYWNpbmc9ITA6KGkuYWRkKG8pLGkuYmVnaW5hYmxlPSExKSk6aS5tb25vfHxpLmJvbGR8fCFpLmJlZ2luYWJsZSYmIWkuc3BhY2luZ3x8IS9cKi8udGVzdChvKT9pLm1vbm98fGkuaXRhbHx8IWkuYmVnaW5hYmxlJiYhaS5zcGFjaW5nfHwhL1xfLy50ZXN0KG8pPyFpLm1vbm8mJihpLmJlZ2luYWJsZXx8aS5zcGFjaW5nKSYmL2AvLnRlc3Qobyk/KGkuZW1pdEJsb2NrKCksaS5tb25vPSEwLGkubW9kU3RhY2sudW5zaGlmdCgibW9ubyIpKTohaS5tb25vJiYiYm9sZCI9PT1pLm1vZCgpJiYvXCovLnRlc3Qobyk/aS5wb3NpdGlvbj09PXQubGVuZ3RoLTF8fC9bLixfYCBcdFxuXS8udGVzdCh0LmNoYXJBdChpLnBvc2l0aW9uKzEpKT8oaS5lbWl0QmxvY2soKSxpLmJvbGQ9ITEsaS5tb2RTdGFjay5zaGlmdCgpKTppLmFkZChvKTohaS5tb25vJiYiaXRhbCI9PT1pLm1vZCgpJiYvXF8vLnRlc3Qobyk/aS5wb3NpdGlvbj09PXQubGVuZ3RoLTF8fC9bLiwqYCBcdFxuXS8udGVzdCh0LmNoYXJBdChpLnBvc2l0aW9uKzEpKT8oaS5lbWl0QmxvY2soKSxpLml0YWw9ITEsaS5tb2RTdGFjay5zaGlmdCgpKTppLmFkZChvKTppLm1vbm8mJiJtb25vIj09PWkubW9kKCkmJi9gLy50ZXN0KG8pP2kucG9zaXRpb249PT10Lmxlbmd0aC0xfHwvWy4sKl8gXHRcbl0vLnRlc3QodC5jaGFyQXQoaS5wb3NpdGlvbisxKSk/KGkuZW1pdEJsb2NrKCksaS5tb25vPSExLGkubW9kU3RhY2suc2hpZnQoKSk6aS5hZGQobyk6KGkuYWRkKG8pLGkuYmVnaW5hYmxlPSExKTooaS5lbWl0QmxvY2soKSxpLml0YWw9ITAsaS5tb2RTdGFjay51bnNoaWZ0KCJpdGFsIikpOihpLmVtaXRCbG9jaygpLGkuYm9sZD0hMCxpLm1vZFN0YWNrLnVuc2hpZnQoImJvbGQiKSksaS5wb3NpdGlvbisrfXJldHVybiBpLmVtaXRCbG9jaygpLGV9fSx7a2V5OiJzcGxpdEh0bWxCbG9ja3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPVtdLGk9e2JvbGQ6ITEsaXRhbDohMSxtb25vOiExLHNwYWNpbmc6ITEscG9zaXRpb246MCxidWZmZXI6IiIsbW9kU3RhY2s6W119O2ZvcihpLm1vZD1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5tb2RTdGFjay5sZW5ndGg/Im5vcm1hbCI6dGhpcy5tb2RTdGFja1swXX0saS5tb2ROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLm1vZFN0YWNrLmxlbmd0aD8ibm9ybWFsIjoibW9ubyI9PT10aGlzLm1vZFN0YWNrWzBdPyJtb25vIjppLmJvbGQmJmkuaXRhbD8iYm9sZGl0YWwiOmkuYm9sZD8iYm9sZCI6aS5pdGFsPyJpdGFsIjp2b2lkIDB9LGkuZW1pdEJsb2NrPWZ1bmN0aW9uKCl7YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTt0aGlzLnNwYWNpbmcmJih0aGlzLmFkZCgiICIpLHRoaXMuc3BhY2luZz0hMSksdGhpcy5idWZmZXIubGVuZ3RoPjAmJihlLnB1c2goe3RleHQ6dGhpcy5idWZmZXIsbW9kOnRoaXMubW9kTmFtZSgpfSksdGhpcy5idWZmZXI9IiIpfSxpLmFkZD1mdW5jdGlvbih0KXsiICI9PT10JiYoaS5zcGFjaW5nPSEwKSxpLnNwYWNpbmcmJih0aGlzLmJ1ZmZlcis9IiAiLHRoaXMuc3BhY2luZz0hMSksIiAiIT10JiYodGhpcy5idWZmZXIrPXQpfTtpLnBvc2l0aW9uPHQubGVuZ3RoOyl7dmFyIG89dC5jaGFyQXQoaS5wb3NpdGlvbik7L1sgXHRdLy50ZXN0KG8pP2kubW9ubz9pLmFkZChvKTppLnNwYWNpbmc9ITA6LzwvLnRlc3Qobyk/aS5tb25vfHxpLmJvbGR8fCEvPGI+Ly50ZXN0KHQuc3Vic3RyKGkucG9zaXRpb24sMykpP2kubW9ub3x8aS5pdGFsfHwhLzxpPi8udGVzdCh0LnN1YnN0cihpLnBvc2l0aW9uLDMpKT8haS5tb25vJiYvPGNvZGU+Ly50ZXN0KHQuc3Vic3RyKGkucG9zaXRpb24sNikpPyhpLmVtaXRCbG9jaygpLGkubW9ubz0hMCxpLm1vZFN0YWNrLnVuc2hpZnQoIm1vbm8iKSxpLnBvc2l0aW9uKz01KTohaS5tb25vJiYiYm9sZCI9PT1pLm1vZCgpJiYvPFwvYj4vLnRlc3QodC5zdWJzdHIoaS5wb3NpdGlvbiw0KSk/KGkuZW1pdEJsb2NrKCksaS5ib2xkPSExLGkubW9kU3RhY2suc2hpZnQoKSxpLnBvc2l0aW9uKz0zKTohaS5tb25vJiYiaXRhbCI9PT1pLm1vZCgpJiYvPFwvaT4vLnRlc3QodC5zdWJzdHIoaS5wb3NpdGlvbiw0KSk/KGkuZW1pdEJsb2NrKCksaS5pdGFsPSExLGkubW9kU3RhY2suc2hpZnQoKSxpLnBvc2l0aW9uKz0zKToibW9ubyI9PT1pLm1vZCgpJiYvPFwvY29kZT4vLnRlc3QodC5zdWJzdHIoaS5wb3NpdGlvbiw3KSk/KGkuZW1pdEJsb2NrKCksaS5tb25vPSExLGkubW9kU3RhY2suc2hpZnQoKSxpLnBvc2l0aW9uKz02KTppLmFkZChvKTooaS5lbWl0QmxvY2soKSxpLml0YWw9ITAsaS5tb2RTdGFjay51bnNoaWZ0KCJpdGFsIiksaS5wb3NpdGlvbis9Mik6KGkuZW1pdEJsb2NrKCksaS5ib2xkPSEwLGkubW9kU3RhY2sudW5zaGlmdCgiYm9sZCIpLGkucG9zaXRpb24rPTIpOi8mLy50ZXN0KG8pPy8mbHQ7Ly50ZXN0KHQuc3Vic3RyKGkucG9zaXRpb24sNCkpPyhpLmFkZCgiPCIpLGkucG9zaXRpb24rPTMpOi8mYW1wOy8udGVzdCh0LnN1YnN0cihpLnBvc2l0aW9uLDUpKT8oaS5hZGQoIiYiKSxpLnBvc2l0aW9uKz00KTppLmFkZCgiJiIpOmkuYWRkKG8pLGkucG9zaXRpb24rK31yZXR1cm4gaS5lbWl0QmxvY2soKSxlfX0se2tleToiZ2V0Rm9ybWF0dGluZ1ZhbHVlcyIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyl7dmFyIG49ZnVuY3Rpb24odCxlLGkpe3JldHVybiJub3JtYWwiPT09ZT8ibW9kIj09PWk/IiI6dFtpXTp0W2VdW2ldP3RbZV1baV06dFtpXX0scz17Y29sb3I6bih0aGlzLmZvbnRPcHRpb25zLG8sImNvbG9yIiksc2l6ZTpuKHRoaXMuZm9udE9wdGlvbnMsbywic2l6ZSIpLGZhY2U6bih0aGlzLmZvbnRPcHRpb25zLG8sImZhY2UiKSxtb2Q6bih0aGlzLmZvbnRPcHRpb25zLG8sIm1vZCIpLHZhZGp1c3Q6bih0aGlzLmZvbnRPcHRpb25zLG8sInZhZGp1c3QiKSxzdHJva2VXaWR0aDp0aGlzLmZvbnRPcHRpb25zLnN0cm9rZVdpZHRoLHN0cm9rZUNvbG9yOnRoaXMuZm9udE9wdGlvbnMuc3Ryb2tlQ29sb3J9O3JldHVybihlfHxpKSYmKCJub3JtYWwiPT09byYmITA9PT10aGlzLmZvbnRPcHRpb25zLmNob29zZXImJnRoaXMuZWxlbWVudE9wdGlvbnMubGFiZWxIaWdobGlnaHRCb2xkP3MubW9kPSJib2xkIjoiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5mb250T3B0aW9ucy5jaG9vc2VyJiZ0aGlzLmZvbnRPcHRpb25zLmNob29zZXIocyx0aGlzLmVsZW1lbnRPcHRpb25zLmlkLGUsaSkpLHQuZm9udD0ocy5tb2QrIiAiK3Muc2l6ZSsicHggIitzLmZhY2UpLnJlcGxhY2UoLyIvZywiIikscy5mb250PXQuZm9udCxzLmhlaWdodD1zLnNpemUsc319LHtrZXk6ImRpZmZlcmVudFN0YXRlIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0IT09dGhpcy5mb250T3B0aW9ucy5zZWxlY3RlZFN0YXRlJiZlIT09dGhpcy5mb250T3B0aW9ucy5ob3ZlclN0YXRlfX0se2tleToiX3Byb2Nlc3NMYWJlbCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBvPTAsbj0wLHM9W10scj0wO2lmKHMuYWRkPWZ1bmN0aW9uKHQsZSxpLG8sbixzLHIsYSxoLGQpe3RoaXMubGVuZ3RoPT10JiYodGhpc1t0XT17d2lkdGg6MCxoZWlnaHQ6MCxibG9ja3M6W119KSx0aGlzW3RdLmJsb2Nrcy5wdXNoKHt0ZXh0OmUsZm9udDppLGNvbG9yOm8sd2lkdGg6bixoZWlnaHQ6cyx2YWRqdXN0OnIsbW9kOmEsc3Ryb2tlV2lkdGg6aCxzdHJva2VDb2xvcjpkfSl9LHMuYWNjdW11bGF0ZT1mdW5jdGlvbih0LGUsaSl7dGhpc1t0XS53aWR0aCs9ZSx0aGlzW3RdLmhlaWdodD1pPnRoaXNbdF0uaGVpZ2h0P2k6dGhpc1t0XS5oZWlnaHR9LHMuYWRkQW5kQWNjdW11bGF0ZT1mdW5jdGlvbih0LGUsaSxvLG4scyxyLGEsaCxkKXt0aGlzLmFkZCh0LGUsaSxvLG4scyxyLGEsaCxkKSx0aGlzLmFjY3VtdWxhdGUodCxuLHMpfSx2b2lkIDAhPT10aGlzLmVsZW1lbnRPcHRpb25zLmxhYmVsKXt2YXIgYT1TdHJpbmcodGhpcy5lbGVtZW50T3B0aW9ucy5sYWJlbCkuc3BsaXQoIlxuIiksaD1hLmxlbmd0aDtpZih0aGlzLmVsZW1lbnRPcHRpb25zLmZvbnQubXVsdGkpZm9yKHZhciBkPTA7ZDxoO2QrKyl7dmFyIGw9dGhpcy5zcGxpdEJsb2NrcyhhW2RdLHRoaXMuZWxlbWVudE9wdGlvbnMuZm9udC5tdWx0aSksdT0wLGM9MDtpZihsKXtpZigwPT1sLmxlbmd0aCl7dmFyIHA9dGhpcy5nZXRGb3JtYXR0aW5nVmFsdWVzKHQsZSxpLCJub3JtYWwiKTtzLmFkZEFuZEFjY3VtdWxhdGUociwiIixwLmZvbnQscC5jb2xvciwwLHAuc2l6ZSxwLnZhZGp1c3QsIm5vcm1hbCIscC5zdHJva2VXaWR0aCxwLnN0cm9rZUNvbG9yKSxuKz1zW3JdLmhlaWdodCxyKys7Y29udGludWV9Zm9yKHZhciBmPTA7ZjxsLmxlbmd0aDtmKyspaWYodGhpcy5mb250T3B0aW9ucy5tYXhXZHQ+MClmb3IodmFyIG09dGhpcy5nZXRGb3JtYXR0aW5nVmFsdWVzKHQsZSxpLGxbZl0ubW9kKSx2PWxbZl0udGV4dC5zcGxpdCgiICIpLGc9ITAseT0iIixiPXt3aWR0aDowfSxfPXZvaWQgMCx3PTA7dzx2Lmxlbmd0aDspe3ZhciB4PWc/IiI6IiAiO189YixiPXQubWVhc3VyZVRleHQoeSt4K3Zbd10pLHUrYi53aWR0aD50aGlzLmZvbnRPcHRpb25zLm1heFdkdCYmMCE9Xy53aWR0aD8oYz1tLmhlaWdodD5jP20uaGVpZ2h0OmMscy5hZGQocix5LG0uZm9udCxtLmNvbG9yLF8ud2lkdGgsbS5oZWlnaHQsbS52YWRqdXN0LGxbZl0ubW9kLG0uc3Ryb2tlV2lkdGgsbS5zdHJva2VDb2xvcikscy5hY2N1bXVsYXRlKHIsXy53aWR0aCxjKSx5PSIiLGc9ITAsdT0wLG89c1tyXS53aWR0aD5vP3Nbcl0ud2lkdGg6byxuKz1zW3JdLmhlaWdodCxyKyspOih5PXkreCt2W3ddLHc9PT12Lmxlbmd0aC0xJiYoYz1tLmhlaWdodD5jP20uaGVpZ2h0OmMsdSs9Yi53aWR0aCxzLmFkZChyLHksbS5mb250LG0uY29sb3IsYi53aWR0aCxtLmhlaWdodCxtLnZhZGp1c3QsbFtmXS5tb2QsbS5zdHJva2VXaWR0aCxtLnN0cm9rZUNvbG9yKSxzLmFjY3VtdWxhdGUocixiLndpZHRoLGMpLGY9PT1sLmxlbmd0aC0xJiYobz1zW3JdLndpZHRoPm8/c1tyXS53aWR0aDpvLG4rPXNbcl0uaGVpZ2h0LHIrKykpLHcrKyxnPSExKX1lbHNle3ZhciBrPXRoaXMuZ2V0Rm9ybWF0dGluZ1ZhbHVlcyh0LGUsaSxsW2ZdLm1vZCksRD10Lm1lYXN1cmVUZXh0KGxbZl0udGV4dCk7cy5hZGRBbmRBY2N1bXVsYXRlKHIsbFtmXS50ZXh0LGsuZm9udCxrLmNvbG9yLEQud2lkdGgsay5oZWlnaHQsay52YWRqdXN0LGxbZl0ubW9kLGsuc3Ryb2tlV2lkdGgsay5zdHJva2VDb2xvciksbz1zW3JdLndpZHRoPm8/c1tyXS53aWR0aDpvLGwubGVuZ3RoLTE9PT1mJiYobis9c1tyXS5oZWlnaHQscisrKX19fWVsc2UgZm9yKHZhciBNPTA7TTxoO00rKyl7dmFyIFM9dGhpcy5nZXRGb3JtYXR0aW5nVmFsdWVzKHQsZSxpLCJub3JtYWwiKTtpZih0aGlzLmZvbnRPcHRpb25zLm1heFdkdD4wKWZvcih2YXIgTz1hW01dLnNwbGl0KCIgIiksQz0iIixUPXt3aWR0aDowfSxFPXZvaWQgMCxQPTA7UDxPLmxlbmd0aDspe3ZhciBJPSIiPT09Qz8iIjoiICI7RT1ULFQ9dC5tZWFzdXJlVGV4dChDK0krT1tQXSksVC53aWR0aD50aGlzLmZvbnRPcHRpb25zLm1heFdkdCYmMCE9RS53aWR0aD8ocy5hZGRBbmRBY2N1bXVsYXRlKHIsQyxTLmZvbnQsUy5jb2xvcixFLndpZHRoLFMuc2l6ZSxTLnZhZGp1c3QsIm5vcm1hbCIsUy5zdHJva2VXaWR0aCxTLnN0cm9rZUNvbG9yKSxvPXNbcl0ud2lkdGg+bz9zW3JdLndpZHRoOm8sbis9c1tyXS5oZWlnaHQsQz0iIixyKyspOihDPUMrSStPW1BdLFA9PT1PLmxlbmd0aC0xJiYocy5hZGRBbmRBY2N1bXVsYXRlKHIsQyxTLmZvbnQsUy5jb2xvcixULndpZHRoLFMuc2l6ZSxTLnZhZGp1c3QsIm5vcm1hbCIsUy5zdHJva2VXaWR0aCxTLnN0cm9rZUNvbG9yKSxvPXNbcl0ud2lkdGg+bz9zW3JdLndpZHRoOm8sbis9c1tyXS5oZWlnaHQscisrKSxQKyspfWVsc2V7dmFyIE49YVtNXSxBPXQubWVhc3VyZVRleHQoTik7cy5hZGRBbmRBY2N1bXVsYXRlKHIsTixTLmZvbnQsUy5jb2xvcixBLndpZHRoLFMuc2l6ZSxTLnZhZGp1c3QsIm5vcm1hbCIsUy5zdHJva2VXaWR0aCxTLnN0cm9rZUNvbG9yKSxvPXNbcl0ud2lkdGg+bz9zW3JdLndpZHRoOm8sbis9c1tyXS5oZWlnaHQscisrfX19dGhpcy5mb250T3B0aW9ucy5taW5XZHQ+MCYmbzx0aGlzLmZvbnRPcHRpb25zLm1pbldkdCYmKG89dGhpcy5mb250T3B0aW9ucy5taW5XZHQpLHRoaXMuc2l6ZS5sYWJlbEhlaWdodD1uLHRoaXMuZm9udE9wdGlvbnMubWluSGd0PjAmJm48dGhpcy5mb250T3B0aW9ucy5taW5IZ3QmJihuPXRoaXMuZm9udE9wdGlvbnMubWluSGd0KSx0aGlzLmxpbmVzPXMsdGhpcy5saW5lQ291bnQ9cy5sZW5ndGgsdGhpcy5zaXplLndpZHRoPW8sdGhpcy5zaXplLmhlaWdodD1uLHRoaXMuc2VsZWN0ZWRTdGF0ZT1lLHRoaXMuaG92ZXJTdGF0ZT1pfX1dLFt7a2V5OiJwYXJzZU9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGUsaSl7dmFyIG89YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTt0LnBhcnNlRm9udFN0cmluZyhlLGkuZm9udCk/ZS52YWRqdXN0PTA6Im9iamVjdCI9PT0oMCxkLmRlZmF1bHQpKGkuZm9udCkmJmYuZmlsbElmRGVmaW5lZChlLGkuZm9udCxvKSxlLnNpemU9TnVtYmVyKGUuc2l6ZSksZS52YWRqdXN0PU51bWJlcihlLnZhZGp1c3QpfX0se2tleToicGFyc2VGb250U3RyaW5nIix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuITE7dmFyIGk9ZS5zcGxpdCgiICIpO3JldHVybiB0LnNpemU9aVswXS5yZXBsYWNlKCJweCIsIiIpLHQuZmFjZT1pWzFdLHQuY29sb3I9aVsyXSwhMH19XSksdH0oKTtlLmRlZmF1bHQ9bX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fWUuX19lc01vZHVsZT0hMDt2YXIgbj1pKDE3Mikscz1vKG4pLHI9aSgyKSxhPW8ocik7ZS5kZWZhdWx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZhciBpPVtdLG89ITAsbj0hMSxzPXZvaWQgMDt0cnl7Zm9yKHZhciByLGg9KDAsYS5kZWZhdWx0KSh0KTshKG89KHI9aC5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCFlfHxpLmxlbmd0aCE9PWUpO289ITApO31jYXRjaCh0KXtuPSEwLHM9dH1maW5hbGx5e3RyeXshbyYmaC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihuKXRocm93IHN9fXJldHVybiBpfXJldHVybiBmdW5jdGlvbihlLGkpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGU7aWYoKDAscy5kZWZhdWx0KShPYmplY3QoZSkpKXJldHVybiB0KGUsaSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfX0oKX0sZnVuY3Rpb24odCxlLGkpe3QuZXhwb3J0cz17ZGVmYXVsdDppKDE3MyksX19lc01vZHVsZTohMH19LGZ1bmN0aW9uKHQsZSxpKXtpKDQpLGkoNTApLHQuZXhwb3J0cz1pKDE3NCl9LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDU0KSxuPWkoNDcpKCJpdGVyYXRvciIpLHM9aSg4KTt0LmV4cG9ydHM9aSgxNykuaXNJdGVyYWJsZT1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3QodCk7cmV0dXJuIHZvaWQgMCE9PWVbbl18fCJAQGl0ZXJhdG9yImluIGV8fHMuaGFzT3duUHJvcGVydHkobyhlKSl9fSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoMTc2KSxzPW8obikscj1pKDEzNSksYT1vKHIpLGg9aSgxMzYpLGQ9byhoKSxsPWkoMTc5KSx1PW8obCksYz1pKDE4MCkscD1vKGMpLGY9aSgxODUpLG09byhmKSx2PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxpLG8peygwLGEuZGVmYXVsdCkodGhpcyxlKTt2YXIgbj0oMCx1LmRlZmF1bHQpKHRoaXMsKGUuX19wcm90b19ffHwoMCxzLmRlZmF1bHQpKGUpKS5jYWxsKHRoaXMsdCxpLG8pKTtyZXR1cm4gbi5fc2V0TWFyZ2lucyhvKSxufXJldHVybigwLHAuZGVmYXVsdCkoZSx0KSwoMCxkLmRlZmF1bHQpKGUsW3trZXk6InJlc2l6ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMuc2VsZWN0ZWQsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dGhpcy5ob3Zlcjt0aGlzLm5lZWRzUmVmcmVzaChlLGkpJiYodGhpcy50ZXh0U2l6ZT10aGlzLmxhYmVsTW9kdWxlLmdldFRleHRTaXplKHQsZSxpKSx0aGlzLndpZHRoPXRoaXMudGV4dFNpemUud2lkdGgrdGhpcy5tYXJnaW4ucmlnaHQrdGhpcy5tYXJnaW4ubGVmdCx0aGlzLmhlaWdodD10aGlzLnRleHRTaXplLmhlaWdodCt0aGlzLm1hcmdpbi50b3ArdGhpcy5tYXJnaW4uYm90dG9tLHRoaXMucmFkaXVzPXRoaXMud2lkdGgvMil9fSx7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvLG4scyl7dGhpcy5yZXNpemUodCxvLG4pLHRoaXMubGVmdD1lLXRoaXMud2lkdGgvMix0aGlzLnRvcD1pLXRoaXMuaGVpZ2h0LzIsdGhpcy5pbml0Q29udGV4dEZvckRyYXcodCxzKSx0LnJvdW5kUmVjdCh0aGlzLmxlZnQsdGhpcy50b3AsdGhpcy53aWR0aCx0aGlzLmhlaWdodCxzLmJvcmRlclJhZGl1cyksdGhpcy5wZXJmb3JtRmlsbCh0LHMpLHRoaXMudXBkYXRlQm91bmRpbmdCb3goZSxpLHQsbyxuKSx0aGlzLmxhYmVsTW9kdWxlLmRyYXcodCx0aGlzLmxlZnQrdGhpcy50ZXh0U2l6ZS53aWR0aC8yK3RoaXMubWFyZ2luLmxlZnQsdGhpcy50b3ArdGhpcy50ZXh0U2l6ZS5oZWlnaHQvMit0aGlzLm1hcmdpbi50b3AsbyxuKX19LHtrZXk6InVwZGF0ZUJvdW5kaW5nQm94Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvLG4pe3RoaXMuX3VwZGF0ZUJvdW5kaW5nQm94KHQsZSxpLG8sbik7dmFyIHM9dGhpcy5vcHRpb25zLnNoYXBlUHJvcGVydGllcy5ib3JkZXJSYWRpdXM7dGhpcy5fYWRkQm91bmRpbmdCb3hNYXJnaW4ocyl9fSx7a2V5OiJkaXN0YW5jZVRvQm9yZGVyIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMucmVzaXplKHQpO3ZhciBpPXRoaXMub3B0aW9ucy5ib3JkZXJXaWR0aDtyZXR1cm4gTWF0aC5taW4oTWF0aC5hYnModGhpcy53aWR0aC8yL01hdGguY29zKGUpKSxNYXRoLmFicyh0aGlzLmhlaWdodC8yL01hdGguc2luKGUpKSkraX19XSksZX0obS5kZWZhdWx0KTtlLmRlZmF1bHQ9dn0sZnVuY3Rpb24odCxlLGkpe3QuZXhwb3J0cz17ZGVmYXVsdDppKDE3NyksX19lc01vZHVsZTohMH19LGZ1bmN0aW9uKHQsZSxpKXtpKDE3OCksdC5leHBvcnRzPWkoMTcpLk9iamVjdC5nZXRQcm90b3R5cGVPZn0sZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkoNDkpLG49aSg0OCk7aSg2MSkoImdldFByb3RvdHlwZU9mIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbihvKHQpKX19KX0sZnVuY3Rpb24odCxlLGkpe2UuX19lc01vZHVsZT0hMDt2YXIgbz1pKDYyKSxuPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX0obyk7ZS5kZWZhdWx0PWZ1bmN0aW9uKHQsZSl7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hZXx8Im9iamVjdCIhPT0odm9pZCAwPT09ZT8idW5kZWZpbmVkIjooMCxuLmRlZmF1bHQpKGUpKSYmImZ1bmN0aW9uIiE9dHlwZW9mIGU/dDplfX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fWUuX19lc01vZHVsZT0hMDt2YXIgbj1pKDE4MSkscz1vKG4pLHI9aSg1NSksYT1vKHIpLGg9aSg2MiksZD1vKGgpO2UuZGVmYXVsdD1mdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrKHZvaWQgMD09PWU/InVuZGVmaW5lZCI6KDAsZC5kZWZhdWx0KShlKSkpO3QucHJvdG90eXBlPSgwLGEuZGVmYXVsdCkoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJihzLmRlZmF1bHQ/KDAscy5kZWZhdWx0KSh0LGUpOnQuX19wcm90b19fPWUpfX0sZnVuY3Rpb24odCxlLGkpe3QuZXhwb3J0cz17ZGVmYXVsdDppKDE4MiksX19lc01vZHVsZTohMH19LGZ1bmN0aW9uKHQsZSxpKXtpKDE4MyksdC5leHBvcnRzPWkoMTcpLk9iamVjdC5zZXRQcm90b3R5cGVPZn0sZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkoMTUpO28oby5TLCJPYmplY3QiLHtzZXRQcm90b3R5cGVPZjppKDE4NCkuc2V0fSl9LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDIzKSxuPWkoMjIpLHM9ZnVuY3Rpb24odCxlKXtpZihuKHQpLCFvKGUpJiZudWxsIT09ZSl0aHJvdyBUeXBlRXJyb3IoZSsiOiBjYW4ndCBzZXQgYXMgcHJvdG90eXBlISIpfTt0LmV4cG9ydHM9e3NldDpPYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30/ZnVuY3Rpb24odCxlLG8pe3RyeXtvPWkoMTgpKEZ1bmN0aW9uLmNhbGwsaSg3OCkuZihPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18iKS5zZXQsMiksbyh0LFtdKSxlPSEodCBpbnN0YW5jZW9mIEFycmF5KX1jYXRjaCh0KXtlPSEwfXJldHVybiBmdW5jdGlvbih0LGkpe3JldHVybiBzKHQsaSksZT90Ll9fcHJvdG9fXz1pOm8odCxpKSx0fX0oe30sITEpOnZvaWQgMCksY2hlY2s6c319LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSg2Mikscz1vKG4pLHI9aSgxMzUpLGE9byhyKSxoPWkoMTM2KSxkPW8oaCksbD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpLG8peygwLGEuZGVmYXVsdCkodGhpcyx0KSx0aGlzLmJvZHk9aSx0aGlzLmxhYmVsTW9kdWxlPW8sdGhpcy5zZXRPcHRpb25zKGUpLHRoaXMudG9wPXZvaWQgMCx0aGlzLmxlZnQ9dm9pZCAwLHRoaXMuaGVpZ2h0PXZvaWQgMCx0aGlzLndpZHRoPXZvaWQgMCx0aGlzLnJhZGl1cz12b2lkIDAsdGhpcy5tYXJnaW49dm9pZCAwLHRoaXMucmVmcmVzaE5lZWRlZD0hMCx0aGlzLmJvdW5kaW5nQm94PXt0b3A6MCxsZWZ0OjAscmlnaHQ6MCxib3R0b206MH19cmV0dXJuKDAsZC5kZWZhdWx0KSh0LFt7a2V5OiJzZXRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9dH19LHtrZXk6Il9zZXRNYXJnaW5zIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLm1hcmdpbj17fSx0aGlzLm9wdGlvbnMubWFyZ2luJiYoIm9iamVjdCI9PSgwLHMuZGVmYXVsdCkodGhpcy5vcHRpb25zLm1hcmdpbik/KHRoaXMubWFyZ2luLnRvcD10aGlzLm9wdGlvbnMubWFyZ2luLnRvcCx0aGlzLm1hcmdpbi5yaWdodD10aGlzLm9wdGlvbnMubWFyZ2luLnJpZ2h0LHRoaXMubWFyZ2luLmJvdHRvbT10aGlzLm9wdGlvbnMubWFyZ2luLmJvdHRvbSx0aGlzLm1hcmdpbi5sZWZ0PXRoaXMub3B0aW9ucy5tYXJnaW4ubGVmdCk6KHRoaXMubWFyZ2luLnRvcD10aGlzLm9wdGlvbnMubWFyZ2luLHRoaXMubWFyZ2luLnJpZ2h0PXRoaXMub3B0aW9ucy5tYXJnaW4sdGhpcy5tYXJnaW4uYm90dG9tPXRoaXMub3B0aW9ucy5tYXJnaW4sdGhpcy5tYXJnaW4ubGVmdD10aGlzLm9wdGlvbnMubWFyZ2luKSksdC5hZGp1c3RTaXplcyh0aGlzLm1hcmdpbil9fSx7a2V5OiJfZGlzdGFuY2VUb0JvcmRlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLm9wdGlvbnMuYm9yZGVyV2lkdGg7cmV0dXJuIHRoaXMucmVzaXplKHQpLE1hdGgubWluKE1hdGguYWJzKHRoaXMud2lkdGgvMi9NYXRoLmNvcyhlKSksTWF0aC5hYnModGhpcy5oZWlnaHQvMi9NYXRoLnNpbihlKSkpK2l9fSx7a2V5OiJlbmFibGVTaGFkb3ciLHZhbHVlOmZ1bmN0aW9uKHQsZSl7ZS5zaGFkb3cmJih0LnNoYWRvd0NvbG9yPWUuc2hhZG93Q29sb3IsdC5zaGFkb3dCbHVyPWUuc2hhZG93U2l6ZSx0LnNoYWRvd09mZnNldFg9ZS5zaGFkb3dYLHQuc2hhZG93T2Zmc2V0WT1lLnNoYWRvd1kpfX0se2tleToiZGlzYWJsZVNoYWRvdyIsdmFsdWU6ZnVuY3Rpb24odCxlKXtlLnNoYWRvdyYmKHQuc2hhZG93Q29sb3I9InJnYmEoMCwwLDAsMCkiLHQuc2hhZG93Qmx1cj0wLHQuc2hhZG93T2Zmc2V0WD0wLHQuc2hhZG93T2Zmc2V0WT0wKX19LHtrZXk6ImVuYWJsZUJvcmRlckRhc2hlcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZighMSE9PWUuYm9yZGVyRGFzaGVzKWlmKHZvaWQgMCE9PXQuc2V0TGluZURhc2gpe3ZhciBpPWUuYm9yZGVyRGFzaGVzOyEwPT09aSYmKGk9WzUsMTVdKSx0LnNldExpbmVEYXNoKGkpfWVsc2UgY29uc29sZS53YXJuKCJzZXRMaW5lRGFzaCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3Nlci4gVGhlIGRhc2hlZCBib3JkZXJzIGNhbm5vdCBiZSB1c2VkLiIpLHRoaXMub3B0aW9ucy5zaGFwZVByb3BlcnRpZXMuYm9yZGVyRGFzaGVzPSExLGUuYm9yZGVyRGFzaGVzPSExfX0se2tleToiZGlzYWJsZUJvcmRlckRhc2hlcyIsdmFsdWU6ZnVuY3Rpb24odCxlKXshMSE9PWUuYm9yZGVyRGFzaGVzJiYodm9pZCAwIT09dC5zZXRMaW5lRGFzaD90LnNldExpbmVEYXNoKFswXSk6KGNvbnNvbGUud2Fybigic2V0TGluZURhc2ggaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXIuIFRoZSBkYXNoZWQgYm9yZGVycyBjYW5ub3QgYmUgdXNlZC4iKSx0aGlzLm9wdGlvbnMuc2hhcGVQcm9wZXJ0aWVzLmJvcmRlckRhc2hlcz0hMSxlLmJvcmRlckRhc2hlcz0hMSkpfX0se2tleToibmVlZHNSZWZyZXNoIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiEwPT09dGhpcy5yZWZyZXNoTmVlZGVkPyh0aGlzLnJlZnJlc2hOZWVkZWQ9ITEsITApOnZvaWQgMD09PXRoaXMud2lkdGh8fHRoaXMubGFiZWxNb2R1bGUuZGlmZmVyZW50U3RhdGUodCxlKX19LHtrZXk6ImluaXRDb250ZXh0Rm9yRHJhdyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1lLmJvcmRlcldpZHRoL3RoaXMuYm9keS52aWV3LnNjYWxlO3QubGluZVdpZHRoPU1hdGgubWluKHRoaXMud2lkdGgsaSksdC5zdHJva2VTdHlsZT1lLmJvcmRlckNvbG9yLHQuZmlsbFN0eWxlPWUuY29sb3J9fSx7a2V5OiJwZXJmb3JtU3Ryb2tlIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWUuYm9yZGVyV2lkdGgvdGhpcy5ib2R5LnZpZXcuc2NhbGU7dC5zYXZlKCksaT4wJiYodGhpcy5lbmFibGVCb3JkZXJEYXNoZXModCxlKSx0LnN0cm9rZSgpLHRoaXMuZGlzYWJsZUJvcmRlckRhc2hlcyh0LGUpKSx0LnJlc3RvcmUoKX19LHtrZXk6InBlcmZvcm1GaWxsIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuZW5hYmxlU2hhZG93KHQsZSksdC5maWxsKCksdGhpcy5kaXNhYmxlU2hhZG93KHQsZSksdGhpcy5wZXJmb3JtU3Ryb2tlKHQsZSl9fSx7a2V5OiJfYWRkQm91bmRpbmdCb3hNYXJnaW4iLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuYm91bmRpbmdCb3gubGVmdC09dCx0aGlzLmJvdW5kaW5nQm94LnRvcC09dCx0aGlzLmJvdW5kaW5nQm94LmJvdHRvbSs9dCx0aGlzLmJvdW5kaW5nQm94LnJpZ2h0Kz10fX0se2tleToiX3VwZGF0ZUJvdW5kaW5nQm94Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvLG4pe3ZvaWQgMCE9PWkmJnRoaXMucmVzaXplKGksbyxuKSx0aGlzLmxlZnQ9dC10aGlzLndpZHRoLzIsdGhpcy50b3A9ZS10aGlzLmhlaWdodC8yLHRoaXMuYm91bmRpbmdCb3gubGVmdD10aGlzLmxlZnQsdGhpcy5ib3VuZGluZ0JveC50b3A9dGhpcy50b3AsdGhpcy5ib3VuZGluZ0JveC5ib3R0b209dGhpcy50b3ArdGhpcy5oZWlnaHQsdGhpcy5ib3VuZGluZ0JveC5yaWdodD10aGlzLmxlZnQrdGhpcy53aWR0aH19LHtrZXk6InVwZGF0ZUJvdW5kaW5nQm94Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvLG4pe3RoaXMuX3VwZGF0ZUJvdW5kaW5nQm94KHQsZSxpLG8sbil9fV0pLHR9KCk7ZS5kZWZhdWx0PWx9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxNzYpLHM9byhuKSxyPWkoMTM1KSxhPW8ociksaD1pKDEzNiksZD1vKGgpLGw9aSgxNzkpLHU9byhsKSxjPWkoMTgwKSxwPW8oYyksZj1pKDE4NyksbT1vKGYpLHY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGksbyl7KDAsYS5kZWZhdWx0KSh0aGlzLGUpO3ZhciBuPSgwLHUuZGVmYXVsdCkodGhpcywoZS5fX3Byb3RvX198fCgwLHMuZGVmYXVsdCkoZSkpLmNhbGwodGhpcyx0LGksbykpO3JldHVybiBuLl9zZXRNYXJnaW5zKG8pLG59cmV0dXJuKDAscC5kZWZhdWx0KShlLHQpLCgwLGQuZGVmYXVsdCkoZSxbe2tleToicmVzaXplIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5zZWxlY3RlZCxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp0aGlzLmhvdmVyO2lmKHRoaXMubmVlZHNSZWZyZXNoKGUsaSkpe3RoaXMudGV4dFNpemU9dGhpcy5sYWJlbE1vZHVsZS5nZXRUZXh0U2l6ZSh0LGUsaSk7dmFyIG89TWF0aC5tYXgodGhpcy50ZXh0U2l6ZS53aWR0aCt0aGlzLm1hcmdpbi5yaWdodCt0aGlzLm1hcmdpbi5sZWZ0LHRoaXMudGV4dFNpemUuaGVpZ2h0K3RoaXMubWFyZ2luLnRvcCt0aGlzLm1hcmdpbi5ib3R0b20pO3RoaXMub3B0aW9ucy5zaXplPW8vMix0aGlzLndpZHRoPW8sdGhpcy5oZWlnaHQ9byx0aGlzLnJhZGl1cz10aGlzLndpZHRoLzJ9fX0se2tleToiZHJhdyIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuLHMpe3RoaXMucmVzaXplKHQsbyxuKSx0aGlzLmxlZnQ9ZS10aGlzLndpZHRoLzIsdGhpcy50b3A9aS10aGlzLmhlaWdodC8yLHRoaXMuX2RyYXdSYXdDaXJjbGUodCxlLGkscyksdGhpcy51cGRhdGVCb3VuZGluZ0JveChlLGkpLHRoaXMubGFiZWxNb2R1bGUuZHJhdyh0LHRoaXMubGVmdCt0aGlzLnRleHRTaXplLndpZHRoLzIrdGhpcy5tYXJnaW4ubGVmdCxpLG8sbil9fSx7a2V5OiJ1cGRhdGVCb3VuZGluZ0JveCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmJvdW5kaW5nQm94LnRvcD1lLXRoaXMub3B0aW9ucy5zaXplLHRoaXMuYm91bmRpbmdCb3gubGVmdD10LXRoaXMub3B0aW9ucy5zaXplLHRoaXMuYm91bmRpbmdCb3gucmlnaHQ9dCt0aGlzLm9wdGlvbnMuc2l6ZSx0aGlzLmJvdW5kaW5nQm94LmJvdHRvbT1lK3RoaXMub3B0aW9ucy5zaXplfX0se2tleToiZGlzdGFuY2VUb0JvcmRlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5yZXNpemUodCksLjUqdGhpcy53aWR0aH19XSksZX0obS5kZWZhdWx0KTtlLmRlZmF1bHQ9dn0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDE3Nikscz1vKG4pLHI9aSgxMzUpLGE9byhyKSxoPWkoMTM2KSxkPW8oaCksbD1pKDE3OSksdT1vKGwpLGM9aSgxODApLHA9byhjKSxmPWkoMTg1KSxtPW8oZiksdj1pKDE2NiksZz0obyh2KSxmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsaSxvKXsoMCxhLmRlZmF1bHQpKHRoaXMsZSk7dmFyIG49KDAsdS5kZWZhdWx0KSh0aGlzLChlLl9fcHJvdG9fX3x8KDAscy5kZWZhdWx0KShlKSkuY2FsbCh0aGlzLHQsaSxvKSk7cmV0dXJuIG4ubGFiZWxPZmZzZXQ9MCxuLnNlbGVjdGVkPSExLG59cmV0dXJuKDAscC5kZWZhdWx0KShlLHQpLCgwLGQuZGVmYXVsdCkoZSxbe2tleToic2V0T3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3RoaXMub3B0aW9ucz10LHZvaWQgMD09PWUmJnZvaWQgMD09PWl8fHRoaXMuc2V0SW1hZ2VzKGUsaSl9fSx7a2V5OiJzZXRJbWFnZXMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7ZSYmdGhpcy5zZWxlY3RlZD8odGhpcy5pbWFnZU9iaj1lLHRoaXMuaW1hZ2VPYmpBbHQ9dCk6KHRoaXMuaW1hZ2VPYmo9dCx0aGlzLmltYWdlT2JqQWx0PWUpfX0se2tleToic3dpdGNoSW1hZ2VzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10JiYhdGhpcy5zZWxlY3RlZHx8IXQmJnRoaXMuc2VsZWN0ZWQ7aWYodGhpcy5zZWxlY3RlZD10LHZvaWQgMCE9PXRoaXMuaW1hZ2VPYmpBbHQmJmUpe3ZhciBpPXRoaXMuaW1hZ2VPYmo7dGhpcy5pbWFnZU9iaj10aGlzLmltYWdlT2JqQWx0LHRoaXMuaW1hZ2VPYmpBbHQ9aX19fSx7a2V5OiJfcmVzaXplSW1hZ2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZTtpZighMT09PXRoaXMub3B0aW9ucy5zaGFwZVByb3BlcnRpZXMudXNlSW1hZ2VTaXplKXt2YXIgaT0xLG89MTt0aGlzLmltYWdlT2JqLndpZHRoJiZ0aGlzLmltYWdlT2JqLmhlaWdodCYmKHRoaXMuaW1hZ2VPYmoud2lkdGg+dGhpcy5pbWFnZU9iai5oZWlnaHQ/aT10aGlzLmltYWdlT2JqLndpZHRoL3RoaXMuaW1hZ2VPYmouaGVpZ2h0Om89dGhpcy5pbWFnZU9iai5oZWlnaHQvdGhpcy5pbWFnZU9iai53aWR0aCksdD0yKnRoaXMub3B0aW9ucy5zaXplKmksZT0yKnRoaXMub3B0aW9ucy5zaXplKm99ZWxzZSB0PXRoaXMuaW1hZ2VPYmoud2lkdGgsZT10aGlzLmltYWdlT2JqLmhlaWdodDt0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLnJhZGl1cz0uNSp0aGlzLndpZHRofX0se2tleToiX2RyYXdSYXdDaXJjbGUiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLG8pe3RoaXMuaW5pdENvbnRleHRGb3JEcmF3KHQsbyksdC5jaXJjbGUoZSxpLG8uc2l6ZSksdGhpcy5wZXJmb3JtRmlsbCh0LG8pfX0se2tleToiX2RyYXdJbWFnZUF0UG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYoMCE9dGhpcy5pbWFnZU9iai53aWR0aCl7dC5nbG9iYWxBbHBoYT0xLHRoaXMuZW5hYmxlU2hhZG93KHQsZSk7dmFyIGk9MTshMD09PXRoaXMub3B0aW9ucy5zaGFwZVByb3BlcnRpZXMuaW50ZXJwb2xhdGlvbiYmKGk9dGhpcy5pbWFnZU9iai53aWR0aC90aGlzLndpZHRoL3RoaXMuYm9keS52aWV3LnNjYWxlKSx0aGlzLmltYWdlT2JqLmRyYXdJbWFnZUF0UG9zaXRpb24odCxpLHRoaXMubGVmdCx0aGlzLnRvcCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLmRpc2FibGVTaGFkb3codCxlKX19fSx7a2V5OiJfZHJhd0ltYWdlTGFiZWwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLG8sbil7dmFyIHMscj0wO2lmKHZvaWQgMCE9PXRoaXMuaGVpZ2h0KXtyPS41KnRoaXMuaGVpZ2h0O3ZhciBhPXRoaXMubGFiZWxNb2R1bGUuZ2V0VGV4dFNpemUodCxvLG4pO2EubGluZUNvdW50Pj0xJiYocis9YS5oZWlnaHQvMil9cz1pK3IsdGhpcy5vcHRpb25zLmxhYmVsJiYodGhpcy5sYWJlbE9mZnNldD1yKSx0aGlzLmxhYmVsTW9kdWxlLmRyYXcodCxlLHMsbyxuLCJoYW5naW5nIil9fV0pLGV9KG0uZGVmYXVsdCkpO2UuZGVmYXVsdD1nfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoMTc2KSxzPW8obikscj1pKDEzNSksYT1vKHIpLGg9aSgxMzYpLGQ9byhoKSxsPWkoMTc5KSx1PW8obCksYz1pKDE4MCkscD1vKGMpLGY9aSgxODcpLG09byhmKSx2PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxpLG8sbixyKXsoMCxhLmRlZmF1bHQpKHRoaXMsZSk7dmFyIGg9KDAsdS5kZWZhdWx0KSh0aGlzLChlLl9fcHJvdG9fX3x8KDAscy5kZWZhdWx0KShlKSkuY2FsbCh0aGlzLHQsaSxvKSk7cmV0dXJuIGguc2V0SW1hZ2VzKG4sciksaH1yZXR1cm4oMCxwLmRlZmF1bHQpKGUsdCksKDAsZC5kZWZhdWx0KShlLFt7a2V5OiJyZXNpemUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnNlbGVjdGVkLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnRoaXMuaG92ZXI7aWYodm9pZCAwPT09dGhpcy5pbWFnZU9iai5zcmN8fHZvaWQgMD09PXRoaXMuaW1hZ2VPYmoud2lkdGh8fHZvaWQgMD09PXRoaXMuaW1hZ2VPYmouaGVpZ2h0KXt2YXIgbz0yKnRoaXMub3B0aW9ucy5zaXplO3JldHVybiB0aGlzLndpZHRoPW8sdGhpcy5oZWlnaHQ9byx2b2lkKHRoaXMucmFkaXVzPS41KnRoaXMud2lkdGgpfXRoaXMubmVlZHNSZWZyZXNoKGUsaSkmJnRoaXMuX3Jlc2l6ZUltYWdlKCl9fSx7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvLG4scyl7dGhpcy5zd2l0Y2hJbWFnZXMobyksdGhpcy5yZXNpemUoKSx0aGlzLmxlZnQ9ZS10aGlzLndpZHRoLzIsdGhpcy50b3A9aS10aGlzLmhlaWdodC8yLHRoaXMuX2RyYXdSYXdDaXJjbGUodCxlLGkscyksdC5zYXZlKCksdC5jbGlwKCksdGhpcy5fZHJhd0ltYWdlQXRQb3NpdGlvbih0LHMpLHQucmVzdG9yZSgpLHRoaXMuX2RyYXdJbWFnZUxhYmVsKHQsZSxpLG8sbiksdGhpcy51cGRhdGVCb3VuZGluZ0JveChlLGkpfX0se2tleToidXBkYXRlQm91bmRpbmdCb3giLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5ib3VuZGluZ0JveC50b3A9ZS10aGlzLm9wdGlvbnMuc2l6ZSx0aGlzLmJvdW5kaW5nQm94LmxlZnQ9dC10aGlzLm9wdGlvbnMuc2l6ZSx0aGlzLmJvdW5kaW5nQm94LnJpZ2h0PXQrdGhpcy5vcHRpb25zLnNpemUsdGhpcy5ib3VuZGluZ0JveC5ib3R0b209ZSt0aGlzLm9wdGlvbnMuc2l6ZSx0aGlzLmJvdW5kaW5nQm94LmxlZnQ9TWF0aC5taW4odGhpcy5ib3VuZGluZ0JveC5sZWZ0LHRoaXMubGFiZWxNb2R1bGUuc2l6ZS5sZWZ0KSx0aGlzLmJvdW5kaW5nQm94LnJpZ2h0PU1hdGgubWF4KHRoaXMuYm91bmRpbmdCb3gucmlnaHQsdGhpcy5sYWJlbE1vZHVsZS5zaXplLmxlZnQrdGhpcy5sYWJlbE1vZHVsZS5zaXplLndpZHRoKSx0aGlzLmJvdW5kaW5nQm94LmJvdHRvbT1NYXRoLm1heCh0aGlzLmJvdW5kaW5nQm94LmJvdHRvbSx0aGlzLmJvdW5kaW5nQm94LmJvdHRvbSt0aGlzLmxhYmVsT2Zmc2V0KX19LHtrZXk6ImRpc3RhbmNlVG9Cb3JkZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVzaXplKHQpLC41KnRoaXMud2lkdGh9fV0pLGV9KG0uZGVmYXVsdCk7ZS5kZWZhdWx0PXZ9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxNzYpLHM9byhuKSxyPWkoMTM1KSxhPW8ociksaD1pKDEzNiksZD1vKGgpLGw9aSgxNzkpLHU9byhsKSxjPWkoMTgwKSxwPW8oYyksZj1pKDE4NSksbT1vKGYpLHY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGksbyl7KDAsYS5kZWZhdWx0KSh0aGlzLGUpO3ZhciBuPSgwLHUuZGVmYXVsdCkodGhpcywoZS5fX3Byb3RvX198fCgwLHMuZGVmYXVsdCkoZSkpLmNhbGwodGhpcyx0LGksbykpO3JldHVybiBuLl9zZXRNYXJnaW5zKG8pLG59cmV0dXJuKDAscC5kZWZhdWx0KShlLHQpLCgwLGQuZGVmYXVsdCkoZSxbe2tleToicmVzaXplIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7aWYodGhpcy5uZWVkc1JlZnJlc2goZSxpKSl7dGhpcy50ZXh0U2l6ZT10aGlzLmxhYmVsTW9kdWxlLmdldFRleHRTaXplKHQsZSxpKTt2YXIgbz10aGlzLnRleHRTaXplLndpZHRoK3RoaXMubWFyZ2luLnJpZ2h0K3RoaXMubWFyZ2luLmxlZnQ7dGhpcy53aWR0aD1vLHRoaXMuaGVpZ2h0PW8sdGhpcy5yYWRpdXM9dGhpcy53aWR0aC8yfX19LHtrZXk6ImRyYXciLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLG8sbixzKXt0aGlzLnJlc2l6ZSh0LG8sbiksdGhpcy5sZWZ0PWUtdGhpcy53aWR0aC8yLHRoaXMudG9wPWktdGhpcy5oZWlnaHQvMix0aGlzLmluaXRDb250ZXh0Rm9yRHJhdyh0LHMpLHQuZGF0YWJhc2UoZS10aGlzLndpZHRoLzIsaS10aGlzLmhlaWdodC8yLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLHRoaXMucGVyZm9ybUZpbGwodCxzKSx0aGlzLnVwZGF0ZUJvdW5kaW5nQm94KGUsaSx0LG8sbiksdGhpcy5sYWJlbE1vZHVsZS5kcmF3KHQsdGhpcy5sZWZ0K3RoaXMudGV4dFNpemUud2lkdGgvMit0aGlzLm1hcmdpbi5sZWZ0LHRoaXMudG9wK3RoaXMudGV4dFNpemUuaGVpZ2h0LzIrdGhpcy5tYXJnaW4udG9wLG8sbil9fSx7a2V5OiJkaXN0YW5jZVRvQm9yZGVyIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9kaXN0YW5jZVRvQm9yZGVyKHQsZSl9fV0pLGV9KG0uZGVmYXVsdCk7ZS5kZWZhdWx0PXZ9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxNzYpLHM9byhuKSxyPWkoMTM1KSxhPW8ociksaD1pKDEzNiksZD1vKGgpLGw9aSgxNzkpLHU9byhsKSxjPWkoMTgwKSxwPW8oYyksZj1pKDE5MSksbT1vKGYpLHY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGksbyl7cmV0dXJuKDAsYS5kZWZhdWx0KSh0aGlzLGUpLCgwLHUuZGVmYXVsdCkodGhpcywoZS5fX3Byb3RvX198fCgwLHMuZGVmYXVsdCkoZSkpLmNhbGwodGhpcyx0LGksbykpfXJldHVybigwLHAuZGVmYXVsdCkoZSx0KSwoMCxkLmRlZmF1bHQpKGUsW3trZXk6ImRyYXciLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLG8sbixzKXt0aGlzLl9kcmF3U2hhcGUodCwiZGlhbW9uZCIsNCxlLGksbyxuLHMpfX0se2tleToiZGlzdGFuY2VUb0JvcmRlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fZGlzdGFuY2VUb0JvcmRlcih0LGUpfX1dKSxlfShtLmRlZmF1bHQpO2UuZGVmYXVsdD12fSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoMTc2KSxzPW8obikscj1pKDEzNSksYT1vKHIpLGg9aSgxMzYpLGQ9byhoKSxsPWkoMTc5KSx1PW8obCksYz1pKDE4MCkscD1vKGMpLGY9aSgxODUpLG09byhmKSx2PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxpLG8pe3JldHVybigwLGEuZGVmYXVsdCkodGhpcyxlKSwoMCx1LmRlZmF1bHQpKHRoaXMsKGUuX19wcm90b19ffHwoMCxzLmRlZmF1bHQpKGUpKS5jYWxsKHRoaXMsdCxpLG8pKX1yZXR1cm4oMCxwLmRlZmF1bHQpKGUsdCksKDAsZC5kZWZhdWx0KShlLFt7a2V5OiJyZXNpemUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnNlbGVjdGVkLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnRoaXMuaG92ZXIsbz1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106e3NpemU6dGhpcy5vcHRpb25zLnNpemV9O2lmKHRoaXMubmVlZHNSZWZyZXNoKGUsaSkpe3RoaXMubGFiZWxNb2R1bGUuZ2V0VGV4dFNpemUodCxlLGkpO3ZhciBuPTIqby5zaXplO3RoaXMud2lkdGg9bix0aGlzLmhlaWdodD1uLHRoaXMucmFkaXVzPS41KnRoaXMud2lkdGh9fX0se2tleToiX2RyYXdTaGFwZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuLHMscixhKXtpZih0aGlzLnJlc2l6ZSh0LHMscixhKSx0aGlzLmxlZnQ9by10aGlzLndpZHRoLzIsdGhpcy50b3A9bi10aGlzLmhlaWdodC8yLHRoaXMuaW5pdENvbnRleHRGb3JEcmF3KHQsYSksdFtlXShvLG4sYS5zaXplKSx0aGlzLnBlcmZvcm1GaWxsKHQsYSksdm9pZCAwIT09dGhpcy5vcHRpb25zLmxhYmVsKXt0aGlzLmxhYmVsTW9kdWxlLmNhbGN1bGF0ZUxhYmVsU2l6ZSh0LHMscixvLG4sImhhbmdpbmciKTt2YXIgaD1uKy41KnRoaXMuaGVpZ2h0Ky41KnRoaXMubGFiZWxNb2R1bGUuc2l6ZS5oZWlnaHQ7dGhpcy5sYWJlbE1vZHVsZS5kcmF3KHQsbyxoLHMsciwiaGFuZ2luZyIpfXRoaXMudXBkYXRlQm91bmRpbmdCb3gobyxuKX19LHtrZXk6InVwZGF0ZUJvdW5kaW5nQm94Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuYm91bmRpbmdCb3gudG9wPWUtdGhpcy5vcHRpb25zLnNpemUsdGhpcy5ib3VuZGluZ0JveC5sZWZ0PXQtdGhpcy5vcHRpb25zLnNpemUsdGhpcy5ib3VuZGluZ0JveC5yaWdodD10K3RoaXMub3B0aW9ucy5zaXplLHRoaXMuYm91bmRpbmdCb3guYm90dG9tPWUrdGhpcy5vcHRpb25zLnNpemUsdm9pZCAwIT09dGhpcy5vcHRpb25zLmxhYmVsJiZ0aGlzLmxhYmVsTW9kdWxlLnNpemUud2lkdGg+MCYmKHRoaXMuYm91bmRpbmdCb3gubGVmdD1NYXRoLm1pbih0aGlzLmJvdW5kaW5nQm94LmxlZnQsdGhpcy5sYWJlbE1vZHVsZS5zaXplLmxlZnQpLHRoaXMuYm91bmRpbmdCb3gucmlnaHQ9TWF0aC5tYXgodGhpcy5ib3VuZGluZ0JveC5yaWdodCx0aGlzLmxhYmVsTW9kdWxlLnNpemUubGVmdCt0aGlzLmxhYmVsTW9kdWxlLnNpemUud2lkdGgpLA0KdGhpcy5ib3VuZGluZ0JveC5ib3R0b209TWF0aC5tYXgodGhpcy5ib3VuZGluZ0JveC5ib3R0b20sdGhpcy5ib3VuZGluZ0JveC5ib3R0b20rdGhpcy5sYWJlbE1vZHVsZS5zaXplLmhlaWdodCkpfX1dKSxlfShtLmRlZmF1bHQpO2UuZGVmYXVsdD12fSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoMTc2KSxzPW8obikscj1pKDEzNSksYT1vKHIpLGg9aSgxMzYpLGQ9byhoKSxsPWkoMTc5KSx1PW8obCksYz1pKDE4MCkscD1vKGMpLGY9aSgxOTEpLG09byhmKSx2PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxpLG8pe3JldHVybigwLGEuZGVmYXVsdCkodGhpcyxlKSwoMCx1LmRlZmF1bHQpKHRoaXMsKGUuX19wcm90b19ffHwoMCxzLmRlZmF1bHQpKGUpKS5jYWxsKHRoaXMsdCxpLG8pKX1yZXR1cm4oMCxwLmRlZmF1bHQpKGUsdCksKDAsZC5kZWZhdWx0KShlLFt7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvLG4scyl7dGhpcy5fZHJhd1NoYXBlKHQsImNpcmNsZSIsMixlLGksbyxuLHMpfX0se2tleToiZGlzdGFuY2VUb0JvcmRlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5yZXNpemUodCksdGhpcy5vcHRpb25zLnNpemV9fV0pLGV9KG0uZGVmYXVsdCk7ZS5kZWZhdWx0PXZ9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxNzYpLHM9byhuKSxyPWkoMTM1KSxhPW8ociksaD1pKDEzNiksZD1vKGgpLGw9aSgxNzkpLHU9byhsKSxjPWkoMTgwKSxwPW8oYyksZj1pKDE4NSksbT1vKGYpLHY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGksbyl7cmV0dXJuKDAsYS5kZWZhdWx0KSh0aGlzLGUpLCgwLHUuZGVmYXVsdCkodGhpcywoZS5fX3Byb3RvX198fCgwLHMuZGVmYXVsdCkoZSkpLmNhbGwodGhpcyx0LGksbykpfXJldHVybigwLHAuZGVmYXVsdCkoZSx0KSwoMCxkLmRlZmF1bHQpKGUsW3trZXk6InJlc2l6ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMuc2VsZWN0ZWQsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dGhpcy5ob3ZlcjtpZih0aGlzLm5lZWRzUmVmcmVzaChlLGkpKXt2YXIgbz10aGlzLmxhYmVsTW9kdWxlLmdldFRleHRTaXplKHQsZSxpKTt0aGlzLmhlaWdodD0yKm8uaGVpZ2h0LHRoaXMud2lkdGg9by53aWR0aCt0aGlzLmhlaWdodCx0aGlzLnJhZGl1cz0uNSp0aGlzLndpZHRofX19LHtrZXk6ImRyYXciLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLG8sbixzKXt0aGlzLnJlc2l6ZSh0LG8sbiksdGhpcy5sZWZ0PWUtLjUqdGhpcy53aWR0aCx0aGlzLnRvcD1pLS41KnRoaXMuaGVpZ2h0LHRoaXMuaW5pdENvbnRleHRGb3JEcmF3KHQscyksdC5lbGxpcHNlX3Zpcyh0aGlzLmxlZnQsdGhpcy50b3AsdGhpcy53aWR0aCx0aGlzLmhlaWdodCksdGhpcy5wZXJmb3JtRmlsbCh0LHMpLHRoaXMudXBkYXRlQm91bmRpbmdCb3goZSxpLHQsbyxuKSx0aGlzLmxhYmVsTW9kdWxlLmRyYXcodCxlLGksbyxuKX19LHtrZXk6ImRpc3RhbmNlVG9Cb3JkZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5yZXNpemUodCk7dmFyIGk9LjUqdGhpcy53aWR0aCxvPS41KnRoaXMuaGVpZ2h0LG49TWF0aC5zaW4oZSkqaSxzPU1hdGguY29zKGUpKm87cmV0dXJuIGkqby9NYXRoLnNxcnQobipuK3Mqcyl9fV0pLGV9KG0uZGVmYXVsdCk7ZS5kZWZhdWx0PXZ9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxNzYpLHM9byhuKSxyPWkoMTM1KSxhPW8ociksaD1pKDEzNiksZD1vKGgpLGw9aSgxNzkpLHU9byhsKSxjPWkoMTgwKSxwPW8oYyksZj1pKDE4NSksbT1vKGYpLHY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGksbyl7KDAsYS5kZWZhdWx0KSh0aGlzLGUpO3ZhciBuPSgwLHUuZGVmYXVsdCkodGhpcywoZS5fX3Byb3RvX198fCgwLHMuZGVmYXVsdCkoZSkpLmNhbGwodGhpcyx0LGksbykpO3JldHVybiBuLl9zZXRNYXJnaW5zKG8pLG59cmV0dXJuKDAscC5kZWZhdWx0KShlLHQpLCgwLGQuZGVmYXVsdCkoZSxbe2tleToicmVzaXplIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5uZWVkc1JlZnJlc2goZSxpKSYmKHRoaXMuaWNvblNpemU9e3dpZHRoOk51bWJlcih0aGlzLm9wdGlvbnMuaWNvbi5zaXplKSxoZWlnaHQ6TnVtYmVyKHRoaXMub3B0aW9ucy5pY29uLnNpemUpfSx0aGlzLndpZHRoPXRoaXMuaWNvblNpemUud2lkdGgrdGhpcy5tYXJnaW4ucmlnaHQrdGhpcy5tYXJnaW4ubGVmdCx0aGlzLmhlaWdodD10aGlzLmljb25TaXplLmhlaWdodCt0aGlzLm1hcmdpbi50b3ArdGhpcy5tYXJnaW4uYm90dG9tLHRoaXMucmFkaXVzPS41KnRoaXMud2lkdGgpfX0se2tleToiZHJhdyIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuLHMpe2lmKHRoaXMucmVzaXplKHQsbyxuKSx0aGlzLm9wdGlvbnMuaWNvbi5zaXplPXRoaXMub3B0aW9ucy5pY29uLnNpemV8fDUwLHRoaXMubGVmdD1lLXRoaXMud2lkdGgvMix0aGlzLnRvcD1pLXRoaXMuaGVpZ2h0LzIsdGhpcy5faWNvbih0LGUsaSxvLG4scyksdm9pZCAwIT09dGhpcy5vcHRpb25zLmxhYmVsKXt0aGlzLmxhYmVsTW9kdWxlLmRyYXcodCx0aGlzLmxlZnQrdGhpcy5pY29uU2l6ZS53aWR0aC8yK3RoaXMubWFyZ2luLmxlZnQsaSt0aGlzLmhlaWdodC8yKzUsbyl9dGhpcy51cGRhdGVCb3VuZGluZ0JveChlLGkpfX0se2tleToidXBkYXRlQm91bmRpbmdCb3giLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYodGhpcy5ib3VuZGluZ0JveC50b3A9ZS0uNSp0aGlzLm9wdGlvbnMuaWNvbi5zaXplLHRoaXMuYm91bmRpbmdCb3gubGVmdD10LS41KnRoaXMub3B0aW9ucy5pY29uLnNpemUsdGhpcy5ib3VuZGluZ0JveC5yaWdodD10Ky41KnRoaXMub3B0aW9ucy5pY29uLnNpemUsdGhpcy5ib3VuZGluZ0JveC5ib3R0b209ZSsuNSp0aGlzLm9wdGlvbnMuaWNvbi5zaXplLHZvaWQgMCE9PXRoaXMub3B0aW9ucy5sYWJlbCYmdGhpcy5sYWJlbE1vZHVsZS5zaXplLndpZHRoPjApe3RoaXMuYm91bmRpbmdCb3gubGVmdD1NYXRoLm1pbih0aGlzLmJvdW5kaW5nQm94LmxlZnQsdGhpcy5sYWJlbE1vZHVsZS5zaXplLmxlZnQpLHRoaXMuYm91bmRpbmdCb3gucmlnaHQ9TWF0aC5tYXgodGhpcy5ib3VuZGluZ0JveC5yaWdodCx0aGlzLmxhYmVsTW9kdWxlLnNpemUubGVmdCt0aGlzLmxhYmVsTW9kdWxlLnNpemUud2lkdGgpLHRoaXMuYm91bmRpbmdCb3guYm90dG9tPU1hdGgubWF4KHRoaXMuYm91bmRpbmdCb3guYm90dG9tLHRoaXMuYm91bmRpbmdCb3guYm90dG9tK3RoaXMubGFiZWxNb2R1bGUuc2l6ZS5oZWlnaHQrNSl9fX0se2tleToiX2ljb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLG8sbixzKXt2YXIgcj1OdW1iZXIodGhpcy5vcHRpb25zLmljb24uc2l6ZSk7dm9pZCAwIT09dGhpcy5vcHRpb25zLmljb24uY29kZT8odC5mb250PShvPyJib2xkICI6IiIpK3IrInB4ICIrdGhpcy5vcHRpb25zLmljb24uZmFjZSx0LmZpbGxTdHlsZT10aGlzLm9wdGlvbnMuaWNvbi5jb2xvcnx8ImJsYWNrIix0LnRleHRBbGlnbj0iY2VudGVyIix0LnRleHRCYXNlbGluZT0ibWlkZGxlIix0aGlzLmVuYWJsZVNoYWRvdyh0LHMpLHQuZmlsbFRleHQodGhpcy5vcHRpb25zLmljb24uY29kZSxlLGkpLHRoaXMuZGlzYWJsZVNoYWRvdyh0LHMpKTpjb25zb2xlLmVycm9yKCJXaGVuIHVzaW5nIHRoZSBpY29uIHNoYXBlLCB5b3UgbmVlZCB0byBkZWZpbmUgdGhlIGNvZGUgaW4gdGhlIGljb24gb3B0aW9ucyBvYmplY3QuIFRoaXMgY2FuIGJlIGRvbmUgcGVyIG5vZGUgb3IgZ2xvYmFsbHkuIil9fSx7a2V5OiJkaXN0YW5jZVRvQm9yZGVyIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9kaXN0YW5jZVRvQm9yZGVyKHQsZSl9fV0pLGV9KG0uZGVmYXVsdCk7ZS5kZWZhdWx0PXZ9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxNzYpLHM9byhuKSxyPWkoMTM1KSxhPW8ociksaD1pKDEzNiksZD1vKGgpLGw9aSgxNzkpLHU9byhsKSxjPWkoMTgwKSxwPW8oYyksZj1pKDE4NyksbT1vKGYpLHY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGksbyxuLHIpeygwLGEuZGVmYXVsdCkodGhpcyxlKTt2YXIgaD0oMCx1LmRlZmF1bHQpKHRoaXMsKGUuX19wcm90b19ffHwoMCxzLmRlZmF1bHQpKGUpKS5jYWxsKHRoaXMsdCxpLG8pKTtyZXR1cm4gaC5zZXRJbWFnZXMobixyKSxofXJldHVybigwLHAuZGVmYXVsdCkoZSx0KSwoMCxkLmRlZmF1bHQpKGUsW3trZXk6InJlc2l6ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMuc2VsZWN0ZWQsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dGhpcy5ob3ZlcjtpZih2b2lkIDA9PT10aGlzLmltYWdlT2JqLnNyY3x8dm9pZCAwPT09dGhpcy5pbWFnZU9iai53aWR0aHx8dm9pZCAwPT09dGhpcy5pbWFnZU9iai5oZWlnaHQpe3ZhciBvPTIqdGhpcy5vcHRpb25zLnNpemU7cmV0dXJuIHRoaXMud2lkdGg9byx2b2lkKHRoaXMuaGVpZ2h0PW8pfXRoaXMubmVlZHNSZWZyZXNoKGUsaSkmJnRoaXMuX3Jlc2l6ZUltYWdlKCl9fSx7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvLG4scyl7aWYodGhpcy5zd2l0Y2hJbWFnZXMobyksdGhpcy5yZXNpemUoKSx0aGlzLmxlZnQ9ZS10aGlzLndpZHRoLzIsdGhpcy50b3A9aS10aGlzLmhlaWdodC8yLCEwPT09dGhpcy5vcHRpb25zLnNoYXBlUHJvcGVydGllcy51c2VCb3JkZXJXaXRoSW1hZ2Upe3ZhciByPXRoaXMub3B0aW9ucy5ib3JkZXJXaWR0aCxhPXRoaXMub3B0aW9ucy5ib3JkZXJXaWR0aFNlbGVjdGVkfHwyKnRoaXMub3B0aW9ucy5ib3JkZXJXaWR0aCxoPShvP2E6cikvdGhpcy5ib2R5LnZpZXcuc2NhbGU7dC5saW5lV2lkdGg9TWF0aC5taW4odGhpcy53aWR0aCxoKSx0LmJlZ2luUGF0aCgpLHQuc3Ryb2tlU3R5bGU9bz90aGlzLm9wdGlvbnMuY29sb3IuaGlnaGxpZ2h0LmJvcmRlcjpuP3RoaXMub3B0aW9ucy5jb2xvci5ob3Zlci5ib3JkZXI6dGhpcy5vcHRpb25zLmNvbG9yLmJvcmRlcix0LmZpbGxTdHlsZT1vP3RoaXMub3B0aW9ucy5jb2xvci5oaWdobGlnaHQuYmFja2dyb3VuZDpuP3RoaXMub3B0aW9ucy5jb2xvci5ob3Zlci5iYWNrZ3JvdW5kOnRoaXMub3B0aW9ucy5jb2xvci5iYWNrZ3JvdW5kLHQucmVjdCh0aGlzLmxlZnQtLjUqdC5saW5lV2lkdGgsdGhpcy50b3AtLjUqdC5saW5lV2lkdGgsdGhpcy53aWR0aCt0LmxpbmVXaWR0aCx0aGlzLmhlaWdodCt0LmxpbmVXaWR0aCksdC5maWxsKCksdGhpcy5wZXJmb3JtU3Ryb2tlKHQscyksdC5jbG9zZVBhdGgoKX10aGlzLl9kcmF3SW1hZ2VBdFBvc2l0aW9uKHQscyksdGhpcy5fZHJhd0ltYWdlTGFiZWwodCxlLGksbyxuKSx0aGlzLnVwZGF0ZUJvdW5kaW5nQm94KGUsaSl9fSx7a2V5OiJ1cGRhdGVCb3VuZGluZ0JveCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLnJlc2l6ZSgpLHRoaXMuX3VwZGF0ZUJvdW5kaW5nQm94KHQsZSksdm9pZCAwIT09dGhpcy5vcHRpb25zLmxhYmVsJiZ0aGlzLmxhYmVsTW9kdWxlLnNpemUud2lkdGg+MCYmKHRoaXMuYm91bmRpbmdCb3gubGVmdD1NYXRoLm1pbih0aGlzLmJvdW5kaW5nQm94LmxlZnQsdGhpcy5sYWJlbE1vZHVsZS5zaXplLmxlZnQpLHRoaXMuYm91bmRpbmdCb3gucmlnaHQ9TWF0aC5tYXgodGhpcy5ib3VuZGluZ0JveC5yaWdodCx0aGlzLmxhYmVsTW9kdWxlLnNpemUubGVmdCt0aGlzLmxhYmVsTW9kdWxlLnNpemUud2lkdGgpLHRoaXMuYm91bmRpbmdCb3guYm90dG9tPU1hdGgubWF4KHRoaXMuYm91bmRpbmdCb3guYm90dG9tLHRoaXMuYm91bmRpbmdCb3guYm90dG9tK3RoaXMubGFiZWxPZmZzZXQpKX19LHtrZXk6ImRpc3RhbmNlVG9Cb3JkZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2Rpc3RhbmNlVG9Cb3JkZXIodCxlKX19XSksZX0obS5kZWZhdWx0KTtlLmRlZmF1bHQ9dn0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDE3Nikscz1vKG4pLHI9aSgxMzUpLGE9byhyKSxoPWkoMTM2KSxkPW8oaCksbD1pKDE3OSksdT1vKGwpLGM9aSgxODApLHA9byhjKSxmPWkoMTkxKSxtPW8oZiksdj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsaSxvKXtyZXR1cm4oMCxhLmRlZmF1bHQpKHRoaXMsZSksKDAsdS5kZWZhdWx0KSh0aGlzLChlLl9fcHJvdG9fX3x8KDAscy5kZWZhdWx0KShlKSkuY2FsbCh0aGlzLHQsaSxvKSl9cmV0dXJuKDAscC5kZWZhdWx0KShlLHQpLCgwLGQuZGVmYXVsdCkoZSxbe2tleToiZHJhdyIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuLHMpe3RoaXMuX2RyYXdTaGFwZSh0LCJzcXVhcmUiLDIsZSxpLG8sbixzKX19LHtrZXk6ImRpc3RhbmNlVG9Cb3JkZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2Rpc3RhbmNlVG9Cb3JkZXIodCxlKX19XSksZX0obS5kZWZhdWx0KTtlLmRlZmF1bHQ9dn0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDE3Nikscz1vKG4pLHI9aSgxMzUpLGE9byhyKSxoPWkoMTM2KSxkPW8oaCksbD1pKDE3OSksdT1vKGwpLGM9aSgxODApLHA9byhjKSxmPWkoMTkxKSxtPW8oZiksdj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsaSxvKXtyZXR1cm4oMCxhLmRlZmF1bHQpKHRoaXMsZSksKDAsdS5kZWZhdWx0KSh0aGlzLChlLl9fcHJvdG9fX3x8KDAscy5kZWZhdWx0KShlKSkuY2FsbCh0aGlzLHQsaSxvKSl9cmV0dXJuKDAscC5kZWZhdWx0KShlLHQpLCgwLGQuZGVmYXVsdCkoZSxbe2tleToiZHJhdyIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuLHMpe3RoaXMuX2RyYXdTaGFwZSh0LCJzdGFyIiw0LGUsaSxvLG4scyl9fSx7a2V5OiJkaXN0YW5jZVRvQm9yZGVyIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9kaXN0YW5jZVRvQm9yZGVyKHQsZSl9fV0pLGV9KG0uZGVmYXVsdCk7ZS5kZWZhdWx0PXZ9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxNzYpLHM9byhuKSxyPWkoMTM1KSxhPW8ociksaD1pKDEzNiksZD1vKGgpLGw9aSgxNzkpLHU9byhsKSxjPWkoMTgwKSxwPW8oYyksZj1pKDE4NSksbT1vKGYpLHY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGksbyl7KDAsYS5kZWZhdWx0KSh0aGlzLGUpO3ZhciBuPSgwLHUuZGVmYXVsdCkodGhpcywoZS5fX3Byb3RvX198fCgwLHMuZGVmYXVsdCkoZSkpLmNhbGwodGhpcyx0LGksbykpO3JldHVybiBuLl9zZXRNYXJnaW5zKG8pLG59cmV0dXJuKDAscC5kZWZhdWx0KShlLHQpLCgwLGQuZGVmYXVsdCkoZSxbe2tleToicmVzaXplIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5uZWVkc1JlZnJlc2goZSxpKSYmKHRoaXMudGV4dFNpemU9dGhpcy5sYWJlbE1vZHVsZS5nZXRUZXh0U2l6ZSh0LGUsaSksdGhpcy53aWR0aD10aGlzLnRleHRTaXplLndpZHRoK3RoaXMubWFyZ2luLnJpZ2h0K3RoaXMubWFyZ2luLmxlZnQsdGhpcy5oZWlnaHQ9dGhpcy50ZXh0U2l6ZS5oZWlnaHQrdGhpcy5tYXJnaW4udG9wK3RoaXMubWFyZ2luLmJvdHRvbSx0aGlzLnJhZGl1cz0uNSp0aGlzLndpZHRoKX19LHtrZXk6ImRyYXciLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLG8sbixzKXt0aGlzLnJlc2l6ZSh0LG8sbiksdGhpcy5sZWZ0PWUtdGhpcy53aWR0aC8yLHRoaXMudG9wPWktdGhpcy5oZWlnaHQvMix0aGlzLmVuYWJsZVNoYWRvdyh0LHMpLHRoaXMubGFiZWxNb2R1bGUuZHJhdyh0LHRoaXMubGVmdCt0aGlzLnRleHRTaXplLndpZHRoLzIrdGhpcy5tYXJnaW4ubGVmdCx0aGlzLnRvcCt0aGlzLnRleHRTaXplLmhlaWdodC8yK3RoaXMubWFyZ2luLnRvcCxvLG4pLHRoaXMuZGlzYWJsZVNoYWRvdyh0LHMpLHRoaXMudXBkYXRlQm91bmRpbmdCb3goZSxpLHQsbyxuKX19LHtrZXk6ImRpc3RhbmNlVG9Cb3JkZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2Rpc3RhbmNlVG9Cb3JkZXIodCxlKX19XSksZX0obS5kZWZhdWx0KTtlLmRlZmF1bHQ9dn0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDE3Nikscz1vKG4pLHI9aSgxMzUpLGE9byhyKSxoPWkoMTM2KSxkPW8oaCksbD1pKDE3OSksdT1vKGwpLGM9aSgxODApLHA9byhjKSxmPWkoMTkxKSxtPW8oZiksdj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsaSxvKXtyZXR1cm4oMCxhLmRlZmF1bHQpKHRoaXMsZSksKDAsdS5kZWZhdWx0KSh0aGlzLChlLl9fcHJvdG9fX3x8KDAscy5kZWZhdWx0KShlKSkuY2FsbCh0aGlzLHQsaSxvKSl9cmV0dXJuKDAscC5kZWZhdWx0KShlLHQpLCgwLGQuZGVmYXVsdCkoZSxbe2tleToiZHJhdyIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuLHMpe3RoaXMuX2RyYXdTaGFwZSh0LCJ0cmlhbmdsZSIsMyxlLGksbyxuLHMpfX0se2tleToiZGlzdGFuY2VUb0JvcmRlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fZGlzdGFuY2VUb0JvcmRlcih0LGUpfX1dKSxlfShtLmRlZmF1bHQpO2UuZGVmYXVsdD12fSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoMTc2KSxzPW8obikscj1pKDEzNSksYT1vKHIpLGg9aSgxMzYpLGQ9byhoKSxsPWkoMTc5KSx1PW8obCksYz1pKDE4MCkscD1vKGMpLGY9aSgxOTEpLG09byhmKSx2PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxpLG8pe3JldHVybigwLGEuZGVmYXVsdCkodGhpcyxlKSwoMCx1LmRlZmF1bHQpKHRoaXMsKGUuX19wcm90b19ffHwoMCxzLmRlZmF1bHQpKGUpKS5jYWxsKHRoaXMsdCxpLG8pKX1yZXR1cm4oMCxwLmRlZmF1bHQpKGUsdCksKDAsZC5kZWZhdWx0KShlLFt7a2V5OiJkcmF3Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvLG4scyl7dGhpcy5fZHJhd1NoYXBlKHQsInRyaWFuZ2xlRG93biIsMyxlLGksbyxuLHMpfX0se2tleToiZGlzdGFuY2VUb0JvcmRlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fZGlzdGFuY2VUb0JvcmRlcih0LGUpfX1dKSxlfShtLmRlZmF1bHQpO2UuZGVmYXVsdD12fSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoMTM1KSxzPW8obikscj1pKDEzNiksYT1vKHIpLGg9aSgxKSxkPWkoODkpLGw9aSg5MyksdT1pKDIwMikuZGVmYXVsdCxjPWkoMTcwKS5kZWZhdWx0LHA9KGkoMjEwKS5kZWZhdWx0LGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGksbyl7dmFyIG49dGhpczsoMCxzLmRlZmF1bHQpKHRoaXMsdCksdGhpcy5ib2R5PWUsdGhpcy5pbWFnZXM9aSx0aGlzLmdyb3Vwcz1vLHRoaXMuYm9keS5mdW5jdGlvbnMuY3JlYXRlRWRnZT10aGlzLmNyZWF0ZS5iaW5kKHRoaXMpLHRoaXMuZWRnZXNMaXN0ZW5lcnM9e2FkZDpmdW5jdGlvbih0LGUpe24uYWRkKGUuaXRlbXMpfSx1cGRhdGU6ZnVuY3Rpb24odCxlKXtuLnVwZGF0ZShlLml0ZW1zKX0scmVtb3ZlOmZ1bmN0aW9uKHQsZSl7bi5yZW1vdmUoZS5pdGVtcyl9fSx0aGlzLm9wdGlvbnM9e30sdGhpcy5kZWZhdWx0T3B0aW9ucz17YXJyb3dzOnt0bzp7ZW5hYmxlZDohMSxzY2FsZUZhY3RvcjoxLHR5cGU6ImFycm93In0sbWlkZGxlOntlbmFibGVkOiExLHNjYWxlRmFjdG9yOjEsdHlwZToiYXJyb3cifSxmcm9tOntlbmFibGVkOiExLHNjYWxlRmFjdG9yOjEsdHlwZToiYXJyb3cifX0sYXJyb3dTdHJpa2V0aHJvdWdoOiEwLGNvbG9yOntjb2xvcjoiIzg0ODQ4NCIsaGlnaGxpZ2h0OiIjODQ4NDg0Iixob3ZlcjoiIzg0ODQ4NCIsaW5oZXJpdDoiZnJvbSIsb3BhY2l0eToxfSxkYXNoZXM6ITEsZm9udDp7Y29sb3I6IiMzNDM0MzQiLHNpemU6MTQsZmFjZToiYXJpYWwiLGJhY2tncm91bmQ6Im5vbmUiLHN0cm9rZVdpZHRoOjIsc3Ryb2tlQ29sb3I6IiNmZmZmZmYiLGFsaWduOiJob3Jpem9udGFsIixtdWx0aTohMSx2YWRqdXN0OjAsYm9sZDp7bW9kOiJib2xkIn0sYm9sZGl0YWw6e21vZDoiYm9sZCBpdGFsaWMifSxpdGFsOnttb2Q6Iml0YWxpYyJ9LG1vbm86e21vZDoiIixzaXplOjE1LGZhY2U6ImNvdXJpZXIgbmV3Iix2YWRqdXN0OjJ9fSxoaWRkZW46ITEsaG92ZXJXaWR0aDoxLjUsbGFiZWw6dm9pZCAwLGxhYmVsSGlnaGxpZ2h0Qm9sZDohMCxsZW5ndGg6dm9pZCAwLHBoeXNpY3M6ITAsc2NhbGluZzp7bWluOjEsbWF4OjE1LGxhYmVsOntlbmFibGVkOiEwLG1pbjoxNCxtYXg6MzAsbWF4VmlzaWJsZTozMCxkcmF3VGhyZXNob2xkOjV9LGN1c3RvbVNjYWxpbmdGdW5jdGlvbjpmdW5jdGlvbih0LGUsaSxvKXtpZihlPT09dClyZXR1cm4uNTt2YXIgbj0xLyhlLXQpO3JldHVybiBNYXRoLm1heCgwLChvLXQpKm4pfX0sc2VsZWN0aW9uV2lkdGg6MS41LHNlbGZSZWZlcmVuY2VTaXplOjIwLHNoYWRvdzp7ZW5hYmxlZDohMSxjb2xvcjoicmdiYSgwLDAsMCwwLjUpIixzaXplOjEwLHg6NSx5OjV9LHNtb290aDp7ZW5hYmxlZDohMCx0eXBlOiJkeW5hbWljIixmb3JjZURpcmVjdGlvbjoibm9uZSIscm91bmRuZXNzOi41fSx0aXRsZTp2b2lkIDAsd2lkdGg6MSx2YWx1ZTp2b2lkIDB9LGguZXh0ZW5kKHRoaXMub3B0aW9ucyx0aGlzLmRlZmF1bHRPcHRpb25zKSx0aGlzLmJpbmRFdmVudExpc3RlbmVycygpfXJldHVybigwLGEuZGVmYXVsdCkodCxbe2tleToiYmluZEV2ZW50TGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5ib2R5LmVtaXR0ZXIub24oIl9mb3JjZURpc2FibGVEeW5hbWljQ3VydmVzIixmdW5jdGlvbihlKXt2YXIgaT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdOyJkeW5hbWljIj09PWUmJihlPSJjb250aW51b3VzIik7dmFyIG89ITE7Zm9yKHZhciBuIGluIHQuYm9keS5lZGdlcylpZih0LmJvZHkuZWRnZXMuaGFzT3duUHJvcGVydHkobikpe3ZhciBzPXQuYm9keS5lZGdlc1tuXSxyPXQuYm9keS5kYXRhLmVkZ2VzLl9kYXRhW25dO2lmKHZvaWQgMCE9PXIpe3ZhciBhPXIuc21vb3RoO3ZvaWQgMCE9PWEmJiEwPT09YS5lbmFibGVkJiYiZHluYW1pYyI9PT1hLnR5cGUmJih2b2lkIDA9PT1lP3Muc2V0T3B0aW9ucyh7c21vb3RoOiExfSk6cy5zZXRPcHRpb25zKHtzbW9vdGg6e3R5cGU6ZX19KSxvPSEwKX19ITA9PT1pJiYhMD09PW8mJnQuYm9keS5lbWl0dGVyLmVtaXQoIl9kYXRhQ2hhbmdlZCIpfSksdGhpcy5ib2R5LmVtaXR0ZXIub24oIl9kYXRhVXBkYXRlZCIsZnVuY3Rpb24oKXt0LnJlY29ubmVjdEVkZ2VzKCl9KSx0aGlzLmJvZHkuZW1pdHRlci5vbigicmVmcmVzaEVkZ2VzIix0aGlzLnJlZnJlc2guYmluZCh0aGlzKSksdGhpcy5ib2R5LmVtaXR0ZXIub24oInJlZnJlc2giLHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpKSx0aGlzLmJvZHkuZW1pdHRlci5vbigiZGVzdHJveSIsZnVuY3Rpb24oKXtoLmZvckVhY2godC5lZGdlc0xpc3RlbmVycyxmdW5jdGlvbihlLGkpe3QuYm9keS5kYXRhLmVkZ2VzJiZ0LmJvZHkuZGF0YS5lZGdlcy5vZmYoaSxlKX0pLGRlbGV0ZSB0LmJvZHkuZnVuY3Rpb25zLmNyZWF0ZUVkZ2UsZGVsZXRlIHQuZWRnZXNMaXN0ZW5lcnMuYWRkLGRlbGV0ZSB0LmVkZ2VzTGlzdGVuZXJzLnVwZGF0ZSxkZWxldGUgdC5lZGdlc0xpc3RlbmVycy5yZW1vdmUsZGVsZXRlIHQuZWRnZXNMaXN0ZW5lcnN9KX19LHtrZXk6InNldE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuZWRnZU9wdGlvbnM9dCx2b2lkIDAhPT10KXt1LnBhcnNlT3B0aW9ucyh0aGlzLm9wdGlvbnMsdCk7dmFyIGU9ITE7aWYodm9pZCAwIT09dC5zbW9vdGgpZm9yKHZhciBpIGluIHRoaXMuYm9keS5lZGdlcyl0aGlzLmJvZHkuZWRnZXMuaGFzT3duUHJvcGVydHkoaSkmJihlPXRoaXMuYm9keS5lZGdlc1tpXS51cGRhdGVFZGdlVHlwZSgpfHxlKTtpZih2b2lkIDAhPT10LmZvbnQpe2MucGFyc2VPcHRpb25zKHRoaXMub3B0aW9ucy5mb250LHQpO2Zvcih2YXIgbyBpbiB0aGlzLmJvZHkuZWRnZXMpdGhpcy5ib2R5LmVkZ2VzLmhhc093blByb3BlcnR5KG8pJiZ0aGlzLmJvZHkuZWRnZXNbb10udXBkYXRlTGFiZWxNb2R1bGUoKX12b2lkIDA9PT10LmhpZGRlbiYmdm9pZCAwPT09dC5waHlzaWNzJiYhMCE9PWV8fHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9kYXRhQ2hhbmdlZCIpfX19LHtrZXk6InNldERhdGEiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLG89dGhpcy5ib2R5LmRhdGEuZWRnZXM7aWYodCBpbnN0YW5jZW9mIGR8fHQgaW5zdGFuY2VvZiBsKXRoaXMuYm9keS5kYXRhLmVkZ2VzPXQ7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXRoaXMuYm9keS5kYXRhLmVkZ2VzPW5ldyBkLHRoaXMuYm9keS5kYXRhLmVkZ2VzLmFkZCh0KTtlbHNle2lmKHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJyYXkgb3IgRGF0YVNldCBleHBlY3RlZCIpO3RoaXMuYm9keS5kYXRhLmVkZ2VzPW5ldyBkfWlmKG8mJmguZm9yRWFjaCh0aGlzLmVkZ2VzTGlzdGVuZXJzLGZ1bmN0aW9uKHQsZSl7by5vZmYoZSx0KX0pLHRoaXMuYm9keS5lZGdlcz17fSx0aGlzLmJvZHkuZGF0YS5lZGdlcyl7aC5mb3JFYWNoKHRoaXMuZWRnZXNMaXN0ZW5lcnMsZnVuY3Rpb24odCxpKXtlLmJvZHkuZGF0YS5lZGdlcy5vbihpLHQpfSk7dmFyIG49dGhpcy5ib2R5LmRhdGEuZWRnZXMuZ2V0SWRzKCk7dGhpcy5hZGQobiwhMCl9dGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX2FkanVzdEVkZ2VzRm9ySGllcmFyY2hpY2FsTGF5b3V0IiksITE9PT1pJiZ0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfZGF0YUNoYW5nZWQiKX19LHtrZXk6ImFkZCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0saT10aGlzLmJvZHkuZWRnZXMsbz10aGlzLmJvZHkuZGF0YS5lZGdlcyxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBzPXRbbl0scj1pW3NdO3ImJnIuZGlzY29ubmVjdCgpO3ZhciBhPW8uZ2V0KHMse3Nob3dJbnRlcm5hbElkczohMH0pO2lbc109dGhpcy5jcmVhdGUoYSl9dGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX2FkanVzdEVkZ2VzRm9ySGllcmFyY2hpY2FsTGF5b3V0IiksITE9PT1lJiZ0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfZGF0YUNoYW5nZWQiKX19LHtrZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuYm9keS5lZGdlcyxpPXRoaXMuYm9keS5kYXRhLmVkZ2VzLG89ITEsbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcz10W25dLHI9aS5nZXQocyksYT1lW3NdO3ZvaWQgMCE9PWE/KGEuZGlzY29ubmVjdCgpLG89YS5zZXRPcHRpb25zKHIpfHxvLGEuY29ubmVjdCgpKToodGhpcy5ib2R5LmVkZ2VzW3NdPXRoaXMuY3JlYXRlKHIpLG89ITApfSEwPT09bz8odGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX2FkanVzdEVkZ2VzRm9ySGllcmFyY2hpY2FsTGF5b3V0IiksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX2RhdGFDaGFuZ2VkIikpOnRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9kYXRhVXBkYXRlZCIpfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5ib2R5LmVkZ2VzLGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIG89dFtpXSxuPWVbb107dm9pZCAwIT09biYmKG4uY2xlYW51cCgpLG4uZGlzY29ubmVjdCgpLGRlbGV0ZSBlW29dKX10aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfZGF0YUNoYW5nZWQiKX19LHtrZXk6InJlZnJlc2giLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5ib2R5LmVkZ2VzO2Zvcih2YXIgZSBpbiB0KXt2YXIgaT12b2lkIDA7dC5oYXNPd25Qcm9wZXJ0eShlKSYmKGk9dFtlXSk7dmFyIG89dGhpcy5ib2R5LmRhdGEuZWRnZXMuX2RhdGFbZV07dm9pZCAwIT09aSYmdm9pZCAwIT09byYmaS5zZXRPcHRpb25zKG8pfX19LHtrZXk6ImNyZWF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyB1KHQsdGhpcy5ib2R5LHRoaXMub3B0aW9ucyx0aGlzLmRlZmF1bHRPcHRpb25zLHRoaXMuZWRnZU9wdGlvbnMpfX0se2tleToicmVjb25uZWN0RWRnZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLmJvZHkubm9kZXMsaT10aGlzLmJvZHkuZWRnZXM7Zm9yKHQgaW4gZSllLmhhc093blByb3BlcnR5KHQpJiYoZVt0XS5lZGdlcz1bXSk7Zm9yKHQgaW4gaSlpZihpLmhhc093blByb3BlcnR5KHQpKXt2YXIgbz1pW3RdO28uZnJvbT1udWxsLG8udG89bnVsbCxvLmNvbm5lY3QoKX19fSx7a2V5OiJnZXRDb25uZWN0ZWROb2RlcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9W107aWYodm9pZCAwIT09dGhpcy5ib2R5LmVkZ2VzW3RdKXt2YXIgaT10aGlzLmJvZHkuZWRnZXNbdF07dm9pZCAwIT09aS5mcm9tSWQmJmUucHVzaChpLmZyb21JZCksdm9pZCAwIT09aS50b0lkJiZlLnB1c2goaS50b0lkKX1yZXR1cm4gZX19XSksdH0oKSk7ZS5kZWZhdWx0PXB9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSg5MCkscz1vKG4pLHI9aSg1NSksYT1vKHIpLGg9aSg2MiksZD1vKGgpLGw9aSgxMzUpLHU9byhsKSxjPWkoMTM2KSxwPW8oYyksZj1pKDEpLG09aSgxNzApLmRlZmF1bHQsdj1pKDIwMykuZGVmYXVsdCxnPWkoMjA3KS5kZWZhdWx0LHk9aSgyMDgpLmRlZmF1bHQsYj1pKDIwOSkuZGVmYXVsdCxfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGksbyxuLHMpe2lmKCgwLHUuZGVmYXVsdCkodGhpcyx0KSx2b2lkIDA9PT1pKXRocm93Ik5vIGJvZHkgcHJvdmlkZWQiO3RoaXMub3B0aW9ucz1mLmJyaWRnZU9iamVjdChvKSx0aGlzLmdsb2JhbE9wdGlvbnM9byx0aGlzLmRlZmF1bHRPcHRpb25zPW4sdGhpcy5lZGdlT3B0aW9ucz1zLHRoaXMuYm9keT1pLHRoaXMuaWQ9dm9pZCAwLHRoaXMuZnJvbUlkPXZvaWQgMCx0aGlzLnRvSWQ9dm9pZCAwLHRoaXMuc2VsZWN0ZWQ9ITEsdGhpcy5ob3Zlcj0hMSx0aGlzLmxhYmVsRGlydHk9ITAsdGhpcy5iYXNlV2lkdGg9dGhpcy5vcHRpb25zLndpZHRoLHRoaXMuYmFzZUZvbnRTaXplPXRoaXMub3B0aW9ucy5mb250LnNpemUsdGhpcy5mcm9tPXZvaWQgMCx0aGlzLnRvPXZvaWQgMCx0aGlzLmVkZ2VUeXBlPXZvaWQgMCx0aGlzLmNvbm5lY3RlZD0hMSx0aGlzLmxhYmVsTW9kdWxlPW5ldyBtKHRoaXMuYm9keSx0aGlzLm9wdGlvbnMsITApLHRoaXMuc2V0T3B0aW9ucyhlKX1yZXR1cm4oMCxwLmRlZmF1bHQpKHQsW3trZXk6InNldE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKGUpe3QucGFyc2VPcHRpb25zKHRoaXMub3B0aW9ucyxlLCEwLHRoaXMuZ2xvYmFsT3B0aW9ucyksdm9pZCAwIT09ZS5pZCYmKHRoaXMuaWQ9ZS5pZCksdm9pZCAwIT09ZS5mcm9tJiYodGhpcy5mcm9tSWQ9ZS5mcm9tKSx2b2lkIDAhPT1lLnRvJiYodGhpcy50b0lkPWUudG8pLHZvaWQgMCE9PWUudGl0bGUmJih0aGlzLnRpdGxlPWUudGl0bGUpLHZvaWQgMCE9PWUudmFsdWUmJihlLnZhbHVlPXBhcnNlRmxvYXQoZS52YWx1ZSkpLHRoaXMuY2hvb3NpZnkoZSksdGhpcy51cGRhdGVMYWJlbE1vZHVsZShlKSx0aGlzLmxhYmVsTW9kdWxlLnByb3BhZ2F0ZUZvbnRzKHRoaXMuZWRnZU9wdGlvbnMsZSx0aGlzLmRlZmF1bHRPcHRpb25zKTt2YXIgaT10aGlzLnVwZGF0ZUVkZ2VUeXBlKCk7cmV0dXJuIHRoaXMuX3NldEludGVyYWN0aW9uV2lkdGhzKCksdGhpcy5jb25uZWN0KCksdm9pZCAwPT09ZS5oaWRkZW4mJnZvaWQgMD09PWUucGh5c2ljc3x8KGk9ITApLGl9fX0se2tleToiY2hvb3NpZnkiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY2hvb3Nlcj0hMDt2YXIgZT1bdCx0aGlzLm9wdGlvbnMsdGhpcy5lZGdlT3B0aW9ucyx0aGlzLmRlZmF1bHRPcHRpb25zXSxpPWYudG9wTW9zdChlLCJjaG9zZW4iKTtpZigiYm9vbGVhbiI9PXR5cGVvZiBpKXRoaXMuY2hvb3Nlcj1pO2Vsc2UgaWYoIm9iamVjdCI9PT0odm9pZCAwPT09aT8idW5kZWZpbmVkIjooMCxkLmRlZmF1bHQpKGkpKSl7dmFyIG89Zi50b3BNb3N0KGUsWyJjaG9zZW4iLCJlZGdlIl0pOyJib29sZWFuIiE9dHlwZW9mIG8mJiJmdW5jdGlvbiIhPXR5cGVvZiBvfHwodGhpcy5jaG9vc2VyPW8pfX19LHtrZXk6ImdldEZvcm1hdHRpbmdWYWx1ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9ITA9PT10aGlzLm9wdGlvbnMuYXJyb3dzLnRvfHwhMD09PXRoaXMub3B0aW9ucy5hcnJvd3MudG8uZW5hYmxlZCxlPSEwPT09dGhpcy5vcHRpb25zLmFycm93cy5mcm9tfHwhMD09PXRoaXMub3B0aW9ucy5hcnJvd3MuZnJvbS5lbmFibGVkLGk9ITA9PT10aGlzLm9wdGlvbnMuYXJyb3dzLm1pZGRsZXx8ITA9PT10aGlzLm9wdGlvbnMuYXJyb3dzLm1pZGRsZS5lbmFibGVkLG89dGhpcy5vcHRpb25zLmNvbG9yLmluaGVyaXQsbj17dG9BcnJvdzp0LHRvQXJyb3dTY2FsZTp0aGlzLm9wdGlvbnMuYXJyb3dzLnRvLnNjYWxlRmFjdG9yLHRvQXJyb3dUeXBlOnRoaXMub3B0aW9ucy5hcnJvd3MudG8udHlwZSxtaWRkbGVBcnJvdzppLG1pZGRsZUFycm93U2NhbGU6dGhpcy5vcHRpb25zLmFycm93cy5taWRkbGUuc2NhbGVGYWN0b3IsbWlkZGxlQXJyb3dUeXBlOnRoaXMub3B0aW9ucy5hcnJvd3MubWlkZGxlLnR5cGUsZnJvbUFycm93OmUsZnJvbUFycm93U2NhbGU6dGhpcy5vcHRpb25zLmFycm93cy5mcm9tLnNjYWxlRmFjdG9yLGZyb21BcnJvd1R5cGU6dGhpcy5vcHRpb25zLmFycm93cy5mcm9tLnR5cGUsYXJyb3dTdHJpa2V0aHJvdWdoOnRoaXMub3B0aW9ucy5hcnJvd1N0cmlrZXRocm91Z2gsY29sb3I6bz92b2lkIDA6dGhpcy5vcHRpb25zLmNvbG9yLmNvbG9yLGluaGVyaXRzQ29sb3I6byxvcGFjaXR5OnRoaXMub3B0aW9ucy5jb2xvci5vcGFjaXR5LGhpZGRlbjp0aGlzLm9wdGlvbnMuaGlkZGVuLGxlbmd0aDp0aGlzLm9wdGlvbnMubGVuZ3RoLHNoYWRvdzp0aGlzLm9wdGlvbnMuc2hhZG93LmVuYWJsZWQsc2hhZG93Q29sb3I6dGhpcy5vcHRpb25zLnNoYWRvdy5jb2xvcixzaGFkb3dTaXplOnRoaXMub3B0aW9ucy5zaGFkb3cuc2l6ZSxzaGFkb3dYOnRoaXMub3B0aW9ucy5zaGFkb3cueCxzaGFkb3dZOnRoaXMub3B0aW9ucy5zaGFkb3cueSxkYXNoZXM6dGhpcy5vcHRpb25zLmRhc2hlcyx3aWR0aDp0aGlzLm9wdGlvbnMud2lkdGh9O2lmKHRoaXMuc2VsZWN0ZWR8fHRoaXMuaG92ZXIpaWYoITA9PT10aGlzLmNob29zZXIpe2lmKHRoaXMuc2VsZWN0ZWQpe3ZhciBzPXRoaXMub3B0aW9ucy5zZWxlY3Rpb25XaWR0aDsiZnVuY3Rpb24iPT10eXBlb2Ygcz9uLndpZHRoPXMobi53aWR0aCk6Im51bWJlciI9PXR5cGVvZiBzJiYobi53aWR0aCs9cyksbi53aWR0aD1NYXRoLm1heChuLndpZHRoLC4zL3RoaXMuYm9keS52aWV3LnNjYWxlKSxuLmNvbG9yPXRoaXMub3B0aW9ucy5jb2xvci5oaWdobGlnaHQsbi5zaGFkb3c9dGhpcy5vcHRpb25zLnNoYWRvdy5lbmFibGVkfWVsc2UgaWYodGhpcy5ob3Zlcil7dmFyIHI9dGhpcy5vcHRpb25zLmhvdmVyV2lkdGg7ImZ1bmN0aW9uIj09dHlwZW9mIHI/bi53aWR0aD1yKG4ud2lkdGgpOiJudW1iZXIiPT10eXBlb2YgciYmKG4ud2lkdGgrPXIpLG4ud2lkdGg9TWF0aC5tYXgobi53aWR0aCwuMy90aGlzLmJvZHkudmlldy5zY2FsZSksbi5jb2xvcj10aGlzLm9wdGlvbnMuY29sb3IuaG92ZXIsbi5zaGFkb3c9dGhpcy5vcHRpb25zLnNoYWRvdy5lbmFibGVkfX1lbHNlImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuY2hvb3NlciYmKHRoaXMuY2hvb3NlcihuLHRoaXMub3B0aW9ucy5pZCx0aGlzLnNlbGVjdGVkLHRoaXMuaG92ZXIpLHZvaWQgMCE9PW4uY29sb3ImJihuLmluaGVyaXRzQ29sb3I9ITEpLCExPT09bi5zaGFkb3cmJihuLnNoYWRvd0NvbG9yPT09dGhpcy5vcHRpb25zLnNoYWRvdy5jb2xvciYmbi5zaGFkb3dTaXplPT09dGhpcy5vcHRpb25zLnNoYWRvdy5zaXplJiZuLnNoYWRvd1g9PT10aGlzLm9wdGlvbnMuc2hhZG93LngmJm4uc2hhZG93WT09PXRoaXMub3B0aW9ucy5zaGFkb3cueXx8KG4uc2hhZG93PSEwKSkpO2Vsc2Ugbi5zaGFkb3c9dGhpcy5vcHRpb25zLnNoYWRvdy5lbmFibGVkLG4ud2lkdGg9TWF0aC5tYXgobi53aWR0aCwuMy90aGlzLmJvZHkudmlldy5zY2FsZSk7cmV0dXJuIG59fSx7a2V5OiJ1cGRhdGVMYWJlbE1vZHVsZSIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5sYWJlbE1vZHVsZS5zZXRPcHRpb25zKHRoaXMub3B0aW9ucywhMCksdm9pZCAwIT09dGhpcy5sYWJlbE1vZHVsZS5iYXNlU2l6ZSYmKHRoaXMuYmFzZUZvbnRTaXplPXRoaXMubGFiZWxNb2R1bGUuYmFzZVNpemUpLHRoaXMubGFiZWxNb2R1bGUuY29uc3RyYWluKHRoaXMuZWRnZU9wdGlvbnMsdCx0aGlzLmRlZmF1bHRPcHRpb25zKSx0aGlzLmxhYmVsTW9kdWxlLmNob29zaWZ5KHRoaXMuZWRnZU9wdGlvbnMsdCx0aGlzLmRlZmF1bHRPcHRpb25zKX19LHtrZXk6InVwZGF0ZUVkZ2VUeXBlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5zbW9vdGgsZT0hMSxpPSEwO3JldHVybiB2b2lkIDAhPT10aGlzLmVkZ2VUeXBlJiYoKHRoaXMuZWRnZVR5cGUgaW5zdGFuY2VvZiBnJiYhMD09PXQuZW5hYmxlZCYmImR5bmFtaWMiPT09dC50eXBlfHx0aGlzLmVkZ2VUeXBlIGluc3RhbmNlb2YgdiYmITA9PT10LmVuYWJsZWQmJiJjdWJpY0JlemllciI9PT10LnR5cGV8fHRoaXMuZWRnZVR5cGUgaW5zdGFuY2VvZiB5JiYhMD09PXQuZW5hYmxlZCYmImR5bmFtaWMiIT09dC50eXBlJiYiY3ViaWNCZXppZXIiIT09dC50eXBlfHx0aGlzLmVkZ2VUeXBlIGluc3RhbmNlb2YgYiYmITE9PT10LnR5cGUuZW5hYmxlZCkmJihpPSExKSwhMD09PWkmJihlPXRoaXMuY2xlYW51cCgpKSksITA9PT1pPyEwPT09dC5lbmFibGVkPyJkeW5hbWljIj09PXQudHlwZT8oZT0hMCx0aGlzLmVkZ2VUeXBlPW5ldyBnKHRoaXMub3B0aW9ucyx0aGlzLmJvZHksdGhpcy5sYWJlbE1vZHVsZSkpOiJjdWJpY0JlemllciI9PT10LnR5cGU/dGhpcy5lZGdlVHlwZT1uZXcgdih0aGlzLm9wdGlvbnMsdGhpcy5ib2R5LHRoaXMubGFiZWxNb2R1bGUpOnRoaXMuZWRnZVR5cGU9bmV3IHkodGhpcy5vcHRpb25zLHRoaXMuYm9keSx0aGlzLmxhYmVsTW9kdWxlKTp0aGlzLmVkZ2VUeXBlPW5ldyBiKHRoaXMub3B0aW9ucyx0aGlzLmJvZHksdGhpcy5sYWJlbE1vZHVsZSk6dGhpcy5lZGdlVHlwZS5zZXRPcHRpb25zKHRoaXMub3B0aW9ucyksZX19LHtrZXk6ImNvbm5lY3QiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXNjb25uZWN0KCksdGhpcy5mcm9tPXRoaXMuYm9keS5ub2Rlc1t0aGlzLmZyb21JZF18fHZvaWQgMCx0aGlzLnRvPXRoaXMuYm9keS5ub2Rlc1t0aGlzLnRvSWRdfHx2b2lkIDAsdGhpcy5jb25uZWN0ZWQ9dm9pZCAwIT09dGhpcy5mcm9tJiZ2b2lkIDAhPT10aGlzLnRvLCEwPT09dGhpcy5jb25uZWN0ZWQ/KHRoaXMuZnJvbS5hdHRhY2hFZGdlKHRoaXMpLHRoaXMudG8uYXR0YWNoRWRnZSh0aGlzKSk6KHRoaXMuZnJvbSYmdGhpcy5mcm9tLmRldGFjaEVkZ2UodGhpcyksdGhpcy50byYmdGhpcy50by5kZXRhY2hFZGdlKHRoaXMpKSx0aGlzLmVkZ2VUeXBlLmNvbm5lY3QoKX19LHtrZXk6ImRpc2Nvbm5lY3QiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5mcm9tJiYodGhpcy5mcm9tLmRldGFjaEVkZ2UodGhpcyksdGhpcy5mcm9tPXZvaWQgMCksdGhpcy50byYmKHRoaXMudG8uZGV0YWNoRWRnZSh0aGlzKSx0aGlzLnRvPXZvaWQgMCksdGhpcy5jb25uZWN0ZWQ9ITF9fSx7a2V5OiJnZXRUaXRsZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aXRsZX19LHtrZXk6ImlzU2VsZWN0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0ZWR9fSx7a2V5OiJnZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLnZhbHVlfX0se2tleToic2V0VmFsdWVSYW5nZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe2lmKHZvaWQgMCE9PXRoaXMub3B0aW9ucy52YWx1ZSl7dmFyIG89dGhpcy5vcHRpb25zLnNjYWxpbmcuY3VzdG9tU2NhbGluZ0Z1bmN0aW9uKHQsZSxpLHRoaXMub3B0aW9ucy52YWx1ZSksbj10aGlzLm9wdGlvbnMuc2NhbGluZy5tYXgtdGhpcy5vcHRpb25zLnNjYWxpbmcubWluO2lmKCEwPT09dGhpcy5vcHRpb25zLnNjYWxpbmcubGFiZWwuZW5hYmxlZCl7dmFyIHM9dGhpcy5vcHRpb25zLnNjYWxpbmcubGFiZWwubWF4LXRoaXMub3B0aW9ucy5zY2FsaW5nLmxhYmVsLm1pbjt0aGlzLm9wdGlvbnMuZm9udC5zaXplPXRoaXMub3B0aW9ucy5zY2FsaW5nLmxhYmVsLm1pbitvKnN9dGhpcy5vcHRpb25zLndpZHRoPXRoaXMub3B0aW9ucy5zY2FsaW5nLm1pbitvKm59ZWxzZSB0aGlzLm9wdGlvbnMud2lkdGg9dGhpcy5iYXNlV2lkdGgsdGhpcy5vcHRpb25zLmZvbnQuc2l6ZT10aGlzLmJhc2VGb250U2l6ZTt0aGlzLl9zZXRJbnRlcmFjdGlvbldpZHRocygpLHRoaXMudXBkYXRlTGFiZWxNb2R1bGUoKX19LHtrZXk6Il9zZXRJbnRlcmFjdGlvbldpZHRocyIsdmFsdWU6ZnVuY3Rpb24oKXsiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vcHRpb25zLmhvdmVyV2lkdGg/dGhpcy5lZGdlVHlwZS5ob3ZlcldpZHRoPXRoaXMub3B0aW9ucy5ob3ZlcldpZHRoKHRoaXMub3B0aW9ucy53aWR0aCk6dGhpcy5lZGdlVHlwZS5ob3ZlcldpZHRoPXRoaXMub3B0aW9ucy5ob3ZlcldpZHRoK3RoaXMub3B0aW9ucy53aWR0aCwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vcHRpb25zLnNlbGVjdGlvbldpZHRoP3RoaXMuZWRnZVR5cGUuc2VsZWN0aW9uV2lkdGg9dGhpcy5vcHRpb25zLnNlbGVjdGlvbldpZHRoKHRoaXMub3B0aW9ucy53aWR0aCk6dGhpcy5lZGdlVHlwZS5zZWxlY3Rpb25XaWR0aD10aGlzLm9wdGlvbnMuc2VsZWN0aW9uV2lkdGgrdGhpcy5vcHRpb25zLndpZHRofX0se2tleToiZHJhdyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRGb3JtYXR0aW5nVmFsdWVzKCk7aWYoIWUuaGlkZGVuKXt2YXIgaT10aGlzLmVkZ2VUeXBlLmdldFZpYU5vZGUoKSxvPXt9O3RoaXMuZWRnZVR5cGUuZnJvbVBvaW50PXRoaXMuZWRnZVR5cGUuZnJvbSx0aGlzLmVkZ2VUeXBlLnRvUG9pbnQ9dGhpcy5lZGdlVHlwZS50byxlLmZyb21BcnJvdyYmKG8uZnJvbT10aGlzLmVkZ2VUeXBlLmdldEFycm93RGF0YSh0LCJmcm9tIixpLHRoaXMuc2VsZWN0ZWQsdGhpcy5ob3ZlcixlKSwhMT09PWUuYXJyb3dTdHJpa2V0aHJvdWdoJiYodGhpcy5lZGdlVHlwZS5mcm9tUG9pbnQ9by5mcm9tLmNvcmUpKSxlLnRvQXJyb3cmJihvLnRvPXRoaXMuZWRnZVR5cGUuZ2V0QXJyb3dEYXRhKHQsInRvIixpLHRoaXMuc2VsZWN0ZWQsdGhpcy5ob3ZlcixlKSwhMT09PWUuYXJyb3dTdHJpa2V0aHJvdWdoJiYodGhpcy5lZGdlVHlwZS50b1BvaW50PW8udG8uY29yZSkpLGUubWlkZGxlQXJyb3cmJihvLm1pZGRsZT10aGlzLmVkZ2VUeXBlLmdldEFycm93RGF0YSh0LCJtaWRkbGUiLGksdGhpcy5zZWxlY3RlZCx0aGlzLmhvdmVyLGUpKSx0aGlzLmVkZ2VUeXBlLmRyYXdMaW5lKHQsZSx0aGlzLnNlbGVjdGVkLHRoaXMuaG92ZXIsaSksdGhpcy5kcmF3QXJyb3dzKHQsbyxlKSx0aGlzLmRyYXdMYWJlbCh0LGkpfX19LHtrZXk6ImRyYXdBcnJvd3MiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtpLmZyb21BcnJvdyYmdGhpcy5lZGdlVHlwZS5kcmF3QXJyb3dIZWFkKHQsaSx0aGlzLnNlbGVjdGVkLHRoaXMuaG92ZXIsZS5mcm9tKSxpLm1pZGRsZUFycm93JiZ0aGlzLmVkZ2VUeXBlLmRyYXdBcnJvd0hlYWQodCxpLHRoaXMuc2VsZWN0ZWQsdGhpcy5ob3ZlcixlLm1pZGRsZSksaS50b0Fycm93JiZ0aGlzLmVkZ2VUeXBlLmRyYXdBcnJvd0hlYWQodCxpLHRoaXMuc2VsZWN0ZWQsdGhpcy5ob3ZlcixlLnRvKX19LHtrZXk6ImRyYXdMYWJlbCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZih2b2lkIDAhPT10aGlzLm9wdGlvbnMubGFiZWwpe3ZhciBpPXRoaXMuZnJvbSxvPXRoaXMudG87aWYodGhpcy5sYWJlbE1vZHVsZS5kaWZmZXJlbnRTdGF0ZSh0aGlzLnNlbGVjdGVkLHRoaXMuaG92ZXIpJiZ0aGlzLmxhYmVsTW9kdWxlLmdldFRleHRTaXplKHQsdGhpcy5zZWxlY3RlZCx0aGlzLmhvdmVyKSxpLmlkIT1vLmlkKXt0aGlzLmxhYmVsTW9kdWxlLnBvaW50VG9TZWxmPSExO3ZhciBuPXRoaXMuZWRnZVR5cGUuZ2V0UG9pbnQoLjUsZSk7dC5zYXZlKCksImhvcml6b250YWwiIT09dGhpcy5vcHRpb25zLmZvbnQuYWxpZ24mJih0aGlzLmxhYmVsTW9kdWxlLmNhbGN1bGF0ZUxhYmVsU2l6ZSh0LHRoaXMuc2VsZWN0ZWQsdGhpcy5ob3ZlcixuLngsbi55KSx0LnRyYW5zbGF0ZShuLngsdGhpcy5sYWJlbE1vZHVsZS5zaXplLnlMaW5lKSx0aGlzLl9yb3RhdGVGb3JMYWJlbEFsaWdubWVudCh0KSksdGhpcy5sYWJlbE1vZHVsZS5kcmF3KHQsbi54LG4ueSx0aGlzLnNlbGVjdGVkLHRoaXMuaG92ZXIpLHQucmVzdG9yZSgpfWVsc2V7dGhpcy5sYWJlbE1vZHVsZS5wb2ludFRvU2VsZj0hMDt2YXIgcyxyLGE9dGhpcy5vcHRpb25zLnNlbGZSZWZlcmVuY2VTaXplO2kuc2hhcGUud2lkdGg+aS5zaGFwZS5oZWlnaHQ/KHM9aS54Ky41Kmkuc2hhcGUud2lkdGgscj1pLnktYSk6KHM9aS54K2Escj1pLnktLjUqaS5zaGFwZS5oZWlnaHQpLG49dGhpcy5fcG9pbnRPbkNpcmNsZShzLHIsYSwuMTI1KSx0aGlzLmxhYmVsTW9kdWxlLmRyYXcodCxuLngsbi55LHRoaXMuc2VsZWN0ZWQsdGhpcy5ob3Zlcil9fX19LHtrZXk6ImlzT3ZlcmxhcHBpbmdXaXRoIix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLmNvbm5lY3RlZCl7dmFyIGU9dGhpcy5mcm9tLngsaT10aGlzLmZyb20ueSxvPXRoaXMudG8ueCxuPXRoaXMudG8ueSxzPXQubGVmdCxyPXQudG9wO3JldHVybiB0aGlzLmVkZ2VUeXBlLmdldERpc3RhbmNlVG9FZGdlKGUsaSxvLG4scyxyKTwxMH1yZXR1cm4hMX19LHtrZXk6Il9yb3RhdGVGb3JMYWJlbEFsaWdubWVudCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5mcm9tLnktdGhpcy50by55LGk9dGhpcy5mcm9tLngtdGhpcy50by54LG89TWF0aC5hdGFuMihlLGkpOyhvPC0xJiZpPDB8fG8+MCYmaTwwKSYmKG8rPU1hdGguUEkpLHQucm90YXRlKG8pfX0se2tleToiX3BvaW50T25DaXJjbGUiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLG8pe3ZhciBuPTIqbypNYXRoLlBJO3JldHVybnt4OnQraSpNYXRoLmNvcyhuKSx5OmUtaSpNYXRoLnNpbihuKX19fSx7a2V5OiJzZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD0hMH19LHtrZXk6InVuc2VsZWN0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWQ9ITF9fSx7a2V5OiJjbGVhbnVwIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZ2VUeXBlLmNsZWFudXAoKX19XSxbe2tleToicGFyc2VPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sbz1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106e30sbj1bImFycm93U3RyaWtldGhyb3VnaCIsImlkIiwiZnJvbSIsImhpZGRlbiIsImhvdmVyV2lkdGgiLCJsYWJlbCIsImxhYmVsSGlnaGxpZ2h0Qm9sZCIsImxlbmd0aCIsImxpbmUiLCJvcGFjaXR5IiwicGh5c2ljcyIsInNjYWxpbmciLCJzZWxlY3Rpb25XaWR0aCIsInNlbGZSZWZlcmVuY2VTaXplIiwidG8iLCJ0aXRsZSIsInZhbHVlIiwid2lkdGgiXTtpZihmLnNlbGVjdGl2ZURlZXBFeHRlbmQobix0LGUsaSksZi5tZXJnZU9wdGlvbnModCxlLCJzbW9vdGgiLGksbyksZi5tZXJnZU9wdGlvbnModCxlLCJzaGFkb3ciLGksbyksdm9pZCAwIT09ZS5kYXNoZXMmJm51bGwhPT1lLmRhc2hlcz90LmRhc2hlcz1lLmRhc2hlczohMD09PWkmJm51bGw9PT1lLmRhc2hlcyYmKHQuZGFzaGVzPSgwLGEuZGVmYXVsdCkoby5kYXNoZXMpKSx2b2lkIDAhPT1lLnNjYWxpbmcmJm51bGwhPT1lLnNjYWxpbmc/KHZvaWQgMCE9PWUuc2NhbGluZy5taW4mJih0LnNjYWxpbmcubWluPWUuc2NhbGluZy5taW4pLHZvaWQgMCE9PWUuc2NhbGluZy5tYXgmJih0LnNjYWxpbmcubWF4PWUuc2NhbGluZy5tYXgpLGYubWVyZ2VPcHRpb25zKHQuc2NhbGluZyxlLnNjYWxpbmcsImxhYmVsIixpLG8uc2NhbGluZykpOiEwPT09aSYmbnVsbD09PWUuc2NhbGluZyYmKHQuc2NhbGluZz0oMCxhLmRlZmF1bHQpKG8uc2NhbGluZykpLHZvaWQgMCE9PWUuYXJyb3dzJiZudWxsIT09ZS5hcnJvd3MpaWYoInN0cmluZyI9PXR5cGVvZiBlLmFycm93cyl7dmFyIHI9ZS5hcnJvd3MudG9Mb3dlckNhc2UoKTt0LmFycm93cy50by5lbmFibGVkPS0xIT1yLmluZGV4T2YoInRvIiksdC5hcnJvd3MubWlkZGxlLmVuYWJsZWQ9LTEhPXIuaW5kZXhPZigibWlkZGxlIiksdC5hcnJvd3MuZnJvbS5lbmFibGVkPS0xIT1yLmluZGV4T2YoImZyb20iKX1lbHNle2lmKCJvYmplY3QiIT09KDAsZC5kZWZhdWx0KShlLmFycm93cykpdGhyb3cgbmV3IEVycm9yKCJUaGUgYXJyb3cgbmV3T3B0aW9ucyBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgYSBzdHJpbmcuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uLiBZb3UgdXNlZDoiKygwLHMuZGVmYXVsdCkoZS5hcnJvd3MpKTtmLm1lcmdlT3B0aW9ucyh0LmFycm93cyxlLmFycm93cywidG8iLGksby5hcnJvd3MpLGYubWVyZ2VPcHRpb25zKHQuYXJyb3dzLGUuYXJyb3dzLCJtaWRkbGUiLGksby5hcnJvd3MpLGYubWVyZ2VPcHRpb25zKHQuYXJyb3dzLGUuYXJyb3dzLCJmcm9tIixpLG8uYXJyb3dzKX1lbHNlITA9PT1pJiZudWxsPT09ZS5hcnJvd3MmJih0LmFycm93cz0oMCxhLmRlZmF1bHQpKG8uYXJyb3dzKSk7aWYodm9pZCAwIT09ZS5jb2xvciYmbnVsbCE9PWUuY29sb3IpaWYodC5jb2xvcj1mLmRlZXBFeHRlbmQoe30sdC5jb2xvciwhMCksZi5pc1N0cmluZyhlLmNvbG9yKSl0LmNvbG9yLmNvbG9yPWUuY29sb3IsdC5jb2xvci5oaWdobGlnaHQ9ZS5jb2xvcix0LmNvbG9yLmhvdmVyPWUuY29sb3IsdC5jb2xvci5pbmhlcml0PSExO2Vsc2V7dmFyIGg9ITE7dm9pZCAwIT09ZS5jb2xvci5jb2xvciYmKHQuY29sb3IuY29sb3I9ZS5jb2xvci5jb2xvcixoPSEwKSx2b2lkIDAhPT1lLmNvbG9yLmhpZ2hsaWdodCYmKHQuY29sb3IuaGlnaGxpZ2h0PWUuY29sb3IuaGlnaGxpZ2h0LGg9ITApLHZvaWQgMCE9PWUuY29sb3IuaG92ZXImJih0LmNvbG9yLmhvdmVyPWUuY29sb3IuaG92ZXIsaD0hMCksdm9pZCAwIT09ZS5jb2xvci5pbmhlcml0JiYodC5jb2xvci5pbmhlcml0PWUuY29sb3IuaW5oZXJpdCksdm9pZCAwIT09ZS5jb2xvci5vcGFjaXR5JiYodC5jb2xvci5vcGFjaXR5PU1hdGgubWluKDEsTWF0aC5tYXgoMCxlLmNvbG9yLm9wYWNpdHkpKSksdm9pZCAwPT09ZS5jb2xvci5pbmhlcml0JiYhMD09PWgmJih0LmNvbG9yLmluaGVyaXQ9ITEpfWVsc2UhMD09PWkmJm51bGw9PT1lLmNvbG9yJiYodC5jb2xvcj1mLmJyaWRnZU9iamVjdChvLmNvbG9yKSk7dm9pZCAwIT09ZS5mb250JiZudWxsIT09ZS5mb250P20ucGFyc2VPcHRpb25zKHQuZm9udCxlKTohMD09PWkmJm51bGw9PT1lLmZvbnQmJih0LmZvbnQ9Zi5icmlkZ2VPYmplY3Qoby5mb250KSl9fV0pLHR9KCk7ZS5kZWZhdWx0PV99LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxNzEpLHM9byhuKSxyPWkoMTc2KSxhPW8ociksaD1pKDEzNSksZD1vKGgpLGw9aSgxMzYpLHU9byhsKSxjPWkoMTc5KSxwPW8oYyksZj1pKDE4MCksbT1vKGYpLHY9aSgyMDQpLGc9byh2KSx5PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxpLG8pe3JldHVybigwLGQuZGVmYXVsdCkodGhpcyxlKSwoMCxwLmRlZmF1bHQpKHRoaXMsKGUuX19wcm90b19ffHwoMCxhLmRlZmF1bHQpKGUpKS5jYWxsKHRoaXMsdCxpLG8pKX1yZXR1cm4oMCxtLmRlZmF1bHQpKGUsdCksKDAsdS5kZWZhdWx0KShlLFt7a2V5OiJfbGluZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBvPWlbMF0sbj1pWzFdO3RoaXMuX2JlemllckN1cnZlKHQsZSxvLG4pfX0se2tleToiX2dldFZpYUNvb3JkaW5hdGVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZnJvbS54LXRoaXMudG8ueCxlPXRoaXMuZnJvbS55LXRoaXMudG8ueSxpPXZvaWQgMCxvPXZvaWQgMCxuPXZvaWQgMCxzPXZvaWQgMCxyPXRoaXMub3B0aW9ucy5zbW9vdGgucm91bmRuZXNzO3JldHVybihNYXRoLmFicyh0KT5NYXRoLmFicyhlKXx8ITA9PT10aGlzLm9wdGlvbnMuc21vb3RoLmZvcmNlRGlyZWN0aW9ufHwiaG9yaXpvbnRhbCI9PT10aGlzLm9wdGlvbnMuc21vb3RoLmZvcmNlRGlyZWN0aW9uKSYmInZlcnRpY2FsIiE9PXRoaXMub3B0aW9ucy5zbW9vdGguZm9yY2VEaXJlY3Rpb24/KG89dGhpcy5mcm9tLnkscz10aGlzLnRvLnksaT10aGlzLmZyb20ueC1yKnQsbj10aGlzLnRvLngrcip0KToobz10aGlzLmZyb20ueS1yKmUscz10aGlzLnRvLnkrciplLGk9dGhpcy5mcm9tLngsbj10aGlzLnRvLngpLFt7eDppLHk6b30se3g6bix5OnN9XX19LHtrZXk6ImdldFZpYU5vZGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFZpYUNvb3JkaW5hdGVzKCl9fSx7a2V5OiJfZmluZEJvcmRlclBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9maW5kQm9yZGVyUG9zaXRpb25CZXppZXIodCxlKX19LHtrZXk6Il9nZXREaXN0YW5jZVRvRWRnZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuLHIpe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+NiYmdm9pZCAwIT09YXJndW1lbnRzWzZdP2FyZ3VtZW50c1s2XTp0aGlzLl9nZXRWaWFDb29yZGluYXRlcygpLGg9KDAscy5kZWZhdWx0KShhLDIpLGQ9aFswXSxsPWhbMV07cmV0dXJuIHRoaXMuX2dldERpc3RhbmNlVG9CZXppZXJFZGdlKHQsZSxpLG8sbixyLGQsbCl9fSx7a2V5OiJnZXRQb2ludCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMuX2dldFZpYUNvb3JkaW5hdGVzKCksaT0oMCxzLmRlZmF1bHQpKGUsMiksbz1pWzBdLG49aVsxXSxyPXQsYT1bXTtyZXR1cm4gYVswXT1NYXRoLnBvdygxLXIsMyksYVsxXT0zKnIqTWF0aC5wb3coMS1yLDIpLGFbMl09MypNYXRoLnBvdyhyLDIpKigxLXIpLGFbM109TWF0aC5wb3cociwzKSx7eDphWzBdKnRoaXMuZnJvbVBvaW50LngrYVsxXSpvLngrYVsyXSpuLngrYVszXSp0aGlzLnRvUG9pbnQueCx5OmFbMF0qdGhpcy5mcm9tUG9pbnQueSthWzFdKm8ueSthWzJdKm4ueSthWzNdKnRoaXMudG9Qb2ludC55fX19XSksZX0oZy5kZWZhdWx0KTtlLmRlZmF1bHQ9eX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDE3Nikscz1vKG4pLHI9aSgxMzUpLGE9byhyKSxoPWkoMTM2KSxkPW8oaCksbD1pKDE3OSksdT1vKGwpLGM9aSgxODApLHA9byhjKSxmPWkoMjA1KSxtPW8oZiksdj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsaSxvKXtyZXR1cm4oMCxhLmRlZmF1bHQpKHRoaXMsZSksKDAsdS5kZWZhdWx0KSh0aGlzLChlLl9fcHJvdG9fX3x8KDAscy5kZWZhdWx0KShlKSkuY2FsbCh0aGlzLHQsaSxvKSl9cmV0dXJuKDAscC5kZWZhdWx0KShlLHQpLCgwLGQuZGVmYXVsdCkoZSxbe2tleToiX2dldERpc3RhbmNlVG9CZXppZXJFZGdlIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvLG4scyxyLGEpe3ZhciBoPTFlOSxkPXZvaWQgMCxsPXZvaWQgMCx1PXZvaWQgMCxjPXZvaWQgMCxwPXZvaWQgMCxmPXQsbT1lLHY9WzAsMCwwLDBdO2ZvcihsPTE7bDwxMDtsKyspdT0uMSpsLHZbMF09TWF0aC5wb3coMS11LDMpLHZbMV09Myp1Kk1hdGgucG93KDEtdSwyKSx2WzJdPTMqTWF0aC5wb3codSwyKSooMS11KSx2WzNdPU1hdGgucG93KHUsMyksYz12WzBdKnQrdlsxXSpyLngrdlsyXSphLngrdlszXSppLHA9dlswXSplK3ZbMV0qci55K3ZbMl0qYS55K3ZbM10qbyxsPjAmJihkPXRoaXMuX2dldERpc3RhbmNlVG9MaW5lKGYsbSxjLHAsbixzKSxoPWQ8aD9kOmgpLGY9YyxtPXA7cmV0dXJuIGh9fV0pLGV9KG0uZGVmYXVsdCk7ZS5kZWZhdWx0PXZ9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxNzYpLHM9byhuKSxyPWkoMTM1KSxhPW8ociksaD1pKDEzNiksZD1vKGgpLGw9aSgxNzkpLHU9byhsKSxjPWkoMTgwKSxwPW8oYyksZj1pKDIwNiksbT1vKGYpLHY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGksbyl7cmV0dXJuKDAsYS5kZWZhdWx0KSh0aGlzLGUpLCgwLHUuZGVmYXVsdCkodGhpcywoZS5fX3Byb3RvX198fCgwLHMuZGVmYXVsdCkoZSkpLmNhbGwodGhpcyx0LGksbykpfXJldHVybigwLHAuZGVmYXVsdCkoZSx0KSwoMCxkLmRlZmF1bHQpKGUsW3trZXk6Il9maW5kQm9yZGVyUG9zaXRpb25CZXppZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGksbyxuLHMscixhPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp0aGlzLl9nZXRWaWFDb29yZGluYXRlcygpLGg9MCxkPTAsbD0xLHU9dGhpcy50byxjPSExO2Zvcih0LmlkPT09dGhpcy5mcm9tLmlkJiYodT10aGlzLmZyb20sYz0hMCk7ZDw9bCYmaDwxMDspe3ZhciBwPS41KihkK2wpO2lmKGk9dGhpcy5nZXRQb2ludChwLGEpLG89TWF0aC5hdGFuMih1LnktaS55LHUueC1pLngpLG49dS5kaXN0YW5jZVRvQm9yZGVyKGUsbykscz1NYXRoLnNxcnQoTWF0aC5wb3coaS54LXUueCwyKStNYXRoLnBvdyhpLnktdS55LDIpKSxyPW4tcyxNYXRoLmFicyhyKTwuMilicmVhaztyPDA/ITE9PT1jP2Q9cDpsPXA6ITE9PT1jP2w9cDpkPXAsaCsrfXJldHVybiBpLnQ9cCxpfX0se2tleToiX2dldERpc3RhbmNlVG9CZXppZXJFZGdlIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvLG4scyxyKXt2YXIgYT0xZTksaD12b2lkIDAsZD12b2lkIDAsbD12b2lkIDAsdT12b2lkIDAsYz12b2lkIDAscD10LGY9ZTtmb3IoZD0xO2Q8MTA7ZCsrKWw9LjEqZCx1PU1hdGgucG93KDEtbCwyKSp0KzIqbCooMS1sKSpyLngrTWF0aC5wb3cobCwyKSppLGM9TWF0aC5wb3coMS1sLDIpKmUrMipsKigxLWwpKnIueStNYXRoLnBvdyhsLDIpKm8sZD4wJiYoaD10aGlzLl9nZXREaXN0YW5jZVRvTGluZShwLGYsdSxjLG4scyksYT1oPGE/aDphKSxwPXUsZj1jO3JldHVybiBhfX0se2tleToiX2JlemllckN1cnZlIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvKXt2YXIgbj12b2lkIDAhPT1pJiZ2b2lkIDAhPT1pLngscz12b2lkIDAhPT1vJiZ2b2lkIDAhPT1vLng7dC5iZWdpblBhdGgoKSx0Lm1vdmVUbyh0aGlzLmZyb21Qb2ludC54LHRoaXMuZnJvbVBvaW50LnkpLG4mJnM/dC5iZXppZXJDdXJ2ZVRvKGkueCxpLnksby54LG8ueSx0aGlzLnRvUG9pbnQueCx0aGlzLnRvUG9pbnQueSk6bj90LnF1YWRyYXRpY0N1cnZlVG8oaS54LGkueSx0aGlzLnRvUG9pbnQueCx0aGlzLnRvUG9pbnQueSk6dC5saW5lVG8odGhpcy50b1BvaW50LngsdGhpcy50b1BvaW50LnkpLHRoaXMuZW5hYmxlU2hhZG93KHQsZSksdC5zdHJva2UoKSx0aGlzLmRpc2FibGVTaGFkb3codCxlKX19LHtrZXk6ImdldFZpYU5vZGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFZpYUNvb3JkaW5hdGVzKCl9fV0pLGV9KG0uZGVmYXVsdCk7ZS5kZWZhdWx0PXZ9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxNzEpLHM9byhuKSxyPWkoMTM1KSxhPW8ociksaD1pKDEzNiksZD1vKGgpLGw9aSgxKSx1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGksbyl7KDAsYS5kZWZhdWx0KSh0aGlzLHQpLHRoaXMuYm9keT1pLHRoaXMubGFiZWxNb2R1bGU9byx0aGlzLm9wdGlvbnM9e30sdGhpcy5zZXRPcHRpb25zKGUpLHRoaXMuY29sb3JEaXJ0eT0hMCx0aGlzLmNvbG9yPXt9LHRoaXMuc2VsZWN0aW9uV2lkdGg9Mix0aGlzLmhvdmVyV2lkdGg9MS41LHRoaXMuZnJvbVBvaW50PXRoaXMuZnJvbSx0aGlzLnRvUG9pbnQ9dGhpcy50b31yZXR1cm4oMCxkLmRlZmF1bHQpKHQsW3trZXk6ImNvbm5lY3QiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5mcm9tPXRoaXMuYm9keS5ub2Rlc1t0aGlzLm9wdGlvbnMuZnJvbV0sdGhpcy50bz10aGlzLmJvZHkubm9kZXNbdGhpcy5vcHRpb25zLnRvXX19LHtrZXk6ImNsZWFudXAiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITF9fSx7a2V5OiJzZXRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9dCx0aGlzLmZyb209dGhpcy5ib2R5Lm5vZGVzW3RoaXMub3B0aW9ucy5mcm9tXSx0aGlzLnRvPXRoaXMuYm9keS5ub2Rlc1t0aGlzLm9wdGlvbnMudG9dLHRoaXMuaWQ9dGhpcy5vcHRpb25zLmlkfX0se2tleToiZHJhd0xpbmUiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLG8sbil7dC5zdHJva2VTdHlsZT10aGlzLmdldENvbG9yKHQsZSxpLG8pLHQubGluZVdpZHRoPWUud2lkdGgsITEhPT1lLmRhc2hlcz90aGlzLl9kcmF3RGFzaGVkTGluZSh0LGUsbik6dGhpcy5fZHJhd0xpbmUodCxlLG4pfX0se2tleToiX2RyYXdMaW5lIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvLG4pe2lmKHRoaXMuZnJvbSE9dGhpcy50byl0aGlzLl9saW5lKHQsZSxpLG8sbik7ZWxzZXt2YXIgcj10aGlzLl9nZXRDaXJjbGVEYXRhKHQpLGE9KDAscy5kZWZhdWx0KShyLDMpLGg9YVswXSxkPWFbMV0sbD1hWzJdO3RoaXMuX2NpcmNsZSh0LGUsaCxkLGwpfX19LHtrZXk6Il9kcmF3RGFzaGVkTGluZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuKXt0LmxpbmVDYXA9InJvdW5kIjt2YXIgcj1bNSw1XTtpZighMD09PUFycmF5LmlzQXJyYXkoZS5kYXNoZXMpJiYocj1lLmRhc2hlcyksdm9pZCAwIT09dC5zZXRMaW5lRGFzaCl7aWYodC5zYXZlKCksdC5zZXRMaW5lRGFzaChyKSwNCnQubGluZURhc2hPZmZzZXQ9MCx0aGlzLmZyb20hPXRoaXMudG8pdGhpcy5fbGluZSh0LGUsaSk7ZWxzZXt2YXIgYT10aGlzLl9nZXRDaXJjbGVEYXRhKHQpLGg9KDAscy5kZWZhdWx0KShhLDMpLGQ9aFswXSxsPWhbMV0sdT1oWzJdO3RoaXMuX2NpcmNsZSh0LGUsZCxsLHUpfXQuc2V0TGluZURhc2goWzBdKSx0LmxpbmVEYXNoT2Zmc2V0PTAsdC5yZXN0b3JlKCl9ZWxzZXtpZih0aGlzLmZyb20hPXRoaXMudG8pdC5kYXNoZWRMaW5lKHRoaXMuZnJvbS54LHRoaXMuZnJvbS55LHRoaXMudG8ueCx0aGlzLnRvLnkscik7ZWxzZXt2YXIgYz10aGlzLl9nZXRDaXJjbGVEYXRhKHQpLHA9KDAscy5kZWZhdWx0KShjLDMpLGY9cFswXSxtPXBbMV0sdj1wWzJdO3RoaXMuX2NpcmNsZSh0LGUsZixtLHYpfXRoaXMuZW5hYmxlU2hhZG93KHQsZSksdC5zdHJva2UoKSx0aGlzLmRpc2FibGVTaGFkb3codCxlKX19fSx7a2V5OiJmaW5kQm9yZGVyUG9zaXRpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5mcm9tIT10aGlzLnRvP3RoaXMuX2ZpbmRCb3JkZXJQb3NpdGlvbih0LGUsaSk6dGhpcy5fZmluZEJvcmRlclBvc2l0aW9uQ2lyY2xlKHQsZSxpKX19LHtrZXk6ImZpbmRCb3JkZXJQb3NpdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXt9LGk9e307aWYodGhpcy5mcm9tIT10aGlzLnRvKWU9dGhpcy5fZmluZEJvcmRlclBvc2l0aW9uKHRoaXMuZnJvbSx0KSxpPXRoaXMuX2ZpbmRCb3JkZXJQb3NpdGlvbih0aGlzLnRvLHQpO2Vsc2V7dmFyIG89dGhpcy5fZ2V0Q2lyY2xlRGF0YSh0KSxuPSgwLHMuZGVmYXVsdCkobywzKSxyPW5bMF0sYT1uWzFdO25bMl07ZT10aGlzLl9maW5kQm9yZGVyUG9zaXRpb25DaXJjbGUodGhpcy5mcm9tLHQse3g6cix5OmEsbG93Oi4yNSxoaWdoOi42LGRpcmVjdGlvbjotMX0pLGk9dGhpcy5fZmluZEJvcmRlclBvc2l0aW9uQ2lyY2xlKHRoaXMuZnJvbSx0LHt4OnIseTphLGxvdzouNixoaWdoOi44LGRpcmVjdGlvbjoxfSl9cmV0dXJue2Zyb206ZSx0bzppfX19LHtrZXk6Il9nZXRDaXJjbGVEYXRhIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT12b2lkIDAsaT12b2lkIDAsbz10aGlzLmZyb20sbj10aGlzLm9wdGlvbnMuc2VsZlJlZmVyZW5jZVNpemU7cmV0dXJuIHZvaWQgMCE9PXQmJnZvaWQgMD09PW8uc2hhcGUud2lkdGgmJm8uc2hhcGUucmVzaXplKHQpLG8uc2hhcGUud2lkdGg+by5zaGFwZS5oZWlnaHQ/KGU9by54Ky41Km8uc2hhcGUud2lkdGgsaT1vLnktbik6KGU9by54K24saT1vLnktLjUqby5zaGFwZS5oZWlnaHQpLFtlLGksbl19fSx7a2V5OiJfcG9pbnRPbkNpcmNsZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyl7dmFyIG49MipvKk1hdGguUEk7cmV0dXJue3g6dCtpKk1hdGguY29zKG4pLHk6ZS1pKk1hdGguc2luKG4pfX19LHtrZXk6Il9maW5kQm9yZGVyUG9zaXRpb25DaXJjbGUiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtmb3IodmFyIG89aS54LG49aS55LHM9aS5sb3cscj1pLmhpZ2gsYT1pLmRpcmVjdGlvbixoPTAsZD10aGlzLm9wdGlvbnMuc2VsZlJlZmVyZW5jZVNpemUsbD12b2lkIDAsdT12b2lkIDAsYz12b2lkIDAscD12b2lkIDAsZj12b2lkIDAsbT0uNSoocytyKTtzPD1yJiZoPDEwJiYobT0uNSoocytyKSxsPXRoaXMuX3BvaW50T25DaXJjbGUobyxuLGQsbSksdT1NYXRoLmF0YW4yKHQueS1sLnksdC54LWwueCksYz10LmRpc3RhbmNlVG9Cb3JkZXIoZSx1KSxwPU1hdGguc3FydChNYXRoLnBvdyhsLngtdC54LDIpK01hdGgucG93KGwueS10LnksMikpLGY9Yy1wLCEoTWF0aC5hYnMoZik8LjA1KSk7KWY+MD9hPjA/cz1tOnI9bTphPjA/cj1tOnM9bSxoKys7cmV0dXJuIGwudD1tLGx9fSx7a2V5OiJnZXRMaW5lV2lkdGgiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuITA9PT10P01hdGgubWF4KHRoaXMuc2VsZWN0aW9uV2lkdGgsLjMvdGhpcy5ib2R5LnZpZXcuc2NhbGUpOiEwPT09ZT9NYXRoLm1heCh0aGlzLmhvdmVyV2lkdGgsLjMvdGhpcy5ib2R5LnZpZXcuc2NhbGUpOk1hdGgubWF4KHRoaXMub3B0aW9ucy53aWR0aCwuMy90aGlzLmJvZHkudmlldy5zY2FsZSl9fSx7a2V5OiJnZXRDb2xvciIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyl7aWYoITEhPT1lLmluaGVyaXRzQ29sb3Ipe2lmKCJib3RoIj09PWUuaW5oZXJpdHNDb2xvciYmdGhpcy5mcm9tLmlkIT09dGhpcy50by5pZCl7dmFyIG49dC5jcmVhdGVMaW5lYXJHcmFkaWVudCh0aGlzLmZyb20ueCx0aGlzLmZyb20ueSx0aGlzLnRvLngsdGhpcy50by55KSxzPXZvaWQgMCxyPXZvaWQgMDtyZXR1cm4gcz10aGlzLmZyb20ub3B0aW9ucy5jb2xvci5oaWdobGlnaHQuYm9yZGVyLHI9dGhpcy50by5vcHRpb25zLmNvbG9yLmhpZ2hsaWdodC5ib3JkZXIsITE9PT10aGlzLmZyb20uc2VsZWN0ZWQmJiExPT09dGhpcy50by5zZWxlY3RlZD8ocz1sLm92ZXJyaWRlT3BhY2l0eSh0aGlzLmZyb20ub3B0aW9ucy5jb2xvci5ib3JkZXIsZS5vcGFjaXR5KSxyPWwub3ZlcnJpZGVPcGFjaXR5KHRoaXMudG8ub3B0aW9ucy5jb2xvci5ib3JkZXIsZS5vcGFjaXR5KSk6ITA9PT10aGlzLmZyb20uc2VsZWN0ZWQmJiExPT09dGhpcy50by5zZWxlY3RlZD9yPXRoaXMudG8ub3B0aW9ucy5jb2xvci5ib3JkZXI6ITE9PT10aGlzLmZyb20uc2VsZWN0ZWQmJiEwPT09dGhpcy50by5zZWxlY3RlZCYmKHM9dGhpcy5mcm9tLm9wdGlvbnMuY29sb3IuYm9yZGVyKSxuLmFkZENvbG9yU3RvcCgwLHMpLG4uYWRkQ29sb3JTdG9wKDEsciksbn1yZXR1cm4idG8iPT09ZS5pbmhlcml0c0NvbG9yP2wub3ZlcnJpZGVPcGFjaXR5KHRoaXMudG8ub3B0aW9ucy5jb2xvci5ib3JkZXIsZS5vcGFjaXR5KTpsLm92ZXJyaWRlT3BhY2l0eSh0aGlzLmZyb20ub3B0aW9ucy5jb2xvci5ib3JkZXIsZS5vcGFjaXR5KX1yZXR1cm4gbC5vdmVycmlkZU9wYWNpdHkoZS5jb2xvcixlLm9wYWNpdHkpfX0se2tleToiX2NpcmNsZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuKXt0aGlzLmVuYWJsZVNoYWRvdyh0LGUpLHQuYmVnaW5QYXRoKCksdC5hcmMoaSxvLG4sMCwyKk1hdGguUEksITEpLHQuc3Ryb2tlKCksdGhpcy5kaXNhYmxlU2hhZG93KHQsZSl9fSx7a2V5OiJnZXREaXN0YW5jZVRvRWRnZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuLHIsYSxoKXt2YXIgZD0wO2lmKHRoaXMuZnJvbSE9dGhpcy50bylkPXRoaXMuX2dldERpc3RhbmNlVG9FZGdlKHQsZSxpLG8sbixyLGEpO2Vsc2V7dmFyIGw9dGhpcy5fZ2V0Q2lyY2xlRGF0YSh2b2lkIDApLHU9KDAscy5kZWZhdWx0KShsLDMpLGM9dVswXSxwPXVbMV0sZj11WzJdLG09Yy1uLHY9cC1yO2Q9TWF0aC5hYnMoTWF0aC5zcXJ0KG0qbSt2KnYpLWYpfXJldHVybiB0aGlzLmxhYmVsTW9kdWxlLnNpemUubGVmdDxuJiZ0aGlzLmxhYmVsTW9kdWxlLnNpemUubGVmdCt0aGlzLmxhYmVsTW9kdWxlLnNpemUud2lkdGg+biYmdGhpcy5sYWJlbE1vZHVsZS5zaXplLnRvcDxyJiZ0aGlzLmxhYmVsTW9kdWxlLnNpemUudG9wK3RoaXMubGFiZWxNb2R1bGUuc2l6ZS5oZWlnaHQ+cj8wOmR9fSx7a2V5OiJfZ2V0RGlzdGFuY2VUb0xpbmUiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLG8sbixzKXt2YXIgcj1pLXQsYT1vLWUsaD1yKnIrYSphLGQ9KChuLXQpKnIrKHMtZSkqYSkvaDtkPjE/ZD0xOmQ8MCYmKGQ9MCk7dmFyIGw9dCtkKnIsdT1lK2QqYSxjPWwtbixwPXUtcztyZXR1cm4gTWF0aC5zcXJ0KGMqYytwKnApfX0se2tleToiZ2V0QXJyb3dEYXRhIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvLG4scil7dmFyIGE9dm9pZCAwLGg9dm9pZCAwLGQ9dm9pZCAwLGw9dm9pZCAwLHU9dm9pZCAwLGM9dm9pZCAwLHA9dm9pZCAwLGY9ci53aWR0aDtpZigiZnJvbSI9PT1lPyhkPXRoaXMuZnJvbSxsPXRoaXMudG8sdT0uMSxjPXIuZnJvbUFycm93U2NhbGUscD1yLmZyb21BcnJvd1R5cGUpOiJ0byI9PT1lPyhkPXRoaXMudG8sbD10aGlzLmZyb20sdT0tLjEsYz1yLnRvQXJyb3dTY2FsZSxwPXIudG9BcnJvd1R5cGUpOihkPXRoaXMudG8sbD10aGlzLmZyb20sYz1yLm1pZGRsZUFycm93U2NhbGUscD1yLm1pZGRsZUFycm93VHlwZSksZCE9bClpZigibWlkZGxlIiE9PWUpaWYoITA9PT10aGlzLm9wdGlvbnMuc21vb3RoLmVuYWJsZWQpe2g9dGhpcy5maW5kQm9yZGVyUG9zaXRpb24oZCx0LHt2aWE6aX0pO3ZhciBtPXRoaXMuZ2V0UG9pbnQoTWF0aC5tYXgoMCxNYXRoLm1pbigxLGgudCt1KSksaSk7YT1NYXRoLmF0YW4yKGgueS1tLnksaC54LW0ueCl9ZWxzZSBhPU1hdGguYXRhbjIoZC55LWwueSxkLngtbC54KSxoPXRoaXMuZmluZEJvcmRlclBvc2l0aW9uKGQsdCk7ZWxzZSBhPU1hdGguYXRhbjIoZC55LWwueSxkLngtbC54KSxoPXRoaXMuZ2V0UG9pbnQoLjUsaSk7ZWxzZXt2YXIgdj10aGlzLl9nZXRDaXJjbGVEYXRhKHQpLGc9KDAscy5kZWZhdWx0KSh2LDMpLHk9Z1swXSxiPWdbMV0sXz1nWzJdOyJmcm9tIj09PWU/KGg9dGhpcy5maW5kQm9yZGVyUG9zaXRpb24odGhpcy5mcm9tLHQse3g6eSx5OmIsbG93Oi4yNSxoaWdoOi42LGRpcmVjdGlvbjotMX0pLGE9LTIqaC50Kk1hdGguUEkrMS41Kk1hdGguUEkrLjEqTWF0aC5QSSk6InRvIj09PWU/KGg9dGhpcy5maW5kQm9yZGVyUG9zaXRpb24odGhpcy5mcm9tLHQse3g6eSx5OmIsbG93Oi42LGhpZ2g6MSxkaXJlY3Rpb246MX0pLGE9LTIqaC50Kk1hdGguUEkrMS41Kk1hdGguUEktMS4xKk1hdGguUEkpOihoPXRoaXMuX3BvaW50T25DaXJjbGUoeSxiLF8sLjE3NSksYT0zLjkyNjk5MDgxNjk4NzI0MTQpfXZhciB3PTE1KmMrMypmO3JldHVybntwb2ludDpoLGNvcmU6e3g6aC54LS45KncqTWF0aC5jb3MoYSkseTpoLnktLjkqdypNYXRoLnNpbihhKX0sYW5nbGU6YSxsZW5ndGg6dyx0eXBlOnB9fX0se2tleToiZHJhd0Fycm93SGVhZCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuKXt0LnN0cm9rZVN0eWxlPXRoaXMuZ2V0Q29sb3IodCxlLGksbyksdC5maWxsU3R5bGU9dC5zdHJva2VTdHlsZSx0LmxpbmVXaWR0aD1lLndpZHRoLG4udHlwZSYmImNpcmNsZSI9PT1uLnR5cGUudG9Mb3dlckNhc2UoKT90LmNpcmNsZUVuZHBvaW50KG4ucG9pbnQueCxuLnBvaW50Lnksbi5hbmdsZSxuLmxlbmd0aCk6dC5hcnJvd0VuZHBvaW50KG4ucG9pbnQueCxuLnBvaW50Lnksbi5hbmdsZSxuLmxlbmd0aCksdGhpcy5lbmFibGVTaGFkb3codCxlKSx0LmZpbGwoKSx0aGlzLmRpc2FibGVTaGFkb3codCxlKX19LHtrZXk6ImVuYWJsZVNoYWRvdyIsdmFsdWU6ZnVuY3Rpb24odCxlKXshMD09PWUuc2hhZG93JiYodC5zaGFkb3dDb2xvcj1lLnNoYWRvd0NvbG9yLHQuc2hhZG93Qmx1cj1lLnNoYWRvd1NpemUsdC5zaGFkb3dPZmZzZXRYPWUuc2hhZG93WCx0LnNoYWRvd09mZnNldFk9ZS5zaGFkb3dZKX19LHtrZXk6ImRpc2FibGVTaGFkb3ciLHZhbHVlOmZ1bmN0aW9uKHQsZSl7ITA9PT1lLnNoYWRvdyYmKHQuc2hhZG93Q29sb3I9InJnYmEoMCwwLDAsMCkiLHQuc2hhZG93Qmx1cj0wLHQuc2hhZG93T2Zmc2V0WD0wLHQuc2hhZG93T2Zmc2V0WT0wKX19XSksdH0oKTtlLmRlZmF1bHQ9dX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDE3MSkscz1vKG4pLHI9aSgxNzYpLGE9byhyKSxoPWkoMTM1KSxkPW8oaCksbD1pKDEzNiksdT1vKGwpLGM9aSgxNzkpLHA9byhjKSxmPWkoMTgwKSxtPW8oZiksdj1pKDIwNSksZz1vKHYpLHk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGksbyl7KDAsZC5kZWZhdWx0KSh0aGlzLGUpO3ZhciBuPSgwLHAuZGVmYXVsdCkodGhpcywoZS5fX3Byb3RvX198fCgwLGEuZGVmYXVsdCkoZSkpLmNhbGwodGhpcyx0LGksbykpO3JldHVybiBuLl9ib3VuZEZ1bmN0aW9uPWZ1bmN0aW9uKCl7bi5wb3NpdGlvbkJlemllck5vZGUoKX0sbi5ib2R5LmVtaXR0ZXIub24oIl9yZXBvc2l0aW9uQmV6aWVyTm9kZXMiLG4uX2JvdW5kRnVuY3Rpb24pLG59cmV0dXJuKDAsbS5kZWZhdWx0KShlLHQpLCgwLHUuZGVmYXVsdCkoZSxbe2tleToic2V0T3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9ITE7dGhpcy5vcHRpb25zLnBoeXNpY3MhPT10LnBoeXNpY3MmJihlPSEwKSx0aGlzLm9wdGlvbnM9dCx0aGlzLmlkPXRoaXMub3B0aW9ucy5pZCx0aGlzLmZyb209dGhpcy5ib2R5Lm5vZGVzW3RoaXMub3B0aW9ucy5mcm9tXSx0aGlzLnRvPXRoaXMuYm9keS5ub2Rlc1t0aGlzLm9wdGlvbnMudG9dLHRoaXMuc2V0dXBTdXBwb3J0Tm9kZSgpLHRoaXMuY29ubmVjdCgpLCEwPT09ZSYmKHRoaXMudmlhLnNldE9wdGlvbnMoe3BoeXNpY3M6dGhpcy5vcHRpb25zLnBoeXNpY3N9KSx0aGlzLnBvc2l0aW9uQmV6aWVyTm9kZSgpKX19LHtrZXk6ImNvbm5lY3QiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5mcm9tPXRoaXMuYm9keS5ub2Rlc1t0aGlzLm9wdGlvbnMuZnJvbV0sdGhpcy50bz10aGlzLmJvZHkubm9kZXNbdGhpcy5vcHRpb25zLnRvXSx2b2lkIDA9PT10aGlzLmZyb218fHZvaWQgMD09PXRoaXMudG98fCExPT09dGhpcy5vcHRpb25zLnBoeXNpY3M/dGhpcy52aWEuc2V0T3B0aW9ucyh7cGh5c2ljczohMX0pOnRoaXMuZnJvbS5pZD09PXRoaXMudG8uaWQ/dGhpcy52aWEuc2V0T3B0aW9ucyh7cGh5c2ljczohMX0pOnRoaXMudmlhLnNldE9wdGlvbnMoe3BoeXNpY3M6ITB9KX19LHtrZXk6ImNsZWFudXAiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYm9keS5lbWl0dGVyLm9mZigiX3JlcG9zaXRpb25CZXppZXJOb2RlcyIsdGhpcy5fYm91bmRGdW5jdGlvbiksdm9pZCAwIT09dGhpcy52aWEmJihkZWxldGUgdGhpcy5ib2R5Lm5vZGVzW3RoaXMudmlhLmlkXSx0aGlzLnZpYT12b2lkIDAsITApfX0se2tleToic2V0dXBTdXBwb3J0Tm9kZSIsdmFsdWU6ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT10aGlzLnZpYSl7dmFyIHQ9ImVkZ2VJZDoiK3RoaXMuaWQsZT10aGlzLmJvZHkuZnVuY3Rpb25zLmNyZWF0ZU5vZGUoe2lkOnQsc2hhcGU6ImNpcmNsZSIscGh5c2ljczohMCxoaWRkZW46ITB9KTt0aGlzLmJvZHkubm9kZXNbdF09ZSx0aGlzLnZpYT1lLHRoaXMudmlhLnBhcmVudEVkZ2VJZD10aGlzLmlkLHRoaXMucG9zaXRpb25CZXppZXJOb2RlKCl9fX0se2tleToicG9zaXRpb25CZXppZXJOb2RlIix2YWx1ZTpmdW5jdGlvbigpe3ZvaWQgMCE9PXRoaXMudmlhJiZ2b2lkIDAhPT10aGlzLmZyb20mJnZvaWQgMCE9PXRoaXMudG8/KHRoaXMudmlhLng9LjUqKHRoaXMuZnJvbS54K3RoaXMudG8ueCksdGhpcy52aWEueT0uNSoodGhpcy5mcm9tLnkrdGhpcy50by55KSk6dm9pZCAwIT09dGhpcy52aWEmJih0aGlzLnZpYS54PTAsdGhpcy52aWEueT0wKX19LHtrZXk6Il9saW5lIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5fYmV6aWVyQ3VydmUodCxlLGkpfX0se2tleToiZ2V0VmlhTm9kZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52aWF9fSx7a2V5OiJnZXRQb2ludCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMudmlhLGk9dCxvPXZvaWQgMCxuPXZvaWQgMDtpZih0aGlzLmZyb209PT10aGlzLnRvKXt2YXIgcj10aGlzLl9nZXRDaXJjbGVEYXRhKHRoaXMuZnJvbSksYT0oMCxzLmRlZmF1bHQpKHIsMyksaD1hWzBdLGQ9YVsxXSxsPWFbMl0sdT0yKk1hdGguUEkqKDEtaSk7bz1oK2wqTWF0aC5zaW4odSksbj1kK2wtbCooMS1NYXRoLmNvcyh1KSl9ZWxzZSBvPU1hdGgucG93KDEtaSwyKSp0aGlzLmZyb21Qb2ludC54KzIqaSooMS1pKSplLngrTWF0aC5wb3coaSwyKSp0aGlzLnRvUG9pbnQueCxuPU1hdGgucG93KDEtaSwyKSp0aGlzLmZyb21Qb2ludC55KzIqaSooMS1pKSplLnkrTWF0aC5wb3coaSwyKSp0aGlzLnRvUG9pbnQueTtyZXR1cm57eDpvLHk6bn19fSx7a2V5OiJfZmluZEJvcmRlclBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9maW5kQm9yZGVyUG9zaXRpb25CZXppZXIodCxlLHRoaXMudmlhKX19LHtrZXk6Il9nZXREaXN0YW5jZVRvRWRnZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuLHMpe3JldHVybiB0aGlzLl9nZXREaXN0YW5jZVRvQmV6aWVyRWRnZSh0LGUsaSxvLG4scyx0aGlzLnZpYSl9fV0pLGV9KGcuZGVmYXVsdCk7ZS5kZWZhdWx0PXl9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxNzYpLHM9byhuKSxyPWkoMTM1KSxhPW8ociksaD1pKDEzNiksZD1vKGgpLGw9aSgxNzkpLHU9byhsKSxjPWkoMTgwKSxwPW8oYyksZj1pKDIwNSksbT1vKGYpLHY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGksbyl7cmV0dXJuKDAsYS5kZWZhdWx0KSh0aGlzLGUpLCgwLHUuZGVmYXVsdCkodGhpcywoZS5fX3Byb3RvX198fCgwLHMuZGVmYXVsdCkoZSkpLmNhbGwodGhpcyx0LGksbykpfXJldHVybigwLHAuZGVmYXVsdCkoZSx0KSwoMCxkLmRlZmF1bHQpKGUsW3trZXk6Il9saW5lIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5fYmV6aWVyQ3VydmUodCxlLGkpfX0se2tleToiZ2V0VmlhTm9kZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2V0VmlhQ29vcmRpbmF0ZXMoKX19LHtrZXk6Il9nZXRWaWFDb29yZGluYXRlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD12b2lkIDAsZT12b2lkIDAsaT10aGlzLm9wdGlvbnMuc21vb3RoLnJvdW5kbmVzcyxvPXRoaXMub3B0aW9ucy5zbW9vdGgudHlwZSxuPU1hdGguYWJzKHRoaXMuZnJvbS54LXRoaXMudG8ueCkscz1NYXRoLmFicyh0aGlzLmZyb20ueS10aGlzLnRvLnkpO2lmKCJkaXNjcmV0ZSI9PT1vfHwiZGlhZ29uYWxDcm9zcyI9PT1vKXt2YXIgcj12b2lkIDAsYT12b2lkIDA7cj1hPW48PXM/aSpzOmkqbix0aGlzLmZyb20ueD50aGlzLnRvLngmJihyPS1yKSx0aGlzLmZyb20ueT49dGhpcy50by55JiYoYT0tYSksdD10aGlzLmZyb20ueCtyLGU9dGhpcy5mcm9tLnkrYSwiZGlzY3JldGUiPT09byYmKG48PXM/dD1uPGkqcz90aGlzLmZyb20ueDp0OmU9czxpKm4/dGhpcy5mcm9tLnk6ZSl9ZWxzZSBpZigic3RyYWlnaHRDcm9zcyI9PT1vKXt2YXIgaD0oMS1pKSpuLGQ9KDEtaSkqcztuPD1zPyhoPTAsdGhpcy5mcm9tLnk8dGhpcy50by55JiYoZD0tZCkpOih0aGlzLmZyb20ueDx0aGlzLnRvLngmJihoPS1oKSxkPTApLHQ9dGhpcy50by54K2gsZT10aGlzLnRvLnkrZH1lbHNlIGlmKCJob3Jpem9udGFsIj09PW8pe3ZhciBsPSgxLWkpKm47dGhpcy5mcm9tLng8dGhpcy50by54JiYobD0tbCksdD10aGlzLnRvLngrbCxlPXRoaXMuZnJvbS55fWVsc2UgaWYoInZlcnRpY2FsIj09PW8pe3ZhciB1PSgxLWkpKnM7dGhpcy5mcm9tLnk8dGhpcy50by55JiYodT0tdSksdD10aGlzLmZyb20ueCxlPXRoaXMudG8ueSt1fWVsc2UgaWYoImN1cnZlZENXIj09PW8pe249dGhpcy50by54LXRoaXMuZnJvbS54LHM9dGhpcy5mcm9tLnktdGhpcy50by55O3ZhciBjPU1hdGguc3FydChuKm4rcypzKSxwPU1hdGguUEksZj1NYXRoLmF0YW4yKHMsbiksbT0oZisoLjUqaSsuNSkqcCklKDIqcCk7dD10aGlzLmZyb20ueCsoLjUqaSsuNSkqYypNYXRoLnNpbihtKSxlPXRoaXMuZnJvbS55KyguNSppKy41KSpjKk1hdGguY29zKG0pfWVsc2UgaWYoImN1cnZlZENDVyI9PT1vKXtuPXRoaXMudG8ueC10aGlzLmZyb20ueCxzPXRoaXMuZnJvbS55LXRoaXMudG8ueTt2YXIgdj1NYXRoLnNxcnQobipuK3MqcyksZz1NYXRoLlBJLHk9TWF0aC5hdGFuMihzLG4pLGI9KHkrKC41Ki1pKy41KSpnKSUoMipnKTt0PXRoaXMuZnJvbS54KyguNSppKy41KSp2Kk1hdGguc2luKGIpLGU9dGhpcy5mcm9tLnkrKC41KmkrLjUpKnYqTWF0aC5jb3MoYil9ZWxzZXt2YXIgXz12b2lkIDAsdz12b2lkIDA7Xz13PW48PXM/aSpzOmkqbix0aGlzLmZyb20ueD50aGlzLnRvLngmJihfPS1fKSx0aGlzLmZyb20ueT49dGhpcy50by55JiYodz0tdyksdD10aGlzLmZyb20ueCtfLGU9dGhpcy5mcm9tLnkrdyxuPD1zP3Q9dGhpcy5mcm9tLng8PXRoaXMudG8ueD90aGlzLnRvLng8dD90aGlzLnRvLng6dDp0aGlzLnRvLng+dD90aGlzLnRvLng6dDplPXRoaXMuZnJvbS55Pj10aGlzLnRvLnk/dGhpcy50by55PmU/dGhpcy50by55OmU6dGhpcy50by55PGU/dGhpcy50by55OmV9cmV0dXJue3g6dCx5OmV9fX0se2tleToiX2ZpbmRCb3JkZXJQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e307cmV0dXJuIHRoaXMuX2ZpbmRCb3JkZXJQb3NpdGlvbkJlemllcih0LGUsaS52aWEpfX0se2tleToiX2dldERpc3RhbmNlVG9FZGdlIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvLG4scyl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOnRoaXMuX2dldFZpYUNvb3JkaW5hdGVzKCk7cmV0dXJuIHRoaXMuX2dldERpc3RhbmNlVG9CZXppZXJFZGdlKHQsZSxpLG8sbixzLHIpfX0se2tleToiZ2V0UG9pbnQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLl9nZXRWaWFDb29yZGluYXRlcygpLGk9dDtyZXR1cm57eDpNYXRoLnBvdygxLWksMikqdGhpcy5mcm9tUG9pbnQueCsyKmkqKDEtaSkqZS54K01hdGgucG93KGksMikqdGhpcy50b1BvaW50LngseTpNYXRoLnBvdygxLWksMikqdGhpcy5mcm9tUG9pbnQueSsyKmkqKDEtaSkqZS55K01hdGgucG93KGksMikqdGhpcy50b1BvaW50Lnl9fX1dKSxlfShtLmRlZmF1bHQpO2UuZGVmYXVsdD12fSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoMTc2KSxzPW8obikscj1pKDEzNSksYT1vKHIpLGg9aSgxMzYpLGQ9byhoKSxsPWkoMTc5KSx1PW8obCksYz1pKDE4MCkscD1vKGMpLGY9aSgyMDYpLG09byhmKSx2PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxpLG8pe3JldHVybigwLGEuZGVmYXVsdCkodGhpcyxlKSwoMCx1LmRlZmF1bHQpKHRoaXMsKGUuX19wcm90b19ffHwoMCxzLmRlZmF1bHQpKGUpKS5jYWxsKHRoaXMsdCxpLG8pKX1yZXR1cm4oMCxwLmRlZmF1bHQpKGUsdCksKDAsZC5kZWZhdWx0KShlLFt7a2V5OiJfbGluZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0LmJlZ2luUGF0aCgpLHQubW92ZVRvKHRoaXMuZnJvbVBvaW50LngsdGhpcy5mcm9tUG9pbnQueSksdC5saW5lVG8odGhpcy50b1BvaW50LngsdGhpcy50b1BvaW50LnkpLHRoaXMuZW5hYmxlU2hhZG93KHQsZSksdC5zdHJva2UoKSx0aGlzLmRpc2FibGVTaGFkb3codCxlKX19LHtrZXk6ImdldFZpYU5vZGUiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleToiZ2V0UG9pbnQiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybnt4OigxLXQpKnRoaXMuZnJvbVBvaW50LngrdCp0aGlzLnRvUG9pbnQueCx5OigxLXQpKnRoaXMuZnJvbVBvaW50LnkrdCp0aGlzLnRvUG9pbnQueX19fSx7a2V5OiJfZmluZEJvcmRlclBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudG8sbz10aGlzLmZyb207dC5pZD09PXRoaXMuZnJvbS5pZCYmKGk9dGhpcy5mcm9tLG89dGhpcy50byk7dmFyIG49TWF0aC5hdGFuMihpLnktby55LGkueC1vLngpLHM9aS54LW8ueCxyPWkueS1vLnksYT1NYXRoLnNxcnQocypzK3IqciksaD10LmRpc3RhbmNlVG9Cb3JkZXIoZSxuKSxkPShhLWgpL2EsbD17fTtyZXR1cm4gbC54PSgxLWQpKm8ueCtkKmkueCxsLnk9KDEtZCkqby55K2QqaS55LGx9fSx7a2V5OiJfZ2V0RGlzdGFuY2VUb0VkZ2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLG8sbixzKXtyZXR1cm4gdGhpcy5fZ2V0RGlzdGFuY2VUb0xpbmUodCxlLGksbyxuLHMpfX1dKSxlfShtLmRlZmF1bHQpO2UuZGVmYXVsdD12fSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoNTgpLHM9byhuKSxyPWkoMTcxKSxhPW8ociksaD1pKDYyKSxkPW8oaCksbD1pKDEzNSksdT1vKGwpLGM9aSgxMzYpLHA9byhjKSxmPWkoMSksbT1pKDIxMSkuZGVmYXVsdCx2PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeygwLHUuZGVmYXVsdCkodGhpcyx0KSx0aGlzLmNoaWxkcmVuUmVmZXJlbmNlPXt9LHRoaXMucGFyZW50UmVmZXJlbmNlPXt9LHRoaXMubGV2ZWxzPXt9LHRoaXMudHJlZXM9e30sdGhpcy5pc1RyZWU9ITF9cmV0dXJuKDAscC5kZWZhdWx0KSh0LFt7a2V5OiJhZGRSZWxhdGlvbiIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10aGlzLmNoaWxkcmVuUmVmZXJlbmNlW3RdJiYodGhpcy5jaGlsZHJlblJlZmVyZW5jZVt0XT1bXSksdGhpcy5jaGlsZHJlblJlZmVyZW5jZVt0XS5wdXNoKGUpLHZvaWQgMD09PXRoaXMucGFyZW50UmVmZXJlbmNlW2VdJiYodGhpcy5wYXJlbnRSZWZlcmVuY2VbZV09W10pLHRoaXMucGFyZW50UmVmZXJlbmNlW2VdLnB1c2godCl9fSx7a2V5OiJjaGVja0lmVHJlZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5wYXJlbnRSZWZlcmVuY2UpaWYodGhpcy5wYXJlbnRSZWZlcmVuY2VbdF0ubGVuZ3RoPjEpcmV0dXJuIHZvaWQodGhpcy5pc1RyZWU9ITEpO3RoaXMuaXNUcmVlPSEwfX0se2tleToiZW5zdXJlTGV2ZWwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZvaWQgMD09PXRoaXMubGV2ZWxzW3RdJiYodGhpcy5sZXZlbHNbdF09MCl9fSx7a2V5OiJnZXRNYXhMZXZlbCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXt9O3JldHVybiBmdW5jdGlvbiB0KG8pe2lmKHZvaWQgMCE9PWlbb10pcmV0dXJuIGlbb107dmFyIG49ZS5sZXZlbHNbb107aWYoZS5jaGlsZHJlblJlZmVyZW5jZVtvXSl7dmFyIHM9ZS5jaGlsZHJlblJlZmVyZW5jZVtvXTtpZihzLmxlbmd0aD4wKWZvcih2YXIgcj0wO3I8cy5sZW5ndGg7cisrKW49TWF0aC5tYXgobix0KHNbcl0pKX1yZXR1cm4gaVtvXT1uLG59KHQpfX0se2tleToibGV2ZWxEb3duc3RyZWFtIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZvaWQgMD09PXRoaXMubGV2ZWxzW2UuaWRdJiYodm9pZCAwPT09dGhpcy5sZXZlbHNbdC5pZF0mJih0aGlzLmxldmVsc1t0LmlkXT0wKSx0aGlzLmxldmVsc1tlLmlkXT10aGlzLmxldmVsc1t0LmlkXSsxKX19LHtrZXk6InNldE1pbkxldmVsVG9aZXJvIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0xZTk7Zm9yKHZhciBpIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShpKSYmdm9pZCAwIT09dGhpcy5sZXZlbHNbaV0mJihlPU1hdGgubWluKHRoaXMubGV2ZWxzW2ldLGUpKTtmb3IodmFyIG8gaW4gdCl0Lmhhc093blByb3BlcnR5KG8pJiZ2b2lkIDAhPT10aGlzLmxldmVsc1tvXSYmKHRoaXMubGV2ZWxzW29dLT1lKX19LHtrZXk6ImdldFRyZWVTaXplIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPTFlOSxvPS0xZTksbj0xZTkscz0tMWU5O2Zvcih2YXIgciBpbiB0aGlzLnRyZWVzKWlmKHRoaXMudHJlZXMuaGFzT3duUHJvcGVydHkocikmJnRoaXMudHJlZXNbcl09PT1lKXt2YXIgYT10W3JdO2k9TWF0aC5taW4oYS54LGkpLG89TWF0aC5tYXgoYS54LG8pLG49TWF0aC5taW4oYS55LG4pLHM9TWF0aC5tYXgoYS55LHMpfXJldHVybnttaW5feDppLG1heF94Om8sbWluX3k6bixtYXhfeTpzfX19XSksdH0oKSxnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXsoMCx1LmRlZmF1bHQpKHRoaXMsdCksdGhpcy5ib2R5PWUsdGhpcy5pbml0aWFsUmFuZG9tU2VlZD1NYXRoLnJvdW5kKDFlNipNYXRoLnJhbmRvbSgpKSx0aGlzLnJhbmRvbVNlZWQ9dGhpcy5pbml0aWFsUmFuZG9tU2VlZCx0aGlzLnNldFBoeXNpY3M9ITEsdGhpcy5vcHRpb25zPXt9LHRoaXMub3B0aW9uc0JhY2t1cD17cGh5c2ljczp7fX0sdGhpcy5kZWZhdWx0T3B0aW9ucz17cmFuZG9tU2VlZDp2b2lkIDAsaW1wcm92ZWRMYXlvdXQ6ITAsaGllcmFyY2hpY2FsOntlbmFibGVkOiExLGxldmVsU2VwYXJhdGlvbjoxNTAsbm9kZVNwYWNpbmc6MTAwLHRyZWVTcGFjaW5nOjIwMCxibG9ja1NoaWZ0aW5nOiEwLGVkZ2VNaW5pbWl6YXRpb246ITAscGFyZW50Q2VudHJhbGl6YXRpb246ITAsZGlyZWN0aW9uOiJVRCIsc29ydE1ldGhvZDoiaHVic2l6ZSJ9fSxmLmV4dGVuZCh0aGlzLm9wdGlvbnMsdGhpcy5kZWZhdWx0T3B0aW9ucyksdGhpcy5iaW5kRXZlbnRMaXN0ZW5lcnMoKX1yZXR1cm4oMCxwLmRlZmF1bHQpKHQsW3trZXk6ImJpbmRFdmVudExpc3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuYm9keS5lbWl0dGVyLm9uKCJfZGF0YUNoYW5nZWQiLGZ1bmN0aW9uKCl7dC5zZXR1cEhpZXJhcmNoaWNhbExheW91dCgpfSksdGhpcy5ib2R5LmVtaXR0ZXIub24oIl9kYXRhTG9hZGVkIixmdW5jdGlvbigpe3QubGF5b3V0TmV0d29yaygpfSksdGhpcy5ib2R5LmVtaXR0ZXIub24oIl9yZXNldEhpZXJhcmNoaWNhbExheW91dCIsZnVuY3Rpb24oKXt0LnNldHVwSGllcmFyY2hpY2FsTGF5b3V0KCl9KSx0aGlzLmJvZHkuZW1pdHRlci5vbigiX2FkanVzdEVkZ2VzRm9ySGllcmFyY2hpY2FsTGF5b3V0IixmdW5jdGlvbigpe2lmKCEwPT09dC5vcHRpb25zLmhpZXJhcmNoaWNhbC5lbmFibGVkKXt2YXIgZT10LmdldFN0YXRpY1R5cGUoKTt0LmJvZHkuZW1pdHRlci5lbWl0KCJfZm9yY2VEaXNhYmxlRHluYW1pY0N1cnZlcyIsZSwhMSl9fSl9fSx7a2V5OiJzZXRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKHZvaWQgMCE9PXQpe3ZhciBpPXRoaXMub3B0aW9ucy5oaWVyYXJjaGljYWwsbz1pLmVuYWJsZWQ7aWYoZi5zZWxlY3RpdmVEZWVwRXh0ZW5kKFsicmFuZG9tU2VlZCIsImltcHJvdmVkTGF5b3V0Il0sdGhpcy5vcHRpb25zLHQpLGYubWVyZ2VPcHRpb25zKHRoaXMub3B0aW9ucyx0LCJoaWVyYXJjaGljYWwiKSx2b2lkIDAhPT10LnJhbmRvbVNlZWQmJih0aGlzLmluaXRpYWxSYW5kb21TZWVkPXQucmFuZG9tU2VlZCksITA9PT1pLmVuYWJsZWQpcmV0dXJuITA9PT1vJiZ0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJyZWZyZXNoIiwhMCksIlJMIj09PWkuZGlyZWN0aW9ufHwiRFUiPT09aS5kaXJlY3Rpb24/aS5sZXZlbFNlcGFyYXRpb24+MCYmKGkubGV2ZWxTZXBhcmF0aW9uKj0tMSk6aS5sZXZlbFNlcGFyYXRpb248MCYmKGkubGV2ZWxTZXBhcmF0aW9uKj0tMSksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX3Jlc2V0SGllcmFyY2hpY2FsTGF5b3V0IiksdGhpcy5hZGFwdEFsbE9wdGlvbnNGb3JIaWVyYXJjaGljYWxMYXlvdXQoZSk7aWYoITA9PT1vKXJldHVybiB0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJyZWZyZXNoIiksZi5kZWVwRXh0ZW5kKGUsdGhpcy5vcHRpb25zQmFja3VwKX1yZXR1cm4gZX19LHtrZXk6ImFkYXB0QWxsT3B0aW9uc0ZvckhpZXJhcmNoaWNhbExheW91dCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoITA9PT10aGlzLm9wdGlvbnMuaGllcmFyY2hpY2FsLmVuYWJsZWQpe3ZhciBlPXRoaXMub3B0aW9uc0JhY2t1cC5waHlzaWNzO3ZvaWQgMD09PXQucGh5c2ljc3x8ITA9PT10LnBoeXNpY3M/KHQucGh5c2ljcz17ZW5hYmxlZDp2b2lkIDA9PT1lLmVuYWJsZWR8fGUuZW5hYmxlZCxzb2x2ZXI6ImhpZXJhcmNoaWNhbFJlcHVsc2lvbiJ9LGUuZW5hYmxlZD12b2lkIDA9PT1lLmVuYWJsZWR8fGUuZW5hYmxlZCxlLnNvbHZlcj1lLnNvbHZlcnx8ImJhcm5lc0h1dCIpOiJvYmplY3QiPT09KDAsZC5kZWZhdWx0KSh0LnBoeXNpY3MpPyhlLmVuYWJsZWQ9dm9pZCAwPT09dC5waHlzaWNzLmVuYWJsZWR8fHQucGh5c2ljcy5lbmFibGVkLGUuc29sdmVyPXQucGh5c2ljcy5zb2x2ZXJ8fCJiYXJuZXNIdXQiLHQucGh5c2ljcy5zb2x2ZXI9ImhpZXJhcmNoaWNhbFJlcHVsc2lvbiIpOiExIT09dC5waHlzaWNzJiYoZS5zb2x2ZXI9ImJhcm5lc0h1dCIsdC5waHlzaWNzPXtzb2x2ZXI6ImhpZXJhcmNoaWNhbFJlcHVsc2lvbiJ9KTt2YXIgaT10aGlzLmdldFN0YXRpY1R5cGUoKTtpZih2b2lkIDA9PT10LmVkZ2VzKXRoaXMub3B0aW9uc0JhY2t1cC5lZGdlcz17c21vb3RoOntlbmFibGVkOiEwLHR5cGU6ImR5bmFtaWMifX0sdC5lZGdlcz17c21vb3RoOiExfTtlbHNlIGlmKHZvaWQgMD09PXQuZWRnZXMuc21vb3RoKXRoaXMub3B0aW9uc0JhY2t1cC5lZGdlcz17c21vb3RoOntlbmFibGVkOiEwLHR5cGU6ImR5bmFtaWMifX0sdC5lZGdlcy5zbW9vdGg9ITE7ZWxzZSBpZigiYm9vbGVhbiI9PXR5cGVvZiB0LmVkZ2VzLnNtb290aCl0aGlzLm9wdGlvbnNCYWNrdXAuZWRnZXM9e3Ntb290aDp0LmVkZ2VzLnNtb290aH0sdC5lZGdlcy5zbW9vdGg9e2VuYWJsZWQ6dC5lZGdlcy5zbW9vdGgsdHlwZTppfTtlbHNle3ZhciBvPXQuZWRnZXMuc21vb3RoO3ZvaWQgMCE9PW8udHlwZSYmImR5bmFtaWMiIT09by50eXBlJiYoaT1vLnR5cGUpLHRoaXMub3B0aW9uc0JhY2t1cC5lZGdlcz17c21vb3RoOnZvaWQgMD09PW8uZW5hYmxlZHx8by5lbmFibGVkLHR5cGU6dm9pZCAwPT09by50eXBlPyJkeW5hbWljIjpvLnR5cGUscm91bmRuZXNzOnZvaWQgMD09PW8ucm91bmRuZXNzPy41Om8ucm91bmRuZXNzLGZvcmNlRGlyZWN0aW9uOnZvaWQgMCE9PW8uZm9yY2VEaXJlY3Rpb24mJm8uZm9yY2VEaXJlY3Rpb259LHQuZWRnZXMuc21vb3RoPXtlbmFibGVkOnZvaWQgMD09PW8uZW5hYmxlZHx8by5lbmFibGVkLHR5cGU6aSxyb3VuZG5lc3M6dm9pZCAwPT09by5yb3VuZG5lc3M/LjU6by5yb3VuZG5lc3MsZm9yY2VEaXJlY3Rpb246dm9pZCAwIT09by5mb3JjZURpcmVjdGlvbiYmby5mb3JjZURpcmVjdGlvbn19dGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX2ZvcmNlRGlzYWJsZUR5bmFtaWNDdXJ2ZXMiLGkpfXJldHVybiB0fX0se2tleToic2VlZGVkUmFuZG9tIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PTFlNCpNYXRoLnNpbih0aGlzLnJhbmRvbVNlZWQrKyk7cmV0dXJuIHQtTWF0aC5mbG9vcih0KX19LHtrZXk6InBvc2l0aW9uSW5pdGlhbGx5Iix2YWx1ZTpmdW5jdGlvbih0KXtpZighMCE9PXRoaXMub3B0aW9ucy5oaWVyYXJjaGljYWwuZW5hYmxlZCl7dGhpcy5yYW5kb21TZWVkPXRoaXMuaW5pdGlhbFJhbmRvbVNlZWQ7Zm9yKHZhciBlPXQubGVuZ3RoKzUwLGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIG89dFtpXSxuPTIqTWF0aC5QSSp0aGlzLnNlZWRlZFJhbmRvbSgpO3ZvaWQgMD09PW8ueCYmKG8ueD1lKk1hdGguY29zKG4pKSx2b2lkIDA9PT1vLnkmJihvLnk9ZSpNYXRoLnNpbihuKSl9fX19LHtrZXk6ImxheW91dE5ldHdvcmsiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoITAhPT10aGlzLm9wdGlvbnMuaGllcmFyY2hpY2FsLmVuYWJsZWQmJiEwPT09dGhpcy5vcHRpb25zLmltcHJvdmVkTGF5b3V0KXtmb3IodmFyIHQ9dGhpcy5ib2R5Lm5vZGVJbmRpY2VzLGU9MCxpPTA7aTx0Lmxlbmd0aDtpKyspeyEwPT09dGhpcy5ib2R5Lm5vZGVzW3RbaV1dLnByZWRlZmluZWRQb3NpdGlvbiYmKGUrPTEpfWlmKGU8LjUqdC5sZW5ndGgpe3ZhciBvPTAsbj17Y2x1c3RlckVkZ2VQcm9wZXJ0aWVzOntzbW9vdGg6e2VuYWJsZWQ6ITF9fX07aWYodC5sZW5ndGg+MTUwKXtmb3IodmFyIHM9dC5sZW5ndGg7dC5sZW5ndGg+MTUwJiZvPD0xMDspe28rPTE7dmFyIHI9dC5sZW5ndGg7byUzPT0wP3RoaXMuYm9keS5tb2R1bGVzLmNsdXN0ZXJpbmcuY2x1c3RlckJyaWRnZXMobik6dGhpcy5ib2R5Lm1vZHVsZXMuY2x1c3RlcmluZy5jbHVzdGVyT3V0bGllcnMobik7aWYocj09dC5sZW5ndGgmJm8lMyE9MClyZXR1cm4gdGhpcy5fZGVjbHVzdGVyQWxsKCksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX2xheW91dEZhaWxlZCIpLHZvaWQgY29uc29sZS5pbmZvKCJUaGlzIG5ldHdvcmsgY291bGQgbm90IGJlIHBvc2l0aW9uZWQgYnkgdGhpcyB2ZXJzaW9uIG9mIHRoZSBpbXByb3ZlZCBsYXlvdXQgYWxnb3JpdGhtLiBQbGVhc2UgZGlzYWJsZSBpbXByb3ZlZExheW91dCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLiIpfXRoaXMuYm9keS5tb2R1bGVzLmthbWFkYUthd2FpLnNldE9wdGlvbnMoe3NwcmluZ0xlbmd0aDpNYXRoLm1heCgxNTAsMipzKX0pfW8+MTAmJmNvbnNvbGUuaW5mbygiVGhlIGNsdXN0ZXJpbmcgZGlkbid0IHN1Y2NlZWQgd2l0aGluIHRoZSBhbW91bnQgb2YgaW50ZXJhdGlvbnMgYWxsb3dlZCwgcHJvZ3Jlc3Npbmcgd2l0aCBwYXJ0aWFsIHJlc3VsdC4iKSx0aGlzLmJvZHkubW9kdWxlcy5rYW1hZGFLYXdhaS5zb2x2ZSh0LHRoaXMuYm9keS5lZGdlSW5kaWNlcywhMCksdGhpcy5fc2hpZnRUb0NlbnRlcigpO2Zvcih2YXIgYT0wO2E8dC5sZW5ndGg7YSsrKXt2YXIgaD10aGlzLmJvZHkubm9kZXNbdFthXV07ITE9PT1oLnByZWRlZmluZWRQb3NpdGlvbiYmKGgueCs9NzAqKC41LXRoaXMuc2VlZGVkUmFuZG9tKCkpLGgueSs9NzAqKC41LXRoaXMuc2VlZGVkUmFuZG9tKCkpKX10aGlzLl9kZWNsdXN0ZXJBbGwoKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfcmVwb3NpdGlvbkJlemllck5vZGVzIil9fX19LHtrZXk6Il9zaGlmdFRvQ2VudGVyIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1tLmdldFJhbmdlQ29yZSh0aGlzLmJvZHkubm9kZXMsdGhpcy5ib2R5Lm5vZGVJbmRpY2VzKSxlPW0uZmluZENlbnRlcih0KSxpPTA7aTx0aGlzLmJvZHkubm9kZUluZGljZXMubGVuZ3RoO2krKyl7dmFyIG89dGhpcy5ib2R5Lm5vZGVzW3RoaXMuYm9keS5ub2RlSW5kaWNlc1tpXV07by54LT1lLngsby55LT1lLnl9fX0se2tleToiX2RlY2x1c3RlckFsbCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9ITA7ITA9PT10Oyl7dD0hMTtmb3IodmFyIGU9MDtlPHRoaXMuYm9keS5ub2RlSW5kaWNlcy5sZW5ndGg7ZSsrKSEwPT09dGhpcy5ib2R5Lm5vZGVzW3RoaXMuYm9keS5ub2RlSW5kaWNlc1tlXV0uaXNDbHVzdGVyJiYodD0hMCx0aGlzLmJvZHkubW9kdWxlcy5jbHVzdGVyaW5nLm9wZW5DbHVzdGVyKHRoaXMuYm9keS5ub2RlSW5kaWNlc1tlXSx7fSwhMSkpOyEwPT09dCYmdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX2RhdGFDaGFuZ2VkIil9fX0se2tleToiZ2V0U2VlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbml0aWFsUmFuZG9tU2VlZH19LHtrZXk6InNldHVwSGllcmFyY2hpY2FsTGF5b3V0Iix2YWx1ZTpmdW5jdGlvbigpe2lmKCEwPT09dGhpcy5vcHRpb25zLmhpZXJhcmNoaWNhbC5lbmFibGVkJiZ0aGlzLmJvZHkubm9kZUluZGljZXMubGVuZ3RoPjApe3ZhciB0PXZvaWQgMCxlPXZvaWQgMCxpPSExLG89ITE7dGhpcy5sYXN0Tm9kZU9uTGV2ZWw9e30sdGhpcy5oaWVyYXJjaGljYWw9bmV3IHYsdGhpcy50cmVlSW5kZXg9LTEsdGhpcy5kaXN0cmlidXRpb25PcmRlcmluZz17fSx0aGlzLmRpc3RyaWJ1dGlvbkluZGV4PXt9LHRoaXMuZGlzdHJpYnV0aW9uT3JkZXJpbmdQcmVzZW5jZT17fTtmb3IoZSBpbiB0aGlzLmJvZHkubm9kZXMpdGhpcy5ib2R5Lm5vZGVzLmhhc093blByb3BlcnR5KGUpJiYodD10aGlzLmJvZHkubm9kZXNbZV0sdm9pZCAwPT09dC5vcHRpb25zLngmJnZvaWQgMD09PXQub3B0aW9ucy55JiYhMSx2b2lkIDAhPT10Lm9wdGlvbnMubGV2ZWw/KGk9ITAsdGhpcy5oaWVyYXJjaGljYWwubGV2ZWxzW2VdPXQub3B0aW9ucy5sZXZlbCk6bz0hMCk7aWYoITA9PT1vJiYhMD09PWkpdGhyb3cgbmV3IEVycm9yKCJUbyB1c2UgdGhlIGhpZXJhcmNoaWNhbCBsYXlvdXQsIG5vZGVzIHJlcXVpcmUgZWl0aGVyIG5vIHByZWRlZmluZWQgbGV2ZWxzIG9yIGxldmVscyBoYXZlIHRvIGJlIGRlZmluZWQgZm9yIGFsbCBub2Rlcy4iKTtpZighMD09PW8pe3ZhciBuPXRoaXMub3B0aW9ucy5oaWVyYXJjaGljYWwuc29ydE1ldGhvZDsiaHVic2l6ZSI9PT1uP3RoaXMuX2RldGVybWluZUxldmVsc0J5SHVic2l6ZSgpOiJkaXJlY3RlZCI9PT1uP3RoaXMuX2RldGVybWluZUxldmVsc0RpcmVjdGVkKCk6ImN1c3RvbSI9PT1uJiZ0aGlzLl9kZXRlcm1pbmVMZXZlbHNDdXN0b21DYWxsYmFjaygpfWZvcih2YXIgcyBpbiB0aGlzLmJvZHkubm9kZXMpdGhpcy5ib2R5Lm5vZGVzLmhhc093blByb3BlcnR5KHMpJiZ0aGlzLmhpZXJhcmNoaWNhbC5lbnN1cmVMZXZlbChzKTt2YXIgcj10aGlzLl9nZXREaXN0cmlidXRpb24oKTt0aGlzLl9nZW5lcmF0ZU1hcCgpLHRoaXMuX3BsYWNlTm9kZXNCeUhpZXJhcmNoeShyKSx0aGlzLl9jb25kZW5zZUhpZXJhcmNoeSgpLHRoaXMuX3NoaWZ0VG9DZW50ZXIoKX19fSx7a2V5OiJfY29uZGVuc2VIaWVyYXJjaHkiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPSExLGk9e30sbz1mdW5jdGlvbihlLGkpe2Zvcih2YXIgbyBpbiB0LmhpZXJhcmNoaWNhbC50cmVlcylpZih0LmhpZXJhcmNoaWNhbC50cmVlcy5oYXNPd25Qcm9wZXJ0eShvKSYmdC5oaWVyYXJjaGljYWwudHJlZXNbb109PT1lKXt2YXIgbj10LmJvZHkubm9kZXNbb10scz10Ll9nZXRQb3NpdGlvbkZvckhpZXJhcmNoeShuKTt0Ll9zZXRQb3NpdGlvbkZvckhpZXJhcmNoeShuLHMraSx2b2lkIDAsITApfX0sbj1mdW5jdGlvbihlKXt2YXIgaT10LmhpZXJhcmNoaWNhbC5nZXRUcmVlU2l6ZSh0LmJvZHkubm9kZXMsZSk7cmV0dXJuIHQuX2lzVmVydGljYWwoKT97bWluOmkubWluX3gsbWF4OmkubWF4X3h9OnttaW46aS5taW5feSxtYXg6aS5tYXhfeX19LHI9ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10saT0wO2k8PXQudHJlZUluZGV4O2krKyllLnB1c2gobihpKSk7cmV0dXJuIGV9LGg9ZnVuY3Rpb24gZShpLG8pe2lmKCFvW2kuaWRdJiYob1tpLmlkXT0hMCx0LmhpZXJhcmNoaWNhbC5jaGlsZHJlblJlZmVyZW5jZVtpLmlkXSkpe3ZhciBuPXQuaGllcmFyY2hpY2FsLmNoaWxkcmVuUmVmZXJlbmNlW2kuaWRdO2lmKG4ubGVuZ3RoPjApZm9yKHZhciBzPTA7czxuLmxlbmd0aDtzKyspZSh0LmJvZHkubm9kZXNbbltzXV0sbyl9fSxkPWZ1bmN0aW9uKGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToxZTksbz0xZTksbj0xZTkscz0xZTkscj0tMWU5O2Zvcih2YXIgaCBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkoaCkpe3ZhciBkPXQuYm9keS5ub2Rlc1toXSxsPXQuaGllcmFyY2hpY2FsLmxldmVsc1tkLmlkXSx1PXQuX2dldFBvc2l0aW9uRm9ySGllcmFyY2h5KGQpLGM9dC5fZ2V0U3BhY2VBcm91bmROb2RlKGQsZSkscD0oMCxhLmRlZmF1bHQpKGMsMiksZj1wWzBdLG09cFsxXTtvPU1hdGgubWluKGYsbyksbj1NYXRoLm1pbihtLG4pLGw8PWkmJihzPU1hdGgubWluKHUscykscj1NYXRoLm1heCh1LHIpKX1yZXR1cm5bcyxyLG8sbl19LGw9ZnVuY3Rpb24oZSxpKXt2YXIgbz10LmhpZXJhcmNoaWNhbC5nZXRNYXhMZXZlbChlLmlkKSxuPXQuaGllcmFyY2hpY2FsLmdldE1heExldmVsKGkuaWQpO3JldHVybiBNYXRoLm1pbihvLG4pfSx1PWZ1bmN0aW9uKGUsaSl7dmFyIG89dC5oaWVyYXJjaGljYWwucGFyZW50UmVmZXJlbmNlW2UuaWRdLG49dC5oaWVyYXJjaGljYWwucGFyZW50UmVmZXJlbmNlW2kuaWRdO2lmKHZvaWQgMD09PW98fHZvaWQgMD09PW4pcmV0dXJuITE7Zm9yKHZhciBzPTA7czxvLmxlbmd0aDtzKyspZm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspaWYob1tzXT09bltyXSlyZXR1cm4hMDtyZXR1cm4hMX0sYz1mdW5jdGlvbihlLGksbyl7Zm9yKHZhciBuPTA7bjxpLmxlbmd0aDtuKyspe3ZhciBzPWlbbl0scj10LmRpc3RyaWJ1dGlvbk9yZGVyaW5nW3NdO2lmKHIubGVuZ3RoPjEpZm9yKHZhciBhPTA7YTxyLmxlbmd0aC0xO2ErKykhMD09PXUoclthXSxyW2ErMV0pJiZ0LmhpZXJhcmNoaWNhbC50cmVlc1tyW2FdLmlkXT09PXQuaGllcmFyY2hpY2FsLnRyZWVzW3JbYSsxXS5pZF0mJmUoclthXSxyW2ErMV0sbyl9fSxwPWZ1bmN0aW9uKGksbyl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxzPXQuX2dldFBvc2l0aW9uRm9ySGllcmFyY2h5KGkpLHI9dC5fZ2V0UG9zaXRpb25Gb3JIaWVyYXJjaHkobyksdT1NYXRoLmFicyhyLXMpLGM9dC5vcHRpb25zLmhpZXJhcmNoaWNhbC5ub2RlU3BhY2luZztpZih1PmMpe3ZhciBwPXt9LGY9e307aChpLHApLGgobyxmKTt2YXIgbT1sKGksbyksdj1kKHAsbSksZz0oMCxhLmRlZmF1bHQpKHYsNCkseT0oZ1swXSxnWzFdKSxiPShnWzJdLGdbM10sZChmLG0pKSxfPSgwLGEuZGVmYXVsdCkoYiw0KSx3PV9bMF0seD0oX1sxXSxfWzJdKTtfWzNdO2lmKE1hdGguYWJzKHktdyk+Yyl7dmFyIGs9eS13K2M7azwteCtjJiYoaz0teCtjKSxrPDAmJih0Ll9zaGlmdEJsb2NrKG8uaWQsayksZT0hMCwhMD09PW4mJnQuX2NlbnRlclBhcmVudChvKSl9fX0sZj1mdW5jdGlvbihvLG4pe2Zvcih2YXIgcz1uLmlkLHI9bi5lZGdlcyxsPXQuaGllcmFyY2hpY2FsLmxldmVsc1tuLmlkXSx1PXQub3B0aW9ucy5oaWVyYXJjaGljYWwubGV2ZWxTZXBhcmF0aW9uKnQub3B0aW9ucy5oaWVyYXJjaGljYWwubGV2ZWxTZXBhcmF0aW9uLGM9e30scD1bXSxmPTA7ZjxyLmxlbmd0aDtmKyspe3ZhciBtPXJbZl07aWYobS50b0lkIT1tLmZyb21JZCl7dmFyIHY9bS50b0lkPT1zP20uZnJvbTptLnRvO2NbcltmXS5pZF09dix0LmhpZXJhcmNoaWNhbC5sZXZlbHNbdi5pZF08bCYmcC5wdXNoKG0pfX12YXIgZz1mdW5jdGlvbihlLGkpe2Zvcih2YXIgbz0wLG49MDtuPGkubGVuZ3RoO24rKylpZih2b2lkIDAhPT1jW2lbbl0uaWRdKXt2YXIgcz10Ll9nZXRQb3NpdGlvbkZvckhpZXJhcmNoeShjW2lbbl0uaWRdKS1lO28rPXMvTWF0aC5zcXJ0KHMqcyt1KX1yZXR1cm4gb30seT1mdW5jdGlvbihlLGkpe2Zvcih2YXIgbz0wLG49MDtuPGkubGVuZ3RoO24rKylpZih2b2lkIDAhPT1jW2lbbl0uaWRdKXt2YXIgcz10Ll9nZXRQb3NpdGlvbkZvckhpZXJhcmNoeShjW2lbbl0uaWRdKS1lO28tPXUqTWF0aC5wb3cocypzK3UsLTEuNSl9cmV0dXJuIG99LGI9ZnVuY3Rpb24oZSxpKXtmb3IodmFyIG89dC5fZ2V0UG9zaXRpb25Gb3JIaWVyYXJjaHkobikscz17fSxyPTA7cjxlO3IrKyl7dmFyIGE9ZyhvLGkpLGg9eShvLGkpO2lmKG8tPU1hdGgubWF4KC00MCxNYXRoLm1pbig0MCxNYXRoLnJvdW5kKGEvaCkpKSx2b2lkIDAhPT1zW29dKWJyZWFrO3Nbb109cn1yZXR1cm4gb30sXz1iKG8scCk7IWZ1bmN0aW9uKG8pe3ZhciBzPXQuX2dldFBvc2l0aW9uRm9ySGllcmFyY2h5KG4pO2lmKHZvaWQgMD09PWlbbi5pZF0pe3ZhciByPXt9O2gobixyKSxpW24uaWRdPXJ9dmFyIGw9ZChpW24uaWRdKSx1PSgwLGEuZGVmYXVsdCkobCw0KSxjPSh1WzBdLHVbMV0sdVsyXSkscD11WzNdLGY9by1zLG09MDtmPjA/bT1NYXRoLm1pbihmLHAtdC5vcHRpb25zLmhpZXJhcmNoaWNhbC5ub2RlU3BhY2luZyk6ZjwwJiYobT0tTWF0aC5taW4oLWYsYy10Lm9wdGlvbnMuaGllcmFyY2hpY2FsLm5vZGVTcGFjaW5nKSksMCE9bSYmKHQuX3NoaWZ0QmxvY2sobi5pZCxtKSxlPSEwKX0oXyksXz1iKG8sciksZnVuY3Rpb24oaSl7dmFyIG89dC5fZ2V0UG9zaXRpb25Gb3JIaWVyYXJjaHkobikscz10Ll9nZXRTcGFjZUFyb3VuZE5vZGUobikscj0oMCxhLmRlZmF1bHQpKHMsMiksaD1yWzBdLGQ9clsxXSxsPWktbyx1PW87bD4wP3U9TWF0aC5taW4obysoZC10Lm9wdGlvbnMuaGllcmFyY2hpY2FsLm5vZGVTcGFjaW5nKSxpKTpsPDAmJih1PU1hdGgubWF4KG8tKGgtdC5vcHRpb25zLmhpZXJhcmNoaWNhbC5ub2RlU3BhY2luZyksaSkpLHUhPT1vJiYodC5fc2V0UG9zaXRpb25Gb3JIaWVyYXJjaHkobix1LHZvaWQgMCwhMCksZT0hMCl9KF8pfTshMD09PXRoaXMub3B0aW9ucy5oaWVyYXJjaGljYWwuYmxvY2tTaGlmdGluZyYmKGZ1bmN0aW9uKGkpe3ZhciBvPSgwLHMuZGVmYXVsdCkodC5kaXN0cmlidXRpb25PcmRlcmluZyk7bz1vLnJldmVyc2UoKTtmb3IodmFyIG49MDtuPGkmJihlPSExLGMocCxvLCEwKSwhMD09PWUpO24rKyk7fSg1KSxmdW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0LmJvZHkubm9kZXMpdC5ib2R5Lm5vZGVzLmhhc093blByb3BlcnR5KGUpJiZ0Ll9jZW50ZXJQYXJlbnQodC5ib2R5Lm5vZGVzW2VdKX0oKSksITA9PT10aGlzLm9wdGlvbnMuaGllcmFyY2hpY2FsLmVkZ2VNaW5pbWl6YXRpb24mJmZ1bmN0aW9uKGkpe3ZhciBvPSgwLHMuZGVmYXVsdCkodC5kaXN0cmlidXRpb25PcmRlcmluZyk7bz1vLnJldmVyc2UoKTtmb3IodmFyIG49MDtuPGk7bisrKXtlPSExO2Zvcih2YXIgcj0wO3I8by5sZW5ndGg7cisrKWZvcih2YXIgYT1vW3JdLGg9dC5kaXN0cmlidXRpb25PcmRlcmluZ1thXSxkPTA7ZDxoLmxlbmd0aDtkKyspZigxZTMsaFtkXSk7aWYoITAhPT1lKWJyZWFrfX0oMjApLCEwPT09dGhpcy5vcHRpb25zLmhpZXJhcmNoaWNhbC5wYXJlbnRDZW50cmFsaXphdGlvbiYmZnVuY3Rpb24oKXt2YXIgZT0oMCxzLmRlZmF1bHQpKHQuZGlzdHJpYnV0aW9uT3JkZXJpbmcpO2U9ZS5yZXZlcnNlKCk7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspZm9yKHZhciBvPWVbaV0sbj10LmRpc3RyaWJ1dGlvbk9yZGVyaW5nW29dLHI9MDtyPG4ubGVuZ3RoO3IrKyl0Ll9jZW50ZXJQYXJlbnQobltyXSl9KCksZnVuY3Rpb24oKXtmb3IodmFyIGU9cigpLGk9MCxuPTA7bjxlLmxlbmd0aC0xO24rKyl7aSs9ZVtuXS5tYXgtZVtuKzFdLm1pbit0Lm9wdGlvbnMuaGllcmFyY2hpY2FsLnRyZWVTcGFjaW5nLG8obisxLGkpfX0oKX19LHtrZXk6Il9nZXRTcGFjZUFyb3VuZE5vZGUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9ITA7dm9pZCAwPT09ZSYmKGk9ITEpO3ZhciBvPXRoaXMuaGllcmFyY2hpY2FsLmxldmVsc1t0LmlkXTtpZih2b2lkIDAhPT1vKXt2YXIgbj10aGlzLmRpc3RyaWJ1dGlvbkluZGV4W3QuaWRdLHM9dGhpcy5fZ2V0UG9zaXRpb25Gb3JIaWVyYXJjaHkodCkscj10aGlzLmRpc3RyaWJ1dGlvbk9yZGVyaW5nW29dLGE9MWU5LGg9MWU5O2lmKDAhPT1uKXt2YXIgZD1yW24tMV07aWYoITA9PT1pJiZ2b2lkIDA9PT1lW2QuaWRdfHwhMT09PWkpe2E9cy10aGlzLl9nZXRQb3NpdGlvbkZvckhpZXJhcmNoeShkKX19aWYobiE9ci5sZW5ndGgtMSl7dmFyIGw9cltuKzFdO2lmKCEwPT09aSYmdm9pZCAwPT09ZVtsLmlkXXx8ITE9PT1pKXt2YXIgdT10aGlzLl9nZXRQb3NpdGlvbkZvckhpZXJhcmNoeShsKTtoPU1hdGgubWluKGgsdS1zKX19cmV0dXJuW2EsaF19cmV0dXJuWzAsMF19fSx7a2V5OiJfY2VudGVyUGFyZW50Iix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLmhpZXJhcmNoaWNhbC5wYXJlbnRSZWZlcmVuY2VbdC5pZF0pZm9yKHZhciBlPXRoaXMuaGllcmFyY2hpY2FsLnBhcmVudFJlZmVyZW5jZVt0LmlkXSxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV0sbj10aGlzLmJvZHkubm9kZXNbb10scz10aGlzLmhpZXJhcmNoaWNhbC5jaGlsZHJlblJlZmVyZW5jZVtvXTtpZih2b2lkIDAhPT1zKXt2YXIgcj10aGlzLl9nZXRDZW50ZXJQb3NpdGlvbihzKSxoPXRoaXMuX2dldFBvc2l0aW9uRm9ySGllcmFyY2h5KG4pLGQ9dGhpcy5fZ2V0U3BhY2VBcm91bmROb2RlKG4pLGw9KDAsYS5kZWZhdWx0KShkLDIpLHU9bFswXSxjPWxbMV0scD1oLXI7KHA8MCYmTWF0aC5hYnMocCk8Yy10aGlzLm9wdGlvbnMuaGllcmFyY2hpY2FsLm5vZGVTcGFjaW5nfHxwPjAmJk1hdGguYWJzKHApPHUtdGhpcy5vcHRpb25zLmhpZXJhcmNoaWNhbC5ub2RlU3BhY2luZykmJnRoaXMuX3NldFBvc2l0aW9uRm9ySGllcmFyY2h5KG4scix2b2lkIDAsITApfX19fSx7a2V5OiJfcGxhY2VOb2Rlc0J5SGllcmFyY2h5Iix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLnBvc2l0aW9uZWROb2Rlcz17fTtmb3IodmFyIGUgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGUpKXt2YXIgaT0oMCxzLmRlZmF1bHQpKHRbZV0pO2k9dGhpcy5faW5kZXhBcnJheVRvTm9kZXMoaSksdGhpcy5fc29ydE5vZGVBcnJheShpKTtmb3IodmFyIG89MCxuPTA7bjxpLmxlbmd0aDtuKyspe3ZhciByPWlbbl07aWYodm9pZCAwPT09dGhpcy5wb3NpdGlvbmVkTm9kZXNbci5pZF0pe3ZhciBhPXRoaXMub3B0aW9ucy5oaWVyYXJjaGljYWwubm9kZVNwYWNpbmcsaD1hKm87bz4wJiYoaD10aGlzLl9nZXRQb3NpdGlvbkZvckhpZXJhcmNoeShpW24tMV0pK2EpLHRoaXMuX3NldFBvc2l0aW9uRm9ySGllcmFyY2h5KHIsaCxlKSx0aGlzLl92YWxpZGF0ZVBvc2l0aW9uQW5kQ29udGludWUocixlLGgpLG8rK319fX19LHtrZXk6Il9wbGFjZUJyYW5jaE5vZGVzIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuaGllcmFyY2hpY2FsLmNoaWxkcmVuUmVmZXJlbmNlW3RdO2lmKHZvaWQgMCE9PWkpe2Zvcih2YXIgbz1bXSxuPTA7bjxpLmxlbmd0aDtuKyspby5wdXNoKHRoaXMuYm9keS5ub2Rlc1tpW25dXSk7dGhpcy5fc29ydE5vZGVBcnJheShvKTtmb3IodmFyIHM9MDtzPG8ubGVuZ3RoO3MrKyl7dmFyIHI9b1tzXSxhPXRoaXMuaGllcmFyY2hpY2FsLmxldmVsc1tyLmlkXTtpZighKGE+ZSYmdm9pZCAwPT09dGhpcy5wb3NpdGlvbmVkTm9kZXNbci5pZF0pKXJldHVybjt2YXIgaD10aGlzLm9wdGlvbnMuaGllcmFyY2hpY2FsLm5vZGVTcGFjaW5nLGQ9dm9pZCAwO2Q9MD09PXM/dGhpcy5fZ2V0UG9zaXRpb25Gb3JIaWVyYXJjaHkodGhpcy5ib2R5Lm5vZGVzW3RdKTp0aGlzLl9nZXRQb3NpdGlvbkZvckhpZXJhcmNoeShvW3MtMV0pK2gsdGhpcy5fc2V0UG9zaXRpb25Gb3JIaWVyYXJjaHkocixkLGEpLHRoaXMuX3ZhbGlkYXRlUG9zaXRpb25BbmRDb250aW51ZShyLGEsZCl9dmFyIGw9dGhpcy5fZ2V0Q2VudGVyUG9zaXRpb24obyk7dGhpcy5fc2V0UG9zaXRpb25Gb3JIaWVyYXJjaHkodGhpcy5ib2R5Lm5vZGVzW3RdLGwsZSl9fX0se2tleToiX3ZhbGlkYXRlUG9zaXRpb25BbmRDb250aW51ZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe2lmKHRoaXMuaGllcmFyY2hpY2FsLmlzVHJlZSl7aWYodm9pZCAwIT09dGhpcy5sYXN0Tm9kZU9uTGV2ZWxbZV0pe3ZhciBvPXRoaXMuX2dldFBvc2l0aW9uRm9ySGllcmFyY2h5KHRoaXMuYm9keS5ub2Rlc1t0aGlzLmxhc3ROb2RlT25MZXZlbFtlXV0pO2lmKGktbzx0aGlzLm9wdGlvbnMuaGllcmFyY2hpY2FsLm5vZGVTcGFjaW5nKXt2YXIgbj1vK3RoaXMub3B0aW9ucy5oaWVyYXJjaGljYWwubm9kZVNwYWNpbmctaSxzPXRoaXMuX2ZpbmRDb21tb25QYXJlbnQodGhpcy5sYXN0Tm9kZU9uTGV2ZWxbZV0sdC5pZCk7dGhpcy5fc2hpZnRCbG9jayhzLndpdGhDaGlsZCxuKX19dGhpcy5sYXN0Tm9kZU9uTGV2ZWxbZV09dC5pZCx0aGlzLnBvc2l0aW9uZWROb2Rlc1t0LmlkXT0hMCx0aGlzLl9wbGFjZUJyYW5jaE5vZGVzKHQuaWQsZSl9fX0se2tleToiX2luZGV4QXJyYXlUb05vZGVzIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9W10saT0wO2k8dC5sZW5ndGg7aSsrKWUucHVzaCh0aGlzLmJvZHkubm9kZXNbdFtpXV0pO3JldHVybiBlfX0se2tleToiX2dldERpc3RyaWJ1dGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXZvaWQgMCxpPXZvaWQgMDtmb3IoZSBpbiB0aGlzLmJvZHkubm9kZXMpaWYodGhpcy5ib2R5Lm5vZGVzLmhhc093blByb3BlcnR5KGUpKXtpPXRoaXMuYm9keS5ub2Rlc1tlXTt2YXIgbz12b2lkIDA9PT10aGlzLmhpZXJhcmNoaWNhbC5sZXZlbHNbZV0/MDp0aGlzLmhpZXJhcmNoaWNhbC5sZXZlbHNbZV07dGhpcy5faXNWZXJ0aWNhbCgpPyhpLnk9dGhpcy5vcHRpb25zLmhpZXJhcmNoaWNhbC5sZXZlbFNlcGFyYXRpb24qbyxpLm9wdGlvbnMuZml4ZWQueT0hMCk6KGkueD10aGlzLm9wdGlvbnMuaGllcmFyY2hpY2FsLmxldmVsU2VwYXJhdGlvbipvLGkub3B0aW9ucy5maXhlZC54PSEwKSx2b2lkIDA9PT10W29dJiYodFtvXT17fSksdFtvXVtlXT1pfXJldHVybiB0fX0se2tleToiX2dldEFjdGl2ZUVkZ2VzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1bXTtmb3IodmFyIGkgaW4gdC5lZGdlcyl7dmFyIG89dC5lZGdlc1tpXTstMSE9PXRoaXMuYm9keS5lZGdlSW5kaWNlcy5pbmRleE9mKG8uaWQpJiZlLnB1c2gobyl9cmV0dXJuIGV9fSx7a2V5OiJfZ2V0SHViU2l6ZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9e30sZT10aGlzLmJvZHkubm9kZUluZGljZXM7Zm9yKHZhciBpIGluIGUpe3ZhciBvPWVbaV0sbj10aGlzLmJvZHkubm9kZXNbb107dFt0aGlzLl9nZXRBY3RpdmVFZGdlcyhuKS5sZW5ndGhdPSEwfXZhciBzPVtdO2Zvcih2YXIgciBpbiB0KXMucHVzaChOdW1iZXIocikpO3JldHVybiBzLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS10fSksc319LHtrZXk6Il9kZXRlcm1pbmVMZXZlbHNCeUh1YnNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT1mdW5jdGlvbihlLGkpe3QuaGllcmFyY2hpY2FsLmxldmVsRG93bnN0cmVhbShlLGkpfSxpPXRoaXMuX2dldEh1YlNpemVzKCksbz0wO288aS5sZW5ndGg7KytvKXt2YXIgbj1pW29dO2lmKDA9PT1uKWJyZWFrO3ZhciBzPXRoaXMuYm9keS5ub2RlSW5kaWNlcztmb3IodmFyIHIgaW4gcyl7dmFyIGE9c1tyXSxoPXRoaXMuYm9keS5ub2Rlc1thXTtuPT09dGhpcy5fZ2V0QWN0aXZlRWRnZXMoaCkubGVuZ3RoJiZ0aGlzLl9jcmF3bE5ldHdvcmsoZSxhKX19fX0se2tleToiX2RldGVybWluZUxldmVsc0N1c3RvbUNhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1mdW5jdGlvbihlLGksbyl7dmFyIG49dC5oaWVyYXJjaGljYWwubGV2ZWxzW2UuaWRdO3ZvaWQgMD09PW4mJihuPXQuaGllcmFyY2hpY2FsLmxldmVsc1tlLmlkXT0xZTUpO3ZhciBzPShtLmNsb25lT3B0aW9ucyhlLCJub2RlIiksbS5jbG9uZU9wdGlvbnMoaSwibm9kZSIpLHZvaWQgbS5jbG9uZU9wdGlvbnMobywiZWRnZSIpKTt0LmhpZXJhcmNoaWNhbC5sZXZlbHNbaS5pZF09bitzfTt0aGlzLl9jcmF3bE5ldHdvcmsoZSksdGhpcy5oaWVyYXJjaGljYWwuc2V0TWluTGV2ZWxUb1plcm8odGhpcy5ib2R5Lm5vZGVzKX19LHtrZXk6Il9kZXRlcm1pbmVMZXZlbHNEaXJlY3RlZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9ZnVuY3Rpb24oZSxpLG8pe3ZhciBuPXQuaGllcmFyY2hpY2FsLmxldmVsc1tlLmlkXTt2b2lkIDA9PT1uJiYobj10LmhpZXJhcmNoaWNhbC5sZXZlbHNbZS5pZF09MWU0KSxvLnRvSWQ9PWkuaWQ/dC5oaWVyYXJjaGljYWwubGV2ZWxzW2kuaWRdPW4rMTp0LmhpZXJhcmNoaWNhbC5sZXZlbHNbaS5pZF09bi0xfTt0aGlzLl9jcmF3bE5ldHdvcmsoZSksdGhpcy5oaWVyYXJjaGljYWwuc2V0TWluTGV2ZWxUb1plcm8odGhpcy5ib2R5Lm5vZGVzKX19LHtrZXk6Il9nZW5lcmF0ZU1hcCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9ZnVuY3Rpb24oZSxpKXt0LmhpZXJhcmNoaWNhbC5sZXZlbHNbaS5pZF0+dC5oaWVyYXJjaGljYWwubGV2ZWxzW2UuaWRdJiZ0LmhpZXJhcmNoaWNhbC5hZGRSZWxhdGlvbihlLmlkLGkuaWQpfTt0aGlzLl9jcmF3bE5ldHdvcmsoZSksdGhpcy5oaWVyYXJjaGljYWwuY2hlY2tJZlRyZWUoKX19LHtrZXk6Il9jcmF3bE5ldHdvcmsiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpmdW5jdGlvbigpe30saT1hcmd1bWVudHNbMV0sbz17fSxuPTAscz1mdW5jdGlvbiBpKG4scyl7aWYodm9pZCAwPT09b1tuLmlkXSl7dm9pZCAwPT09dC5oaWVyYXJjaGljYWwudHJlZXNbbi5pZF0mJih0LmhpZXJhcmNoaWNhbC50cmVlc1tuLmlkXT1zLHQudHJlZUluZGV4PU1hdGgubWF4KHMsdC50cmVlSW5kZXgpKSxvW24uaWRdPSEwO2Zvcih2YXIgcj12b2lkIDAsYT10Ll9nZXRBY3RpdmVFZGdlcyhuKSxoPTA7aDxhLmxlbmd0aDtoKyspe3ZhciBkPWFbaF07ITA9PT1kLmNvbm5lY3RlZCYmKHI9ZC50b0lkPT1uLmlkP2QuZnJvbTpkLnRvLG4uaWQhPXIuaWQmJihlKG4scixkKSxpKHIscykpKX19fTtpZih2b2lkIDA9PT1pKWZvcih2YXIgcj0wO3I8dGhpcy5ib2R5Lm5vZGVJbmRpY2VzLmxlbmd0aDtyKyspe3ZhciBhPXRoaXMuYm9keS5ub2Rlc1t0aGlzLmJvZHkubm9kZUluZGljZXNbcl1dO3ZvaWQgMD09PW9bYS5pZF0mJihzKGEsbiksbis9MSl9ZWxzZXt2YXIgaD10aGlzLmJvZHkubm9kZXNbaV07aWYodm9pZCAwPT09aClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJOb2RlIG5vdCBmb3VuZDoiLGkpO3MoaCl9fX0se2tleToiX3NoaWZ0QmxvY2siLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxvPXt9OyFmdW5jdGlvbiB0KG4pe2lmKCFvW25dKXtvW25dPSEwLGkuX2lzVmVydGljYWwoKT9pLmJvZHkubm9kZXNbbl0ueCs9ZTppLmJvZHkubm9kZXNbbl0ueSs9ZTt2YXIgcz1pLmhpZXJhcmNoaWNhbC5jaGlsZHJlblJlZmVyZW5jZVtuXTtpZih2b2lkIDAhPT1zKWZvcih2YXIgcj0wO3I8cy5sZW5ndGg7cisrKXQoc1tyXSl9fSh0KX19LHtrZXk6Il9maW5kQ29tbW9uUGFyZW50Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsbz17fTtyZXR1cm4gZnVuY3Rpb24gdChlLG8pe3ZhciBuPWkuaGllcmFyY2hpY2FsLnBhcmVudFJlZmVyZW5jZVtvXTtpZih2b2lkIDAhPT1uKWZvcih2YXIgcz0wO3M8bi5sZW5ndGg7cysrKXt2YXIgcj1uW3NdO2Vbcl09ITAsdChlLHIpfX0obyx0KSxmdW5jdGlvbiB0KGUsbyl7dmFyIG49aS5oaWVyYXJjaGljYWwucGFyZW50UmVmZXJlbmNlW29dO2lmKHZvaWQgMCE9PW4pZm9yKHZhciBzPTA7czxuLmxlbmd0aDtzKyspe3ZhciByPW5bc107aWYodm9pZCAwIT09ZVtyXSlyZXR1cm57Zm91bmRQYXJlbnQ6cix3aXRoQ2hpbGQ6b307dmFyIGE9dChlLHIpO2lmKG51bGwhPT1hLmZvdW5kUGFyZW50KXJldHVybiBhfXJldHVybntmb3VuZFBhcmVudDpudWxsLHdpdGhDaGlsZDpvfX0obyxlKX19LHtrZXk6Il9zZXRQb3NpdGlvbkZvckhpZXJhcmNoeSIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpeyEwIT09KGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM10pJiYodm9pZCAwPT09dGhpcy5kaXN0cmlidXRpb25PcmRlcmluZ1tpXSYmKHRoaXMuZGlzdHJpYnV0aW9uT3JkZXJpbmdbaV09W10sdGhpcy5kaXN0cmlidXRpb25PcmRlcmluZ1ByZXNlbmNlW2ldPXt9KSx2b2lkIDA9PT10aGlzLmRpc3RyaWJ1dGlvbk9yZGVyaW5nUHJlc2VuY2VbaV1bdC5pZF0mJih0aGlzLmRpc3RyaWJ1dGlvbk9yZGVyaW5nW2ldLnB1c2godCksdGhpcy5kaXN0cmlidXRpb25JbmRleFt0LmlkXT10aGlzLmRpc3RyaWJ1dGlvbk9yZGVyaW5nW2ldLmxlbmd0aC0xKSx0aGlzLmRpc3RyaWJ1dGlvbk9yZGVyaW5nUHJlc2VuY2VbaV1bdC5pZF09ITApLHRoaXMuX2lzVmVydGljYWwoKT90Lng9ZTp0Lnk9ZX19LHtrZXk6Il9pc1ZlcnRpY2FsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiJVRCI9PT10aGlzLm9wdGlvbnMuaGllcmFyY2hpY2FsLmRpcmVjdGlvbnx8IkRVIj09PXRoaXMub3B0aW9ucy5oaWVyYXJjaGljYWwuZGlyZWN0aW9ufX0se2tleToiX2dldFBvc2l0aW9uRm9ySGllcmFyY2h5Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbCgpP3QueDp0Lnl9fSx7a2V5OiJfc29ydE5vZGVBcnJheSIsdmFsdWU6ZnVuY3Rpb24odCl7dC5sZW5ndGg+MSYmKHRoaXMuX2lzVmVydGljYWwoKT90LnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC54LWUueH0pOnQuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LnktZS55fSkpfX0se2tleToiZ2V0U3RhdGljVHlwZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD0iaG9yaXpvbnRhbCI7cmV0dXJuIHRoaXMuX2lzVmVydGljYWwoKXx8KHQ9InZlcnRpY2FsIiksdH19LHtrZXk6Il9nZXRDZW50ZXJQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTFlOSxpPS0xZTksbz0wO288dC5sZW5ndGg7bysrKXt2YXIgbj12b2lkIDANCjtpZih2b2lkIDAhPT10W29dLmlkKW49dFtvXTtlbHNle3ZhciBzPXRbb107bj10aGlzLmJvZHkubm9kZXNbc119dmFyIHI9dGhpcy5fZ2V0UG9zaXRpb25Gb3JIaWVyYXJjaHkobik7ZT1NYXRoLm1pbihlLHIpLGk9TWF0aC5tYXgoaSxyKX1yZXR1cm4uNSooZStpKX19XSksdH0oKTtlLmRlZmF1bHQ9Z30sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDEzNSkscz1vKG4pLHI9aSgxMzYpLGE9byhyKSxoPWkoMSksZD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXsoMCxzLmRlZmF1bHQpKHRoaXMsdCl9cmV0dXJuKDAsYS5kZWZhdWx0KSh0LG51bGwsW3trZXk6ImdldFJhbmdlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXSxvPTFlOSxuPS0xZTkscz0xZTkscj0tMWU5O2lmKGkubGVuZ3RoPjApZm9yKHZhciBhPTA7YTxpLmxlbmd0aDthKyspZT10W2lbYV1dLHM+ZS5zaGFwZS5ib3VuZGluZ0JveC5sZWZ0JiYocz1lLnNoYXBlLmJvdW5kaW5nQm94LmxlZnQpLHI8ZS5zaGFwZS5ib3VuZGluZ0JveC5yaWdodCYmKHI9ZS5zaGFwZS5ib3VuZGluZ0JveC5yaWdodCksbz5lLnNoYXBlLmJvdW5kaW5nQm94LnRvcCYmKG89ZS5zaGFwZS5ib3VuZGluZ0JveC50b3ApLG48ZS5zaGFwZS5ib3VuZGluZ0JveC5ib3R0b20mJihuPWUuc2hhcGUuYm91bmRpbmdCb3guYm90dG9tKTtyZXR1cm4gMWU5PT09cyYmLTFlOT09PXImJjFlOT09PW8mJi0xZTk9PT1uJiYobz0wLG49MCxzPTAscj0wKSx7bWluWDpzLG1heFg6cixtaW5ZOm8sbWF4WTpufX19LHtrZXk6ImdldFJhbmdlQ29yZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10sbz0xZTksbj0tMWU5LHM9MWU5LHI9LTFlOTtpZihpLmxlbmd0aD4wKWZvcih2YXIgYT0wO2E8aS5sZW5ndGg7YSsrKWU9dFtpW2FdXSxzPmUueCYmKHM9ZS54KSxyPGUueCYmKHI9ZS54KSxvPmUueSYmKG89ZS55KSxuPGUueSYmKG49ZS55KTtyZXR1cm4gMWU5PT09cyYmLTFlOT09PXImJjFlOT09PW8mJi0xZTk9PT1uJiYobz0wLG49MCxzPTAscj0wKSx7bWluWDpzLG1heFg6cixtaW5ZOm8sbWF4WTpufX19LHtrZXk6ImZpbmRDZW50ZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybnt4Oi41Kih0Lm1heFgrdC5taW5YKSx5Oi41Kih0Lm1heFkrdC5taW5ZKX19fSx7a2V5OiJjbG9uZU9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9e307cmV0dXJuIHZvaWQgMD09PWV8fCJub2RlIj09PWU/KGguZGVlcEV4dGVuZChpLHQub3B0aW9ucywhMCksaS54PXQueCxpLnk9dC55LGkuYW1vdW50T2ZDb25uZWN0aW9ucz10LmVkZ2VzLmxlbmd0aCk6aC5kZWVwRXh0ZW5kKGksdC5vcHRpb25zLCEwKSxpfX1dKSx0fSgpO2UuZGVmYXVsdD1kfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoNTgpLHM9byhuKSxyPWkoMTM1KSxhPW8ociksaD1pKDEzNiksZD1vKGgpLGw9aSgyMTMpLmRlZmF1bHQsdT1pKDIxNCkuZGVmYXVsdCxjPWkoMjE1KS5kZWZhdWx0LHA9aSgyMTYpLmRlZmF1bHQsZj1pKDIxNykuZGVmYXVsdCxtPWkoMjE4KS5kZWZhdWx0LHY9aSgyMTkpLmRlZmF1bHQsZz1pKDIyMCkuZGVmYXVsdCx5PWkoMSksYj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7KDAsYS5kZWZhdWx0KSh0aGlzLHQpLHRoaXMuYm9keT1lLHRoaXMucGh5c2ljc0JvZHk9e3BoeXNpY3NOb2RlSW5kaWNlczpbXSxwaHlzaWNzRWRnZUluZGljZXM6W10sZm9yY2VzOnt9LHZlbG9jaXRpZXM6e319LHRoaXMucGh5c2ljc0VuYWJsZWQ9ITAsdGhpcy5zaW11bGF0aW9uSW50ZXJ2YWw9MWUzLzYwLHRoaXMucmVxdWlyZXNUaW1lb3V0PSEwLHRoaXMucHJldmlvdXNTdGF0ZXM9e30sdGhpcy5yZWZlcmVuY2VTdGF0ZT17fSx0aGlzLmZyZWV6ZUNhY2hlPXt9LHRoaXMucmVuZGVyVGltZXI9dm9pZCAwLHRoaXMuYWRhcHRpdmVUaW1lc3RlcD0hMSx0aGlzLmFkYXB0aXZlVGltZXN0ZXBFbmFibGVkPSExLHRoaXMuYWRhcHRpdmVDb3VudGVyPTAsdGhpcy5hZGFwdGl2ZUludGVydmFsPTMsdGhpcy5zdGFiaWxpemVkPSExLHRoaXMuc3RhcnRlZFN0YWJpbGl6YXRpb249ITEsdGhpcy5zdGFiaWxpemF0aW9uSXRlcmF0aW9ucz0wLHRoaXMucmVhZHk9ITEsdGhpcy5vcHRpb25zPXt9LHRoaXMuZGVmYXVsdE9wdGlvbnM9e2VuYWJsZWQ6ITAsYmFybmVzSHV0Ont0aGV0YTouNSxncmF2aXRhdGlvbmFsQ29uc3RhbnQ6LTJlMyxjZW50cmFsR3Jhdml0eTouMyxzcHJpbmdMZW5ndGg6OTUsc3ByaW5nQ29uc3RhbnQ6LjA0LGRhbXBpbmc6LjA5LGF2b2lkT3ZlcmxhcDowfSxmb3JjZUF0bGFzMkJhc2VkOnt0aGV0YTouNSxncmF2aXRhdGlvbmFsQ29uc3RhbnQ6LTUwLGNlbnRyYWxHcmF2aXR5Oi4wMSxzcHJpbmdDb25zdGFudDouMDgsc3ByaW5nTGVuZ3RoOjEwMCxkYW1waW5nOi40LGF2b2lkT3ZlcmxhcDowfSxyZXB1bHNpb246e2NlbnRyYWxHcmF2aXR5Oi4yLHNwcmluZ0xlbmd0aDoyMDAsc3ByaW5nQ29uc3RhbnQ6LjA1LG5vZGVEaXN0YW5jZToxMDAsZGFtcGluZzouMDksYXZvaWRPdmVybGFwOjB9LGhpZXJhcmNoaWNhbFJlcHVsc2lvbjp7Y2VudHJhbEdyYXZpdHk6MCxzcHJpbmdMZW5ndGg6MTAwLHNwcmluZ0NvbnN0YW50Oi4wMSxub2RlRGlzdGFuY2U6MTIwLGRhbXBpbmc6LjA5fSxtYXhWZWxvY2l0eTo1MCxtaW5WZWxvY2l0eTouNzUsc29sdmVyOiJiYXJuZXNIdXQiLHN0YWJpbGl6YXRpb246e2VuYWJsZWQ6ITAsaXRlcmF0aW9uczoxZTMsdXBkYXRlSW50ZXJ2YWw6NTAsb25seUR5bmFtaWNFZGdlczohMSxmaXQ6ITB9LHRpbWVzdGVwOi41LGFkYXB0aXZlVGltZXN0ZXA6ITB9LHkuZXh0ZW5kKHRoaXMub3B0aW9ucyx0aGlzLmRlZmF1bHRPcHRpb25zKSx0aGlzLnRpbWVzdGVwPS41LHRoaXMubGF5b3V0RmFpbGVkPSExLHRoaXMuYmluZEV2ZW50TGlzdGVuZXJzKCl9cmV0dXJuKDAsZC5kZWZhdWx0KSh0LFt7a2V5OiJiaW5kRXZlbnRMaXN0ZW5lcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmJvZHkuZW1pdHRlci5vbigiaW5pdFBoeXNpY3MiLGZ1bmN0aW9uKCl7dC5pbml0UGh5c2ljcygpfSksdGhpcy5ib2R5LmVtaXR0ZXIub24oIl9sYXlvdXRGYWlsZWQiLGZ1bmN0aW9uKCl7dC5sYXlvdXRGYWlsZWQ9ITB9KSx0aGlzLmJvZHkuZW1pdHRlci5vbigicmVzZXRQaHlzaWNzIixmdW5jdGlvbigpe3Quc3RvcFNpbXVsYXRpb24oKSx0LnJlYWR5PSExfSksdGhpcy5ib2R5LmVtaXR0ZXIub24oImRpc2FibGVQaHlzaWNzIixmdW5jdGlvbigpe3QucGh5c2ljc0VuYWJsZWQ9ITEsdC5zdG9wU2ltdWxhdGlvbigpfSksdGhpcy5ib2R5LmVtaXR0ZXIub24oInJlc3RvcmVQaHlzaWNzIixmdW5jdGlvbigpe3Quc2V0T3B0aW9ucyh0Lm9wdGlvbnMpLCEwPT09dC5yZWFkeSYmdC5zdGFydFNpbXVsYXRpb24oKX0pLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJzdGFydFNpbXVsYXRpb24iLGZ1bmN0aW9uKCl7ITA9PT10LnJlYWR5JiZ0LnN0YXJ0U2ltdWxhdGlvbigpfSksdGhpcy5ib2R5LmVtaXR0ZXIub24oInN0b3BTaW11bGF0aW9uIixmdW5jdGlvbigpe3Quc3RvcFNpbXVsYXRpb24oKX0pLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJkZXN0cm95IixmdW5jdGlvbigpe3Quc3RvcFNpbXVsYXRpb24oITEpLHQuYm9keS5lbWl0dGVyLm9mZigpfSksdGhpcy5ib2R5LmVtaXR0ZXIub24oIl9kYXRhQ2hhbmdlZCIsZnVuY3Rpb24oKXt0LnVwZGF0ZVBoeXNpY3NEYXRhKCl9KX19LHtrZXk6InNldE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXQmJighMT09PXQ/KHRoaXMub3B0aW9ucy5lbmFibGVkPSExLHRoaXMucGh5c2ljc0VuYWJsZWQ9ITEsdGhpcy5zdG9wU2ltdWxhdGlvbigpKToodGhpcy5waHlzaWNzRW5hYmxlZD0hMCx5LnNlbGVjdGl2ZU5vdERlZXBFeHRlbmQoWyJzdGFiaWxpemF0aW9uIl0sdGhpcy5vcHRpb25zLHQpLHkubWVyZ2VPcHRpb25zKHRoaXMub3B0aW9ucyx0LCJzdGFiaWxpemF0aW9uIiksdm9pZCAwPT09dC5lbmFibGVkJiYodGhpcy5vcHRpb25zLmVuYWJsZWQ9ITApLCExPT09dGhpcy5vcHRpb25zLmVuYWJsZWQmJih0aGlzLnBoeXNpY3NFbmFibGVkPSExLHRoaXMuc3RvcFNpbXVsYXRpb24oKSksdGhpcy50aW1lc3RlcD10aGlzLm9wdGlvbnMudGltZXN0ZXApKSx0aGlzLmluaXQoKX19LHtrZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7ImZvcmNlQXRsYXMyQmFzZWQiPT09dGhpcy5vcHRpb25zLnNvbHZlcj8odD10aGlzLm9wdGlvbnMuZm9yY2VBdGxhczJCYXNlZCx0aGlzLm5vZGVzU29sdmVyPW5ldyB2KHRoaXMuYm9keSx0aGlzLnBoeXNpY3NCb2R5LHQpLHRoaXMuZWRnZXNTb2x2ZXI9bmV3IHAodGhpcy5ib2R5LHRoaXMucGh5c2ljc0JvZHksdCksdGhpcy5ncmF2aXR5U29sdmVyPW5ldyBnKHRoaXMuYm9keSx0aGlzLnBoeXNpY3NCb2R5LHQpKToicmVwdWxzaW9uIj09PXRoaXMub3B0aW9ucy5zb2x2ZXI/KHQ9dGhpcy5vcHRpb25zLnJlcHVsc2lvbix0aGlzLm5vZGVzU29sdmVyPW5ldyB1KHRoaXMuYm9keSx0aGlzLnBoeXNpY3NCb2R5LHQpLHRoaXMuZWRnZXNTb2x2ZXI9bmV3IHAodGhpcy5ib2R5LHRoaXMucGh5c2ljc0JvZHksdCksdGhpcy5ncmF2aXR5U29sdmVyPW5ldyBtKHRoaXMuYm9keSx0aGlzLnBoeXNpY3NCb2R5LHQpKToiaGllcmFyY2hpY2FsUmVwdWxzaW9uIj09PXRoaXMub3B0aW9ucy5zb2x2ZXI/KHQ9dGhpcy5vcHRpb25zLmhpZXJhcmNoaWNhbFJlcHVsc2lvbix0aGlzLm5vZGVzU29sdmVyPW5ldyBjKHRoaXMuYm9keSx0aGlzLnBoeXNpY3NCb2R5LHQpLHRoaXMuZWRnZXNTb2x2ZXI9bmV3IGYodGhpcy5ib2R5LHRoaXMucGh5c2ljc0JvZHksdCksdGhpcy5ncmF2aXR5U29sdmVyPW5ldyBtKHRoaXMuYm9keSx0aGlzLnBoeXNpY3NCb2R5LHQpKToodD10aGlzLm9wdGlvbnMuYmFybmVzSHV0LHRoaXMubm9kZXNTb2x2ZXI9bmV3IGwodGhpcy5ib2R5LHRoaXMucGh5c2ljc0JvZHksdCksdGhpcy5lZGdlc1NvbHZlcj1uZXcgcCh0aGlzLmJvZHksdGhpcy5waHlzaWNzQm9keSx0KSx0aGlzLmdyYXZpdHlTb2x2ZXI9bmV3IG0odGhpcy5ib2R5LHRoaXMucGh5c2ljc0JvZHksdCkpLHRoaXMubW9kZWxPcHRpb25zPXR9fSx7a2V5OiJpbml0UGh5c2ljcyIsdmFsdWU6ZnVuY3Rpb24oKXshMD09PXRoaXMucGh5c2ljc0VuYWJsZWQmJiEwPT09dGhpcy5vcHRpb25zLmVuYWJsZWQ/ITA9PT10aGlzLm9wdGlvbnMuc3RhYmlsaXphdGlvbi5lbmFibGVkP3RoaXMuc3RhYmlsaXplKCk6KHRoaXMuc3RhYmlsaXplZD0hMSx0aGlzLnJlYWR5PSEwLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoImZpdCIse30sdGhpcy5sYXlvdXRGYWlsZWQpLHRoaXMuc3RhcnRTaW11bGF0aW9uKCkpOih0aGlzLnJlYWR5PSEwLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoImZpdCIpKX19LHtrZXk6InN0YXJ0U2ltdWxhdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXshMD09PXRoaXMucGh5c2ljc0VuYWJsZWQmJiEwPT09dGhpcy5vcHRpb25zLmVuYWJsZWQ/KHRoaXMuc3RhYmlsaXplZD0hMSx0aGlzLmFkYXB0aXZlVGltZXN0ZXA9ITEsdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX3Jlc2l6ZU5vZGVzIiksdm9pZCAwPT09dGhpcy52aWV3RnVuY3Rpb24mJih0aGlzLnZpZXdGdW5jdGlvbj10aGlzLnNpbXVsYXRpb25TdGVwLmJpbmQodGhpcyksdGhpcy5ib2R5LmVtaXR0ZXIub24oImluaXRSZWRyYXciLHRoaXMudmlld0Z1bmN0aW9uKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfc3RhcnRSZW5kZXJpbmciKSkpOnRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9yZWRyYXciKX19LHtrZXk6InN0b3BTaW11bGF0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF07dGhpcy5zdGFiaWxpemVkPSEwLCEwPT09dCYmdGhpcy5fZW1pdFN0YWJpbGl6ZWQoKSx2b2lkIDAhPT10aGlzLnZpZXdGdW5jdGlvbiYmKHRoaXMuYm9keS5lbWl0dGVyLm9mZigiaW5pdFJlZHJhdyIsdGhpcy52aWV3RnVuY3Rpb24pLHRoaXMudmlld0Z1bmN0aW9uPXZvaWQgMCwhMD09PXQmJnRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9zdG9wUmVuZGVyaW5nIikpfX0se2tleToic2ltdWxhdGlvblN0ZXAiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9RGF0ZS5ub3coKTt0aGlzLnBoeXNpY3NUaWNrKCksKERhdGUubm93KCktdDwuNCp0aGlzLnNpbXVsYXRpb25JbnRlcnZhbHx8ITA9PT10aGlzLnJ1bkRvdWJsZVNwZWVkKSYmITE9PT10aGlzLnN0YWJpbGl6ZWQmJih0aGlzLnBoeXNpY3NUaWNrKCksdGhpcy5ydW5Eb3VibGVTcGVlZD0hMCksITA9PT10aGlzLnN0YWJpbGl6ZWQmJnRoaXMuc3RvcFNpbXVsYXRpb24oKX19LHtrZXk6Il9lbWl0U3RhYmlsaXplZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuc3RhYmlsaXphdGlvbkl0ZXJhdGlvbnM7KHRoaXMuc3RhYmlsaXphdGlvbkl0ZXJhdGlvbnM+MXx8ITA9PT10aGlzLnN0YXJ0ZWRTdGFiaWxpemF0aW9uKSYmc2V0VGltZW91dChmdW5jdGlvbigpe3QuYm9keS5lbWl0dGVyLmVtaXQoInN0YWJpbGl6ZWQiLHtpdGVyYXRpb25zOmV9KSx0LnN0YXJ0ZWRTdGFiaWxpemF0aW9uPSExLHQuc3RhYmlsaXphdGlvbkl0ZXJhdGlvbnM9MH0sMCl9fSx7a2V5OiJwaHlzaWNzVGljayIsdmFsdWU6ZnVuY3Rpb24oKXtpZighMT09PXRoaXMuc3RhcnRlZFN0YWJpbGl6YXRpb24mJih0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJzdGFydFN0YWJpbGl6aW5nIiksdGhpcy5zdGFydGVkU3RhYmlsaXphdGlvbj0hMCksITE9PT10aGlzLnN0YWJpbGl6ZWQpe2lmKCEwPT09dGhpcy5hZGFwdGl2ZVRpbWVzdGVwJiYhMD09PXRoaXMuYWRhcHRpdmVUaW1lc3RlcEVuYWJsZWQpe3RoaXMuYWRhcHRpdmVDb3VudGVyJXRoaXMuYWRhcHRpdmVJbnRlcnZhbD09MD8odGhpcy50aW1lc3RlcD0yKnRoaXMudGltZXN0ZXAsdGhpcy5jYWxjdWxhdGVGb3JjZXMoKSx0aGlzLm1vdmVOb2RlcygpLHRoaXMucmV2ZXJ0KCksdGhpcy50aW1lc3RlcD0uNSp0aGlzLnRpbWVzdGVwLHRoaXMuY2FsY3VsYXRlRm9yY2VzKCksdGhpcy5tb3ZlTm9kZXMoKSx0aGlzLmNhbGN1bGF0ZUZvcmNlcygpLHRoaXMubW92ZU5vZGVzKCksITA9PT10aGlzLl9ldmFsdWF0ZVN0ZXBRdWFsaXR5KCk/dGhpcy50aW1lc3RlcD0xLjIqdGhpcy50aW1lc3RlcDp0aGlzLnRpbWVzdGVwLzEuMjx0aGlzLm9wdGlvbnMudGltZXN0ZXA/dGhpcy50aW1lc3RlcD10aGlzLm9wdGlvbnMudGltZXN0ZXA6KHRoaXMuYWRhcHRpdmVDb3VudGVyPS0xLHRoaXMudGltZXN0ZXA9TWF0aC5tYXgodGhpcy5vcHRpb25zLnRpbWVzdGVwLHRoaXMudGltZXN0ZXAvMS4yKSkpOih0aGlzLmNhbGN1bGF0ZUZvcmNlcygpLHRoaXMubW92ZU5vZGVzKCkpLHRoaXMuYWRhcHRpdmVDb3VudGVyKz0xfWVsc2UgdGhpcy50aW1lc3RlcD10aGlzLm9wdGlvbnMudGltZXN0ZXAsdGhpcy5jYWxjdWxhdGVGb3JjZXMoKSx0aGlzLm1vdmVOb2RlcygpOyEwPT09dGhpcy5zdGFiaWxpemVkJiZ0aGlzLnJldmVydCgpLHRoaXMuc3RhYmlsaXphdGlvbkl0ZXJhdGlvbnMrK319fSx7a2V5OiJ1cGRhdGVQaHlzaWNzRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnBoeXNpY3NCb2R5LmZvcmNlcz17fSx0aGlzLnBoeXNpY3NCb2R5LnBoeXNpY3NOb2RlSW5kaWNlcz1bXSx0aGlzLnBoeXNpY3NCb2R5LnBoeXNpY3NFZGdlSW5kaWNlcz1bXTt2YXIgdD10aGlzLmJvZHkubm9kZXMsZT10aGlzLmJvZHkuZWRnZXM7Zm9yKHZhciBpIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShpKSYmITA9PT10W2ldLm9wdGlvbnMucGh5c2ljcyYmdGhpcy5waHlzaWNzQm9keS5waHlzaWNzTm9kZUluZGljZXMucHVzaCh0W2ldLmlkKTtmb3IodmFyIG8gaW4gZSllLmhhc093blByb3BlcnR5KG8pJiYhMD09PWVbb10ub3B0aW9ucy5waHlzaWNzJiZ0aGlzLnBoeXNpY3NCb2R5LnBoeXNpY3NFZGdlSW5kaWNlcy5wdXNoKGVbb10uaWQpO2Zvcih2YXIgbj0wO248dGhpcy5waHlzaWNzQm9keS5waHlzaWNzTm9kZUluZGljZXMubGVuZ3RoO24rKyl7dmFyIHM9dGhpcy5waHlzaWNzQm9keS5waHlzaWNzTm9kZUluZGljZXNbbl07dGhpcy5waHlzaWNzQm9keS5mb3JjZXNbc109e3g6MCx5OjB9LHZvaWQgMD09PXRoaXMucGh5c2ljc0JvZHkudmVsb2NpdGllc1tzXSYmKHRoaXMucGh5c2ljc0JvZHkudmVsb2NpdGllc1tzXT17eDowLHk6MH0pfWZvcih2YXIgciBpbiB0aGlzLnBoeXNpY3NCb2R5LnZlbG9jaXRpZXMpdm9pZCAwPT09dFtyXSYmZGVsZXRlIHRoaXMucGh5c2ljc0JvZHkudmVsb2NpdGllc1tyXX19LHtrZXk6InJldmVydCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD0oMCxzLmRlZmF1bHQpKHRoaXMucHJldmlvdXNTdGF0ZXMpLGU9dGhpcy5ib2R5Lm5vZGVzLGk9dGhpcy5waHlzaWNzQm9keS52ZWxvY2l0aWVzO3RoaXMucmVmZXJlbmNlU3RhdGU9e307Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciBuPXRbb107dm9pZCAwIT09ZVtuXT8hMD09PWVbbl0ub3B0aW9ucy5waHlzaWNzJiYodGhpcy5yZWZlcmVuY2VTdGF0ZVtuXT17cG9zaXRpb25zOnt4OmVbbl0ueCx5OmVbbl0ueX19LGlbbl0ueD10aGlzLnByZXZpb3VzU3RhdGVzW25dLnZ4LGlbbl0ueT10aGlzLnByZXZpb3VzU3RhdGVzW25dLnZ5LGVbbl0ueD10aGlzLnByZXZpb3VzU3RhdGVzW25dLngsZVtuXS55PXRoaXMucHJldmlvdXNTdGF0ZXNbbl0ueSk6ZGVsZXRlIHRoaXMucHJldmlvdXNTdGF0ZXNbbl19fX0se2tleToiX2V2YWx1YXRlU3RlcFF1YWxpdHkiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dm9pZCAwLGU9dm9pZCAwLGk9dGhpcy5ib2R5Lm5vZGVzLG89dGhpcy5yZWZlcmVuY2VTdGF0ZTtmb3IodmFyIG4gaW4gdGhpcy5yZWZlcmVuY2VTdGF0ZSlpZih0aGlzLnJlZmVyZW5jZVN0YXRlLmhhc093blByb3BlcnR5KG4pJiZ2b2lkIDAhPT1pW25dJiYodD1pW25dLngtb1tuXS5wb3NpdGlvbnMueCxlPWlbbl0ueS1vW25dLnBvc2l0aW9ucy55LE1hdGguc3FydChNYXRoLnBvdyh0LDIpK01hdGgucG93KGUsMikpPi4zKSlyZXR1cm4hMTtyZXR1cm4hMH19LHtrZXk6Im1vdmVOb2RlcyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5waHlzaWNzQm9keS5waHlzaWNzTm9kZUluZGljZXMsZT10aGlzLm9wdGlvbnMubWF4VmVsb2NpdHk/dGhpcy5vcHRpb25zLm1heFZlbG9jaXR5OjFlOSxpPTAsbz0wLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHM9dFtuXSxyPXRoaXMuX3BlcmZvcm1TdGVwKHMsZSk7aT1NYXRoLm1heChpLHIpLG8rPXJ9dGhpcy5hZGFwdGl2ZVRpbWVzdGVwRW5hYmxlZD1vL3QubGVuZ3RoPDUsdGhpcy5zdGFiaWxpemVkPWk8dGhpcy5vcHRpb25zLm1pblZlbG9jaXR5fX0se2tleToiX3BlcmZvcm1TdGVwIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuYm9keS5ub2Rlc1t0XSxvPXRoaXMudGltZXN0ZXAsbj10aGlzLnBoeXNpY3NCb2R5LmZvcmNlcyxzPXRoaXMucGh5c2ljc0JvZHkudmVsb2NpdGllcztpZih0aGlzLnByZXZpb3VzU3RhdGVzW3RdPXt4OmkueCx5OmkueSx2eDpzW3RdLngsdnk6c1t0XS55fSwhMT09PWkub3B0aW9ucy5maXhlZC54KXt2YXIgcj10aGlzLm1vZGVsT3B0aW9ucy5kYW1waW5nKnNbdF0ueCxhPShuW3RdLngtcikvaS5vcHRpb25zLm1hc3M7c1t0XS54Kz1hKm8sc1t0XS54PU1hdGguYWJzKHNbdF0ueCk+ZT9zW3RdLng+MD9lOi1lOnNbdF0ueCxpLngrPXNbdF0ueCpvfWVsc2Ugblt0XS54PTAsc1t0XS54PTA7aWYoITE9PT1pLm9wdGlvbnMuZml4ZWQueSl7dmFyIGg9dGhpcy5tb2RlbE9wdGlvbnMuZGFtcGluZypzW3RdLnksZD0oblt0XS55LWgpL2kub3B0aW9ucy5tYXNzO3NbdF0ueSs9ZCpvLHNbdF0ueT1NYXRoLmFicyhzW3RdLnkpPmU/c1t0XS55PjA/ZTotZTpzW3RdLnksaS55Kz1zW3RdLnkqb31lbHNlIG5bdF0ueT0wLHNbdF0ueT0wO3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coc1t0XS54LDIpK01hdGgucG93KHNbdF0ueSwyKSl9fSx7a2V5OiJjYWxjdWxhdGVGb3JjZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5ncmF2aXR5U29sdmVyLnNvbHZlKCksdGhpcy5ub2Rlc1NvbHZlci5zb2x2ZSgpLHRoaXMuZWRnZXNTb2x2ZXIuc29sdmUoKX19LHtrZXk6Il9mcmVlemVOb2RlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmJvZHkubm9kZXM7Zm9yKHZhciBlIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShlKSYmdFtlXS54JiZ0W2VdLnkmJih0aGlzLmZyZWV6ZUNhY2hlW2VdPXt4OnRbZV0ub3B0aW9ucy5maXhlZC54LHk6dFtlXS5vcHRpb25zLmZpeGVkLnl9LHRbZV0ub3B0aW9ucy5maXhlZC54PSEwLHRbZV0ub3B0aW9ucy5maXhlZC55PSEwKX19LHtrZXk6Il9yZXN0b3JlRnJvemVuTm9kZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5ib2R5Lm5vZGVzO2Zvcih2YXIgZSBpbiB0KXQuaGFzT3duUHJvcGVydHkoZSkmJnZvaWQgMCE9PXRoaXMuZnJlZXplQ2FjaGVbZV0mJih0W2VdLm9wdGlvbnMuZml4ZWQueD10aGlzLmZyZWV6ZUNhY2hlW2VdLngsdFtlXS5vcHRpb25zLmZpeGVkLnk9dGhpcy5mcmVlemVDYWNoZVtlXS55KTt0aGlzLmZyZWV6ZUNhY2hlPXt9fX0se2tleToic3RhYmlsaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5vcHRpb25zLnN0YWJpbGl6YXRpb24uaXRlcmF0aW9ucztpZigibnVtYmVyIiE9dHlwZW9mIGUmJihjb25zb2xlLmxvZygiVGhlIHN0YWJpbGl6ZSBtZXRob2QgbmVlZHMgYSBudW1lcmljIGFtb3VudCBvZiBpdGVyYXRpb25zLiBTd2l0Y2hpbmcgdG8gZGVmYXVsdDogIix0aGlzLm9wdGlvbnMuc3RhYmlsaXphdGlvbi5pdGVyYXRpb25zKSxlPXRoaXMub3B0aW9ucy5zdGFiaWxpemF0aW9uLml0ZXJhdGlvbnMpLDA9PT10aGlzLnBoeXNpY3NCb2R5LnBoeXNpY3NOb2RlSW5kaWNlcy5sZW5ndGgpcmV0dXJuIHZvaWQodGhpcy5yZWFkeT0hMCk7dGhpcy5hZGFwdGl2ZVRpbWVzdGVwPXRoaXMub3B0aW9ucy5hZGFwdGl2ZVRpbWVzdGVwLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9yZXNpemVOb2RlcyIpLHRoaXMuc3RvcFNpbXVsYXRpb24oKSx0aGlzLnN0YWJpbGl6ZWQ9ITEsdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX2Jsb2NrUmVkcmF3IiksdGhpcy50YXJnZXRJdGVyYXRpb25zPWUsITA9PT10aGlzLm9wdGlvbnMuc3RhYmlsaXphdGlvbi5vbmx5RHluYW1pY0VkZ2VzJiZ0aGlzLl9mcmVlemVOb2RlcygpLHRoaXMuc3RhYmlsaXphdGlvbkl0ZXJhdGlvbnM9MCxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHQuX3N0YWJpbGl6YXRpb25CYXRjaCgpfSwwKX19LHtrZXk6Il9zdGFiaWxpemF0aW9uQmF0Y2giLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWZ1bmN0aW9uKCl7cmV0dXJuITE9PT10LnN0YWJpbGl6ZWQmJnQuc3RhYmlsaXphdGlvbkl0ZXJhdGlvbnM8dC50YXJnZXRJdGVyYXRpb25zfSxpPWZ1bmN0aW9uKCl7dC5ib2R5LmVtaXR0ZXIuZW1pdCgic3RhYmlsaXphdGlvblByb2dyZXNzIix7aXRlcmF0aW9uczp0LnN0YWJpbGl6YXRpb25JdGVyYXRpb25zLHRvdGFsOnQudGFyZ2V0SXRlcmF0aW9uc30pfTshMT09PXRoaXMuc3RhcnRlZFN0YWJpbGl6YXRpb24mJih0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJzdGFydFN0YWJpbGl6aW5nIiksdGhpcy5zdGFydGVkU3RhYmlsaXphdGlvbj0hMCxpKCkpO2Zvcih2YXIgbz0wO2UoKSYmbzx0aGlzLm9wdGlvbnMuc3RhYmlsaXphdGlvbi51cGRhdGVJbnRlcnZhbDspdGhpcy5waHlzaWNzVGljaygpLG8rKztpKCksZSgpP3NldFRpbWVvdXQodGhpcy5fc3RhYmlsaXphdGlvbkJhdGNoLmJpbmQodGhpcyksMCk6dGhpcy5fZmluYWxpemVTdGFiaWxpemF0aW9uKCl9fSx7a2V5OiJfZmluYWxpemVTdGFiaWxpemF0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9hbGxvd1JlZHJhdyIpLCEwPT09dGhpcy5vcHRpb25zLnN0YWJpbGl6YXRpb24uZml0JiZ0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJmaXQiKSwhMD09PXRoaXMub3B0aW9ucy5zdGFiaWxpemF0aW9uLm9ubHlEeW5hbWljRWRnZXMmJnRoaXMuX3Jlc3RvcmVGcm96ZW5Ob2RlcygpLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoInN0YWJpbGl6YXRpb25JdGVyYXRpb25zRG9uZSIpLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9yZXF1ZXN0UmVkcmF3IiksITA9PT10aGlzLnN0YWJpbGl6ZWQ/dGhpcy5fZW1pdFN0YWJpbGl6ZWQoKTp0aGlzLnN0YXJ0U2ltdWxhdGlvbigpLHRoaXMucmVhZHk9ITB9fSx7a2V5OiJfZHJhd0ZvcmNlcyIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0aGlzLnBoeXNpY3NCb2R5LnBoeXNpY3NOb2RlSW5kaWNlcy5sZW5ndGg7ZSsrKXt2YXIgaT10aGlzLmJvZHkubm9kZXNbdGhpcy5waHlzaWNzQm9keS5waHlzaWNzTm9kZUluZGljZXNbZV1dLG89dGhpcy5waHlzaWNzQm9keS5mb3JjZXNbdGhpcy5waHlzaWNzQm9keS5waHlzaWNzTm9kZUluZGljZXNbZV1dLG49TWF0aC5zcXJ0KE1hdGgucG93KG8ueCwyKStNYXRoLnBvdyhvLngsMikpLHM9TWF0aC5taW4oTWF0aC5tYXgoNSxuKSwxNSkscj0zKnMsYT15LkhTVlRvSGV4KCgxODAtMTgwKk1hdGgubWluKDEsTWF0aC5tYXgoMCwuMDMqbikpKS8zNjAsMSwxKTt0LmxpbmVXaWR0aD1zLHQuc3Ryb2tlU3R5bGU9YSx0LmJlZ2luUGF0aCgpLHQubW92ZVRvKGkueCxpLnkpLHQubGluZVRvKGkueCsyMCpvLngsaS55KzIwKm8ueSksdC5zdHJva2UoKTt2YXIgaD1NYXRoLmF0YW4yKG8ueSxvLngpO3QuZmlsbFN0eWxlPWEsdC5hcnJvd0VuZHBvaW50KGkueCsyMCpvLngrTWF0aC5jb3MoaCkqcixpLnkrMjAqby55K01hdGguc2luKGgpKnIsaCxyKSx0LmZpbGwoKX19fV0pLHR9KCk7ZS5kZWZhdWx0PWJ9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxMzUpLHM9byhuKSxyPWkoMTM2KSxhPW8ociksaD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpLG8peygwLHMuZGVmYXVsdCkodGhpcyx0KSx0aGlzLmJvZHk9ZSx0aGlzLnBoeXNpY3NCb2R5PWksdGhpcy5iYXJuZXNIdXRUcmVlLHRoaXMuc2V0T3B0aW9ucyhvKSx0aGlzLnJhbmRvbVNlZWQ9NX1yZXR1cm4oMCxhLmRlZmF1bHQpKHQsW3trZXk6InNldE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz10LHRoaXMudGhldGFJbnZlcnNlZD0xL3RoaXMub3B0aW9ucy50aGV0YSx0aGlzLm92ZXJsYXBBdm9pZGFuY2VGYWN0b3I9MS1NYXRoLm1heCgwLE1hdGgubWluKDEsdGhpcy5vcHRpb25zLmF2b2lkT3ZlcmxhcCkpfX0se2tleToic2VlZGVkUmFuZG9tIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PTFlNCpNYXRoLnNpbih0aGlzLnJhbmRvbVNlZWQrKyk7cmV0dXJuIHQtTWF0aC5mbG9vcih0KX19LHtrZXk6InNvbHZlIix2YWx1ZTpmdW5jdGlvbigpe2lmKDAhPT10aGlzLm9wdGlvbnMuZ3Jhdml0YXRpb25hbENvbnN0YW50JiZ0aGlzLnBoeXNpY3NCb2R5LnBoeXNpY3NOb2RlSW5kaWNlcy5sZW5ndGg+MCl7dmFyIHQ9dm9pZCAwLGU9dGhpcy5ib2R5Lm5vZGVzLGk9dGhpcy5waHlzaWNzQm9keS5waHlzaWNzTm9kZUluZGljZXMsbz1pLmxlbmd0aCxuPXRoaXMuX2Zvcm1CYXJuZXNIdXRUcmVlKGUsaSk7dGhpcy5iYXJuZXNIdXRUcmVlPW47Zm9yKHZhciBzPTA7czxvO3MrKyl0PWVbaVtzXV0sdC5vcHRpb25zLm1hc3M+MCYmKHRoaXMuX2dldEZvcmNlQ29udHJpYnV0aW9uKG4ucm9vdC5jaGlsZHJlbi5OVyx0KSx0aGlzLl9nZXRGb3JjZUNvbnRyaWJ1dGlvbihuLnJvb3QuY2hpbGRyZW4uTkUsdCksdGhpcy5fZ2V0Rm9yY2VDb250cmlidXRpb24obi5yb290LmNoaWxkcmVuLlNXLHQpLHRoaXMuX2dldEZvcmNlQ29udHJpYnV0aW9uKG4ucm9vdC5jaGlsZHJlbi5TRSx0KSl9fX0se2tleToiX2dldEZvcmNlQ29udHJpYnV0aW9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKHQuY2hpbGRyZW5Db3VudD4wKXt2YXIgaT12b2lkIDAsbz12b2lkIDAsbj12b2lkIDA7aT10LmNlbnRlck9mTWFzcy54LWUueCxvPXQuY2VudGVyT2ZNYXNzLnktZS55LG49TWF0aC5zcXJ0KGkqaStvKm8pLG4qdC5jYWxjU2l6ZT50aGlzLnRoZXRhSW52ZXJzZWQ/dGhpcy5fY2FsY3VsYXRlRm9yY2VzKG4saSxvLGUsdCk6ND09PXQuY2hpbGRyZW5Db3VudD8odGhpcy5fZ2V0Rm9yY2VDb250cmlidXRpb24odC5jaGlsZHJlbi5OVyxlKSx0aGlzLl9nZXRGb3JjZUNvbnRyaWJ1dGlvbih0LmNoaWxkcmVuLk5FLGUpLHRoaXMuX2dldEZvcmNlQ29udHJpYnV0aW9uKHQuY2hpbGRyZW4uU1csZSksdGhpcy5fZ2V0Rm9yY2VDb250cmlidXRpb24odC5jaGlsZHJlbi5TRSxlKSk6dC5jaGlsZHJlbi5kYXRhLmlkIT1lLmlkJiZ0aGlzLl9jYWxjdWxhdGVGb3JjZXMobixpLG8sZSx0KX19fSx7a2V5OiJfY2FsY3VsYXRlRm9yY2VzIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxvLG4pezA9PT10JiYodD0uMSxlPXQpLHRoaXMub3ZlcmxhcEF2b2lkYW5jZUZhY3RvcjwxJiZvLnNoYXBlLnJhZGl1cyYmKHQ9TWF0aC5tYXgoLjErdGhpcy5vdmVybGFwQXZvaWRhbmNlRmFjdG9yKm8uc2hhcGUucmFkaXVzLHQtby5zaGFwZS5yYWRpdXMpKTt2YXIgcz10aGlzLm9wdGlvbnMuZ3Jhdml0YXRpb25hbENvbnN0YW50Km4ubWFzcypvLm9wdGlvbnMubWFzcy9NYXRoLnBvdyh0LDMpLHI9ZSpzLGE9aSpzO3RoaXMucGh5c2ljc0JvZHkuZm9yY2VzW28uaWRdLngrPXIsdGhpcy5waHlzaWNzQm9keS5mb3JjZXNbby5pZF0ueSs9YX19LHtrZXk6Il9mb3JtQmFybmVzSHV0VHJlZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dm9pZCAwLG89ZS5sZW5ndGgsbj10W2VbMF1dLngscz10W2VbMF1dLnkscj10W2VbMF1dLngsYT10W2VbMF1dLnksaD0xO2g8bztoKyspe3ZhciBkPXRbZVtoXV0ueCxsPXRbZVtoXV0ueTt0W2VbaF1dLm9wdGlvbnMubWFzcz4wJiYoZDxuJiYobj1kKSxkPnImJihyPWQpLGw8cyYmKHM9bCksbD5hJiYoYT1sKSl9dmFyIHU9TWF0aC5hYnMoci1uKS1NYXRoLmFicyhhLXMpO3U+MD8ocy09LjUqdSxhKz0uNSp1KToobis9LjUqdSxyLT0uNSp1KTt2YXIgYz1NYXRoLm1heCgxZS01LE1hdGguYWJzKHItbikpLHA9LjUqYyxmPS41KihuK3IpLG09LjUqKHMrYSksdj17cm9vdDp7Y2VudGVyT2ZNYXNzOnt4OjAseTowfSxtYXNzOjAscmFuZ2U6e21pblg6Zi1wLG1heFg6ZitwLG1pblk6bS1wLG1heFk6bStwfSxzaXplOmMsY2FsY1NpemU6MS9jLGNoaWxkcmVuOntkYXRhOm51bGx9LG1heFdpZHRoOjAsbGV2ZWw6MCxjaGlsZHJlbkNvdW50OjR9fTt0aGlzLl9zcGxpdEJyYW5jaCh2LnJvb3QpO2Zvcih2YXIgZz0wO2c8bztnKyspaT10W2VbZ11dLGkub3B0aW9ucy5tYXNzPjAmJnRoaXMuX3BsYWNlSW5UcmVlKHYucm9vdCxpKTtyZXR1cm4gdn19LHtrZXk6Il91cGRhdGVCcmFuY2hNYXNzIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXQubWFzcytlLm9wdGlvbnMubWFzcyxvPTEvaTt0LmNlbnRlck9mTWFzcy54PXQuY2VudGVyT2ZNYXNzLngqdC5tYXNzK2UueCplLm9wdGlvbnMubWFzcyx0LmNlbnRlck9mTWFzcy54Kj1vLHQuY2VudGVyT2ZNYXNzLnk9dC5jZW50ZXJPZk1hc3MueSp0Lm1hc3MrZS55KmUub3B0aW9ucy5tYXNzLHQuY2VudGVyT2ZNYXNzLnkqPW8sdC5tYXNzPWk7dmFyIG49TWF0aC5tYXgoTWF0aC5tYXgoZS5oZWlnaHQsZS5yYWRpdXMpLGUud2lkdGgpO3QubWF4V2lkdGg9dC5tYXhXaWR0aDxuP246dC5tYXhXaWR0aH19LHtrZXk6Il9wbGFjZUluVHJlZSIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpezE9PWkmJnZvaWQgMCE9PWl8fHRoaXMuX3VwZGF0ZUJyYW5jaE1hc3ModCxlKSx0LmNoaWxkcmVuLk5XLnJhbmdlLm1heFg+ZS54P3QuY2hpbGRyZW4uTlcucmFuZ2UubWF4WT5lLnk/dGhpcy5fcGxhY2VJblJlZ2lvbih0LGUsIk5XIik6dGhpcy5fcGxhY2VJblJlZ2lvbih0LGUsIlNXIik6dC5jaGlsZHJlbi5OVy5yYW5nZS5tYXhZPmUueT90aGlzLl9wbGFjZUluUmVnaW9uKHQsZSwiTkUiKTp0aGlzLl9wbGFjZUluUmVnaW9uKHQsZSwiU0UiKX19LHtrZXk6Il9wbGFjZUluUmVnaW9uIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7c3dpdGNoKHQuY2hpbGRyZW5baV0uY2hpbGRyZW5Db3VudCl7Y2FzZSAwOnQuY2hpbGRyZW5baV0uY2hpbGRyZW4uZGF0YT1lLHQuY2hpbGRyZW5baV0uY2hpbGRyZW5Db3VudD0xLHRoaXMuX3VwZGF0ZUJyYW5jaE1hc3ModC5jaGlsZHJlbltpXSxlKTticmVhaztjYXNlIDE6dC5jaGlsZHJlbltpXS5jaGlsZHJlbi5kYXRhLng9PT1lLngmJnQuY2hpbGRyZW5baV0uY2hpbGRyZW4uZGF0YS55PT09ZS55PyhlLngrPXRoaXMuc2VlZGVkUmFuZG9tKCksZS55Kz10aGlzLnNlZWRlZFJhbmRvbSgpKToodGhpcy5fc3BsaXRCcmFuY2godC5jaGlsZHJlbltpXSksdGhpcy5fcGxhY2VJblRyZWUodC5jaGlsZHJlbltpXSxlKSk7YnJlYWs7Y2FzZSA0OnRoaXMuX3BsYWNlSW5UcmVlKHQuY2hpbGRyZW5baV0sZSl9fX0se2tleToiX3NwbGl0QnJhbmNoIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1udWxsOzE9PT10LmNoaWxkcmVuQ291bnQmJihlPXQuY2hpbGRyZW4uZGF0YSx0Lm1hc3M9MCx0LmNlbnRlck9mTWFzcy54PTAsdC5jZW50ZXJPZk1hc3MueT0wKSx0LmNoaWxkcmVuQ291bnQ9NCx0LmNoaWxkcmVuLmRhdGE9bnVsbCx0aGlzLl9pbnNlcnRSZWdpb24odCwiTlciKSx0aGlzLl9pbnNlcnRSZWdpb24odCwiTkUiKSx0aGlzLl9pbnNlcnRSZWdpb24odCwiU1ciKSx0aGlzLl9pbnNlcnRSZWdpb24odCwiU0UiKSxudWxsIT1lJiZ0aGlzLl9wbGFjZUluVHJlZSh0LGUpfX0se2tleToiX2luc2VydFJlZ2lvbiIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT12b2lkIDAsbz12b2lkIDAsbj12b2lkIDAscz12b2lkIDAscj0uNSp0LnNpemU7c3dpdGNoKGUpe2Nhc2UiTlciOmk9dC5yYW5nZS5taW5YLG89dC5yYW5nZS5taW5YK3Isbj10LnJhbmdlLm1pblkscz10LnJhbmdlLm1pblkrcjticmVhaztjYXNlIk5FIjppPXQucmFuZ2UubWluWCtyLG89dC5yYW5nZS5tYXhYLG49dC5yYW5nZS5taW5ZLHM9dC5yYW5nZS5taW5ZK3I7YnJlYWs7Y2FzZSJTVyI6aT10LnJhbmdlLm1pblgsbz10LnJhbmdlLm1pblgrcixuPXQucmFuZ2UubWluWStyLHM9dC5yYW5nZS5tYXhZO2JyZWFrO2Nhc2UiU0UiOmk9dC5yYW5nZS5taW5YK3Isbz10LnJhbmdlLm1heFgsbj10LnJhbmdlLm1pblkrcixzPXQucmFuZ2UubWF4WX10LmNoaWxkcmVuW2VdPXtjZW50ZXJPZk1hc3M6e3g6MCx5OjB9LG1hc3M6MCxyYW5nZTp7bWluWDppLG1heFg6byxtaW5ZOm4sbWF4WTpzfSxzaXplOi41KnQuc2l6ZSxjYWxjU2l6ZToyKnQuY2FsY1NpemUsY2hpbGRyZW46e2RhdGE6bnVsbH0sbWF4V2lkdGg6MCxsZXZlbDp0LmxldmVsKzEsY2hpbGRyZW5Db3VudDowfX19LHtrZXk6Il9kZWJ1ZyIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2b2lkIDAhPT10aGlzLmJhcm5lc0h1dFRyZWUmJih0LmxpbmVXaWR0aD0xLHRoaXMuX2RyYXdCcmFuY2godGhpcy5iYXJuZXNIdXRUcmVlLnJvb3QsdCxlKSl9fSx7a2V5OiJfZHJhd0JyYW5jaCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZvaWQgMD09PWkmJihpPSIjRkYwMDAwIiksND09PXQuY2hpbGRyZW5Db3VudCYmKHRoaXMuX2RyYXdCcmFuY2godC5jaGlsZHJlbi5OVyxlKSx0aGlzLl9kcmF3QnJhbmNoKHQuY2hpbGRyZW4uTkUsZSksdGhpcy5fZHJhd0JyYW5jaCh0LmNoaWxkcmVuLlNFLGUpLHRoaXMuX2RyYXdCcmFuY2godC5jaGlsZHJlbi5TVyxlKSksZS5zdHJva2VTdHlsZT1pLGUuYmVnaW5QYXRoKCksZS5tb3ZlVG8odC5yYW5nZS5taW5YLHQucmFuZ2UubWluWSksZS5saW5lVG8odC5yYW5nZS5tYXhYLHQucmFuZ2UubWluWSksZS5zdHJva2UoKSxlLmJlZ2luUGF0aCgpLGUubW92ZVRvKHQucmFuZ2UubWF4WCx0LnJhbmdlLm1pblkpLGUubGluZVRvKHQucmFuZ2UubWF4WCx0LnJhbmdlLm1heFkpLGUuc3Ryb2tlKCksZS5iZWdpblBhdGgoKSxlLm1vdmVUbyh0LnJhbmdlLm1heFgsdC5yYW5nZS5tYXhZKSxlLmxpbmVUbyh0LnJhbmdlLm1pblgsdC5yYW5nZS5tYXhZKSxlLnN0cm9rZSgpLGUuYmVnaW5QYXRoKCksZS5tb3ZlVG8odC5yYW5nZS5taW5YLHQucmFuZ2UubWF4WSksZS5saW5lVG8odC5yYW5nZS5taW5YLHQucmFuZ2UubWluWSksZS5zdHJva2UoKX19XSksdH0oKTtlLmRlZmF1bHQ9aH0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDEzNSkscz1vKG4pLHI9aSgxMzYpLGE9byhyKSxoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGksbyl7KDAscy5kZWZhdWx0KSh0aGlzLHQpLHRoaXMuYm9keT1lLHRoaXMucGh5c2ljc0JvZHk9aSx0aGlzLnNldE9wdGlvbnMobyl9cmV0dXJuKDAsYS5kZWZhdWx0KSh0LFt7a2V5OiJzZXRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9dH19LHtrZXk6InNvbHZlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdCxlLGksbyxuLHMscixhLGg9dGhpcy5ib2R5Lm5vZGVzLGQ9dGhpcy5waHlzaWNzQm9keS5waHlzaWNzTm9kZUluZGljZXMsbD10aGlzLnBoeXNpY3NCb2R5LmZvcmNlcyx1PXRoaXMub3B0aW9ucy5ub2RlRGlzdGFuY2UsYz0tMi8zL3UscD0wO3A8ZC5sZW5ndGgtMTtwKyspe3I9aFtkW3BdXTtmb3IodmFyIGY9cCsxO2Y8ZC5sZW5ndGg7ZisrKWE9aFtkW2ZdXSx0PWEueC1yLngsZT1hLnktci55LGk9TWF0aC5zcXJ0KHQqdCtlKmUpLDA9PT1pJiYoaT0uMSpNYXRoLnJhbmRvbSgpLHQ9aSksaTwyKnUmJihzPWk8LjUqdT8xOmMqaSs0LzMscy89aSxvPXQqcyxuPWUqcyxsW3IuaWRdLngtPW8sbFtyLmlkXS55LT1uLGxbYS5pZF0ueCs9byxsW2EuaWRdLnkrPW4pfX19XSksdH0oKTtlLmRlZmF1bHQ9aH0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDEzNSkscz1vKG4pLHI9aSgxMzYpLGE9byhyKSxoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGksbyl7KDAscy5kZWZhdWx0KSh0aGlzLHQpLHRoaXMuYm9keT1lLHRoaXMucGh5c2ljc0JvZHk9aSx0aGlzLnNldE9wdGlvbnMobyl9cmV0dXJuKDAsYS5kZWZhdWx0KSh0LFt7a2V5OiJzZXRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9dH19LHtrZXk6InNvbHZlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGUsaSxvLG4scyxyLGEsaCxkLGw9dGhpcy5ib2R5Lm5vZGVzLHU9dGhpcy5waHlzaWNzQm9keS5waHlzaWNzTm9kZUluZGljZXMsYz10aGlzLnBoeXNpY3NCb2R5LmZvcmNlcyxwPXRoaXMub3B0aW9ucy5ub2RlRGlzdGFuY2U7Zm9yKGg9MDtoPHUubGVuZ3RoLTE7aCsrKWZvcihyPWxbdVtoXV0sZD1oKzE7ZDx1Lmxlbmd0aDtkKyspaWYoYT1sW3VbZF1dLHIubGV2ZWw9PT1hLmxldmVsKXt0PWEueC1yLngsZT1hLnktci55LGk9TWF0aC5zcXJ0KHQqdCtlKmUpO3M9aTxwPy1NYXRoLnBvdyguMDUqaSwyKStNYXRoLnBvdyguMDUqcCwyKTowLDA9PT1pP2k9LjAxOnMvPWksbz10KnMsbj1lKnMsY1tyLmlkXS54LT1vLGNbci5pZF0ueS09bixjW2EuaWRdLngrPW8sY1thLmlkXS55Kz1ufX19XSksdH0oKTtlLmRlZmF1bHQ9aH0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDEzNSkscz1vKG4pLHI9aSgxMzYpLGE9byhyKSxoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGksbyl7KDAscy5kZWZhdWx0KSh0aGlzLHQpLHRoaXMuYm9keT1lLHRoaXMucGh5c2ljc0JvZHk9aSx0aGlzLnNldE9wdGlvbnMobyl9cmV0dXJuKDAsYS5kZWZhdWx0KSh0LFt7a2V5OiJzZXRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9dH19LHtrZXk6InNvbHZlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD12b2lkIDAsZT12b2lkIDAsaT10aGlzLnBoeXNpY3NCb2R5LnBoeXNpY3NFZGdlSW5kaWNlcyxvPXRoaXMuYm9keS5lZGdlcyxuPXZvaWQgMCxzPXZvaWQgMCxyPXZvaWQgMCxhPTA7YTxpLmxlbmd0aDthKyspZT1vW2lbYV1dLCEwPT09ZS5jb25uZWN0ZWQmJmUudG9JZCE9PWUuZnJvbUlkJiZ2b2lkIDAhPT10aGlzLmJvZHkubm9kZXNbZS50b0lkXSYmdm9pZCAwIT09dGhpcy5ib2R5Lm5vZGVzW2UuZnJvbUlkXSYmKHZvaWQgMCE9PWUuZWRnZVR5cGUudmlhPyh0PXZvaWQgMD09PWUub3B0aW9ucy5sZW5ndGg/dGhpcy5vcHRpb25zLnNwcmluZ0xlbmd0aDplLm9wdGlvbnMubGVuZ3RoLG49ZS50byxzPWUuZWRnZVR5cGUudmlhLHI9ZS5mcm9tLHRoaXMuX2NhbGN1bGF0ZVNwcmluZ0ZvcmNlKG4scywuNSp0KSx0aGlzLl9jYWxjdWxhdGVTcHJpbmdGb3JjZShzLHIsLjUqdCkpOih0PXZvaWQgMD09PWUub3B0aW9ucy5sZW5ndGg/MS41KnRoaXMub3B0aW9ucy5zcHJpbmdMZW5ndGg6ZS5vcHRpb25zLmxlbmd0aCx0aGlzLl9jYWxjdWxhdGVTcHJpbmdGb3JjZShlLmZyb20sZS50byx0KSkpfX0se2tleToiX2NhbGN1bGF0ZVNwcmluZ0ZvcmNlIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIG89dC54LWUueCxuPXQueS1lLnkscz1NYXRoLm1heChNYXRoLnNxcnQobypvK24qbiksLjAxKSxyPXRoaXMub3B0aW9ucy5zcHJpbmdDb25zdGFudCooaS1zKS9zLGE9bypyLGg9bipyO3ZvaWQgMCE9PXRoaXMucGh5c2ljc0JvZHkuZm9yY2VzW3QuaWRdJiYodGhpcy5waHlzaWNzQm9keS5mb3JjZXNbdC5pZF0ueCs9YSx0aGlzLnBoeXNpY3NCb2R5LmZvcmNlc1t0LmlkXS55Kz1oKSx2b2lkIDAhPT10aGlzLnBoeXNpY3NCb2R5LmZvcmNlc1tlLmlkXSYmKHRoaXMucGh5c2ljc0JvZHkuZm9yY2VzW2UuaWRdLngtPWEsdGhpcy5waHlzaWNzQm9keS5mb3JjZXNbZS5pZF0ueS09aCl9fV0pLHR9KCk7ZS5kZWZhdWx0PWh9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxMzUpLHM9byhuKSxyPWkoMTM2KSxhPW8ociksaD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpLG8peygwLHMuZGVmYXVsdCkodGhpcyx0KSx0aGlzLmJvZHk9ZSx0aGlzLnBoeXNpY3NCb2R5PWksdGhpcy5zZXRPcHRpb25zKG8pfXJldHVybigwLGEuZGVmYXVsdCkodCxbe2tleToic2V0T3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPXR9fSx7a2V5OiJzb2x2ZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZSxpLG8sbixzLHIsYSxoPXRoaXMuYm9keS5lZGdlcyxkPXRoaXMucGh5c2ljc0JvZHkucGh5c2ljc0VkZ2VJbmRpY2VzLGw9dGhpcy5waHlzaWNzQm9keS5waHlzaWNzTm9kZUluZGljZXMsdT10aGlzLnBoeXNpY3NCb2R5LmZvcmNlcyxjPTA7YzxsLmxlbmd0aDtjKyspe3ZhciBwPWxbY107dVtwXS5zcHJpbmdGeD0wLHVbcF0uc3ByaW5nRnk9MH1mb3IodmFyIGY9MDtmPGQubGVuZ3RoO2YrKyllPWhbZFtmXV0sITA9PT1lLmNvbm5lY3RlZCYmKHQ9dm9pZCAwPT09ZS5vcHRpb25zLmxlbmd0aD90aGlzLm9wdGlvbnMuc3ByaW5nTGVuZ3RoOmUub3B0aW9ucy5sZW5ndGgsaT1lLmZyb20ueC1lLnRvLngsbz1lLmZyb20ueS1lLnRvLnksYT1NYXRoLnNxcnQoaSppK28qbyksYT0wPT09YT8uMDE6YSxyPXRoaXMub3B0aW9ucy5zcHJpbmdDb25zdGFudCoodC1hKS9hLG49aSpyLHM9bypyLGUudG8ubGV2ZWwhPWUuZnJvbS5sZXZlbD8odm9pZCAwIT09dVtlLnRvSWRdJiYodVtlLnRvSWRdLnNwcmluZ0Z4LT1uLHVbZS50b0lkXS5zcHJpbmdGeS09cyksdm9pZCAwIT09dVtlLmZyb21JZF0mJih1W2UuZnJvbUlkXS5zcHJpbmdGeCs9bix1W2UuZnJvbUlkXS5zcHJpbmdGeSs9cykpOih2b2lkIDAhPT11W2UudG9JZF0mJih1W2UudG9JZF0ueC09LjUqbix1W2UudG9JZF0ueS09LjUqcyksdm9pZCAwIT09dVtlLmZyb21JZF0mJih1W2UuZnJvbUlkXS54Kz0uNSpuLHVbZS5mcm9tSWRdLnkrPS41KnMpKSk7Zm9yKHZhciBtLHYscj0xLGc9MDtnPGwubGVuZ3RoO2crKyl7dmFyIHk9bFtnXTttPU1hdGgubWluKHIsTWF0aC5tYXgoLXIsdVt5XS5zcHJpbmdGeCkpLHY9TWF0aC5taW4ocixNYXRoLm1heCgtcix1W3ldLnNwcmluZ0Z5KSksdVt5XS54Kz1tLHVbeV0ueSs9dn1mb3IodmFyIGI9MCxfPTAsdz0wO3c8bC5sZW5ndGg7dysrKXt2YXIgeD1sW3ddO2IrPXVbeF0ueCxfKz11W3hdLnl9Zm9yKHZhciBrPWIvbC5sZW5ndGgsRD1fL2wubGVuZ3RoLE09MDtNPGwubGVuZ3RoO00rKyl7dmFyIFM9bFtNXTt1W1NdLngtPWssdVtTXS55LT1EfX19XSksdH0oKTtlLmRlZmF1bHQ9aH0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDEzNSkscz1vKG4pLHI9aSgxMzYpLGE9byhyKSxoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGksbyl7KDAscy5kZWZhdWx0KSh0aGlzLHQpLHRoaXMuYm9keT1lLHRoaXMucGh5c2ljc0JvZHk9aSx0aGlzLnNldE9wdGlvbnMobyl9cmV0dXJuKDAsYS5kZWZhdWx0KSh0LFt7a2V5OiJzZXRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9dH19LHtrZXk6InNvbHZlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD12b2lkIDAsZT12b2lkIDAsaT12b2lkIDAsbz12b2lkIDAsbj10aGlzLmJvZHkubm9kZXMscz10aGlzLnBoeXNpY3NCb2R5LnBoeXNpY3NOb2RlSW5kaWNlcyxyPXRoaXMucGh5c2ljc0JvZHkuZm9yY2VzLGE9MDthPHMubGVuZ3RoO2ErKyl7bz1uW3NbYV1dLHQ9LW8ueCxlPS1vLnksaT1NYXRoLnNxcnQodCp0K2UqZSksdGhpcy5fY2FsY3VsYXRlRm9yY2VzKGksdCxlLHIsbyl9fX0se2tleToiX2NhbGN1bGF0ZUZvcmNlcyIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuKXt2YXIgcz0wPT09dD8wOnRoaXMub3B0aW9ucy5jZW50cmFsR3Jhdml0eS90O29bbi5pZF0ueD1lKnMsb1tuLmlkXS55PWkqc319XSksdH0oKTtlLmRlZmF1bHQ9aH0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDE3Nikscz1vKG4pLHI9aSgxMzUpLGE9byhyKSxoPWkoMTM2KSxkPW8oaCksbD1pKDE3OSksdT1vKGwpLGM9aSgxODApLHA9byhjKSxmPWkoMjEzKSxtPW8oZiksdj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsaSxvKXtyZXR1cm4oMCxhLmRlZmF1bHQpKHRoaXMsZSksKDAsdS5kZWZhdWx0KSh0aGlzLChlLl9fcHJvdG9fX3x8KDAscy5kZWZhdWx0KShlKSkuY2FsbCh0aGlzLHQsaSxvKSl9cmV0dXJuKDAscC5kZWZhdWx0KShlLHQpLCgwLGQuZGVmYXVsdCkoZSxbe2tleToiX2NhbGN1bGF0ZUZvcmNlcyIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuKXswPT09dCYmKHQ9LjEqTWF0aC5yYW5kb20oKSxlPXQpLHRoaXMub3ZlcmxhcEF2b2lkYW5jZUZhY3RvcjwxJiZvLnNoYXBlLnJhZGl1cyYmKHQ9TWF0aC5tYXgoLjErdGhpcy5vdmVybGFwQXZvaWRhbmNlRmFjdG9yKm8uc2hhcGUucmFkaXVzLHQtby5zaGFwZS5yYWRpdXMpKTt2YXIgcz1vLmVkZ2VzLmxlbmd0aCsxLHI9dGhpcy5vcHRpb25zLmdyYXZpdGF0aW9uYWxDb25zdGFudCpuLm1hc3Mqby5vcHRpb25zLm1hc3Mqcy9NYXRoLnBvdyh0LDIpLGE9ZSpyLGg9aSpyO3RoaXMucGh5c2ljc0JvZHkuZm9yY2VzW28uaWRdLngrPWEsdGhpcy5waHlzaWNzQm9keS5mb3JjZXNbby5pZF0ueSs9aH19XSksZX0obS5kZWZhdWx0KTtlLmRlZmF1bHQ9dn0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDE3Nikscz1vKG4pLHI9aSgxMzUpLGE9byhyKSxoPWkoMTM2KSxkPW8oaCksbD1pKDE3OSksdT1vKGwpLGM9aSgxODApLHA9byhjKSxmPWkoMjE4KSxtPW8oZiksdj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsaSxvKXtyZXR1cm4oMCxhLmRlZmF1bHQpKHRoaXMsZSksKDAsdS5kZWZhdWx0KSh0aGlzLChlLl9fcHJvdG9fX3x8KDAscy5kZWZhdWx0KShlKSkuY2FsbCh0aGlzLHQsaSxvKSl9cmV0dXJuKDAscC5kZWZhdWx0KShlLHQpLCgwLGQuZGVmYXVsdCkoZSxbe2tleToiX2NhbGN1bGF0ZUZvcmNlcyIsdmFsdWU6ZnVuY3Rpb24odCxlLGksbyxuKXtpZih0PjApe3ZhciBzPW4uZWRnZXMubGVuZ3RoKzEscj10aGlzLm9wdGlvbnMuY2VudHJhbEdyYXZpdHkqcypuLm9wdGlvbnMubWFzcztvW24uaWRdLng9ZSpyLG9bbi5pZF0ueT1pKnJ9fX1dKSxlfShtLmRlZmF1bHQpO2UuZGVmYXVsdD12fSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoNTgpLHM9byhuKSxyPWkoNjIpLGE9byhyKSxoPWkoMTM1KSxkPW8oaCksbD1pKDEzNiksdT1vKGwpLGM9aSgxKSxwPWkoMjExKS5kZWZhdWx0LGY9aSgyMjIpLmRlZmF1bHQsbT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIGk9dGhpczsoMCxkLmRlZmF1bHQpKHRoaXMsdCksdGhpcy5ib2R5PWUsdGhpcy5jbHVzdGVyZWROb2Rlcz17fSx0aGlzLmNsdXN0ZXJlZEVkZ2VzPXt9LHRoaXMub3B0aW9ucz17fSx0aGlzLmRlZmF1bHRPcHRpb25zPXt9LGMuZXh0ZW5kKHRoaXMub3B0aW9ucyx0aGlzLmRlZmF1bHRPcHRpb25zKSx0aGlzLmJvZHkuZW1pdHRlci5vbigiX3Jlc2V0RGF0YSIsZnVuY3Rpb24oKXtpLmNsdXN0ZXJlZE5vZGVzPXt9LGkuY2x1c3RlcmVkRWRnZXM9e319KX1yZXR1cm4oMCx1LmRlZmF1bHQpKHQsW3trZXk6ImNsdXN0ZXJCeUh1YnNpemUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09dD90PXRoaXMuX2dldEh1YlNpemUoKToib2JqZWN0Ij09PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOigwLGEuZGVmYXVsdCkodCkpJiYoZT10aGlzLl9jaGVja09wdGlvbnModCksdD10aGlzLl9nZXRIdWJTaXplKCkpO2Zvcih2YXIgaT1bXSxvPTA7bzx0aGlzLmJvZHkubm9kZUluZGljZXMubGVuZ3RoO28rKyl7dmFyIG49dGhpcy5ib2R5Lm5vZGVzW3RoaXMuYm9keS5ub2RlSW5kaWNlc1tvXV07bi5lZGdlcy5sZW5ndGg+PXQmJmkucHVzaChuLmlkKX1mb3IodmFyIHM9MDtzPGkubGVuZ3RoO3MrKyl0aGlzLmNsdXN0ZXJCeUNvbm5lY3Rpb24oaVtzXSxlLCEwKTt0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfZGF0YUNoYW5nZWQiKX19LHtrZXk6ImNsdXN0ZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTtpZih2b2lkIDA9PT10LmpvaW5Db25kaXRpb24pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY2FsbCBjbHVzdGVyQnlOb2RlRGF0YSB3aXRob3V0IGEgam9pbkNvbmRpdGlvbiBmdW5jdGlvbiBpbiB0aGUgb3B0aW9ucy4iKTt0PXRoaXMuX2NoZWNrT3B0aW9ucyh0KTtmb3IodmFyIGk9e30sbz17fSxuPTA7bjx0aGlzLmJvZHkubm9kZUluZGljZXMubGVuZ3RoO24rKyl7dmFyIHM9dGhpcy5ib2R5Lm5vZGVJbmRpY2VzW25dLHI9dGhpcy5ib2R5Lm5vZGVzW3NdLGE9cC5jbG9uZU9wdGlvbnMocik7aWYoITA9PT10LmpvaW5Db25kaXRpb24oYSkpe2lbc109dGhpcy5ib2R5Lm5vZGVzW3NdO2Zvcih2YXIgaD0wO2g8ci5lZGdlcy5sZW5ndGg7aCsrKXt2YXIgZD1yLmVkZ2VzW2hdO3ZvaWQgMD09PXRoaXMuY2x1c3RlcmVkRWRnZXNbZC5pZF0mJihvW2QuaWRdPWQpfX19dGhpcy5fY2x1c3RlcihpLG8sdCxlKX19LHtrZXk6ImNsdXN0ZXJCeUVkZ2VDb3VudCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO2U9dGhpcy5fY2hlY2tPcHRpb25zKGUpO2Zvcih2YXIgbz1bXSxuPXt9LHI9dm9pZCAwLGE9dm9pZCAwLGg9dm9pZCAwLGQ9dm9pZCAwLGw9dm9pZCAwLHU9MDt1PHRoaXMuYm9keS5ub2RlSW5kaWNlcy5sZW5ndGg7dSsrKXt2YXIgYz17fSxmPXt9O2lmKGQ9dGhpcy5ib2R5Lm5vZGVJbmRpY2VzW3VdLHZvaWQgMD09PW5bZF0pe2w9MCxoPXRoaXMuYm9keS5ub2Rlc1tkXSxhPVtdO2Zvcih2YXIgbT0wO208aC5lZGdlcy5sZW5ndGg7bSsrKXI9aC5lZGdlc1ttXSx2b2lkIDA9PT10aGlzLmNsdXN0ZXJlZEVkZ2VzW3IuaWRdJiYoci50b0lkIT09ci5mcm9tSWQmJmwrKyxhLnB1c2gocikpO2lmKGw9PT10KXtmb3IodmFyIHY9ITAsZz0wO2c8YS5sZW5ndGg7ZysrKXtyPWFbZ107dmFyIHk9dGhpcy5fZ2V0Q29ubmVjdGVkSWQocixkKTtpZih2b2lkIDA9PT1lLmpvaW5Db25kaXRpb24pZltyLmlkXT1yLGNbZF09dGhpcy5ib2R5Lm5vZGVzW2RdLGNbeV09dGhpcy5ib2R5Lm5vZGVzW3ldLG5bZF09ITA7ZWxzZXt2YXIgYj1wLmNsb25lT3B0aW9ucyh0aGlzLmJvZHkubm9kZXNbZF0pO2lmKCEwIT09ZS5qb2luQ29uZGl0aW9uKGIpKXt2PSExO2JyZWFrfWZbci5pZF09cixjW2RdPXRoaXMuYm9keS5ub2Rlc1tkXSxuW2RdPSEwfX0oMCxzLmRlZmF1bHQpKGMpLmxlbmd0aD4wJiYoMCxzLmRlZmF1bHQpKGYpLmxlbmd0aD4wJiYhMD09PXYmJm8ucHVzaCh7bm9kZXM6YyxlZGdlczpmfSl9fX1mb3IodmFyIF89MDtfPG8ubGVuZ3RoO18rKyl0aGlzLl9jbHVzdGVyKG9bX10ubm9kZXMsb1tfXS5lZGdlcyxlLCExKTshMD09PWkmJnRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9kYXRhQ2hhbmdlZCIpfX0se2tleToiY2x1c3Rlck91dGxpZXJzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO3RoaXMuY2x1c3RlckJ5RWRnZUNvdW50KDEsdCxlKX19LHtrZXk6ImNsdXN0ZXJCcmlkZ2VzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO3RoaXMuY2x1c3RlckJ5RWRnZUNvdW50KDIsdCxlKX19LHtrZXk6ImNsdXN0ZXJCeUNvbm5lY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXTtpZih2b2lkIDA9PT10KXRocm93IG5ldyBFcnJvcigiTm8gbm9kZUlkIHN1cHBsaWVkIHRvIGNsdXN0ZXJCeUNvbm5lY3Rpb24hIik7aWYodm9pZCAwPT09dGhpcy5ib2R5Lm5vZGVzW3RdKXRocm93IG5ldyBFcnJvcigiVGhlIG5vZGVJZCBnaXZlbiB0byBjbHVzdGVyQnlDb25uZWN0aW9uIGRvZXMgbm90IGV4aXN0ISIpO3ZhciBvPXRoaXMuYm9keS5ub2Rlc1t0XTtlPXRoaXMuX2NoZWNrT3B0aW9ucyhlLG8pLHZvaWQgMD09PWUuY2x1c3Rlck5vZGVQcm9wZXJ0aWVzLngmJihlLmNsdXN0ZXJOb2RlUHJvcGVydGllcy54PW8ueCksdm9pZCAwPT09ZS5jbHVzdGVyTm9kZVByb3BlcnRpZXMueSYmKGUuY2x1c3Rlck5vZGVQcm9wZXJ0aWVzLnk9by55KSx2b2lkIDA9PT1lLmNsdXN0ZXJOb2RlUHJvcGVydGllcy5maXhlZCYmKGUuY2x1c3Rlck5vZGVQcm9wZXJ0aWVzLmZpeGVkPXt9LGUuY2x1c3Rlck5vZGVQcm9wZXJ0aWVzLmZpeGVkLng9by5vcHRpb25zLmZpeGVkLngsZS5jbHVzdGVyTm9kZVByb3BlcnRpZXMuZml4ZWQueT1vLm9wdGlvbnMuZml4ZWQueSk7dmFyIG49e30scj17fSxhPW8uaWQsaD1wLmNsb25lT3B0aW9ucyhvKTtuW2FdPW87Zm9yKHZhciBkPTA7ZDxvLmVkZ2VzLmxlbmd0aDtkKyspe3ZhciBsPW8uZWRnZXNbZF07aWYodm9pZCAwPT09dGhpcy5jbHVzdGVyZWRFZGdlc1tsLmlkXSl7dmFyIHU9dGhpcy5fZ2V0Q29ubmVjdGVkSWQobCxhKTtpZih2b2lkIDA9PT10aGlzLmNsdXN0ZXJlZE5vZGVzW3VdKWlmKHUhPT1hKWlmKHZvaWQgMD09PWUuam9pbkNvbmRpdGlvbilyW2wuaWRdPWwsblt1XT10aGlzLmJvZHkubm9kZXNbdV07ZWxzZXt2YXIgYz1wLmNsb25lT3B0aW9ucyh0aGlzLmJvZHkubm9kZXNbdV0pOyEwPT09ZS5qb2luQ29uZGl0aW9uKGgsYykmJihyW2wuaWRdPWwsblt1XT10aGlzLmJvZHkubm9kZXNbdV0pfWVsc2UgcltsLmlkXT1sfX12YXIgZj0oMCxzLmRlZmF1bHQpKG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gblt0XS5pZH0pO2ZvcihtIGluIG4pZm9yKHZhciBtPW5bbV0sdj0wO3Y8bS5lZGdlcy5sZW5ndGg7disrKXt2YXIgZz1tLmVkZ2VzW3ZdO2YuaW5kZXhPZih0aGlzLl9nZXRDb25uZWN0ZWRJZChnLG0uaWQpKT4tMSYmKHJbZy5pZF09Zyl9dGhpcy5fY2x1c3RlcihuLHIsZSxpKX19LHtrZXk6Il9jcmVhdGVDbHVzdGVyRWRnZXMiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLG8pe2Zvcih2YXIgbj12b2lkIDAscj12b2lkIDAsYT12b2lkIDAsaD12b2lkIDAsZD12b2lkIDAsbD12b2lkIDAsdT0oMCxzLmRlZmF1bHQpKHQpLGY9W10sbT0wO208dS5sZW5ndGg7bSsrKXtyPXVbbV0sYT10W3JdO2Zvcih2YXIgdj0wO3Y8YS5lZGdlcy5sZW5ndGg7disrKW49YS5lZGdlc1t2XSx2b2lkIDA9PT10aGlzLmNsdXN0ZXJlZEVkZ2VzW24uaWRdJiYobi50b0lkPT1uLmZyb21JZD9lW24uaWRdPW46bi50b0lkPT1yPyhoPWkuaWQsZD1uLmZyb21JZCxsPWQpOihoPW4udG9JZCxkPWkuaWQsbD1oKSx2b2lkIDA9PT10W2xdJiZmLnB1c2goe2VkZ2U6bixmcm9tSWQ6ZCx0b0lkOmh9KSl9Zm9yKHZhciBnPTA7ZzxmLmxlbmd0aDtnKyspe3ZhciB5PWZbZ10uZWRnZSxiPXAuY2xvbmVPcHRpb25zKHksImVkZ2UiKTtjLmRlZXBFeHRlbmQoYixvKSxiLmZyb209ZltnXS5mcm9tSWQsYi50bz1mW2ddLnRvSWQsYi5pZD0iY2x1c3RlckVkZ2U6IitjLnJhbmRvbVVVSUQoKTt2YXIgXz10aGlzLmJvZHkuZnVuY3Rpb25zLmNyZWF0ZUVkZ2UoYik7Xy5jbHVzdGVyaW5nRWRnZVJlcGxhY2luZ0lkPXkuaWQsdGhpcy5ib2R5LmVkZ2VzW3kuaWRdLmVkZ2VSZXBsYWNlZEJ5SWQ9Xy5pZCx0aGlzLmJvZHkuZWRnZXNbXy5pZF09XyxfLmNvbm5lY3QoKSx0aGlzLl9iYWNrdXBFZGdlT3B0aW9ucyh5KSx5LnNldE9wdGlvbnMoe3BoeXNpY3M6ITEsaGlkZGVuOiEwfSl9fX0se2tleToiX2NoZWNrT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuIHZvaWQgMD09PXQuY2x1c3RlckVkZ2VQcm9wZXJ0aWVzJiYodC5jbHVzdGVyRWRnZVByb3BlcnRpZXM9e30pLHZvaWQgMD09PXQuY2x1c3Rlck5vZGVQcm9wZXJ0aWVzJiYodC5jbHVzdGVyTm9kZVByb3BlcnRpZXM9e30pLHR9fSx7a2V5OiJfY2x1c3RlciIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBvPSEoYXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10pfHxhcmd1bWVudHNbM107aWYoMCE9KDAscy5kZWZhdWx0KSh0KS5sZW5ndGgmJigxIT0oMCxzLmRlZmF1bHQpKHQpLmxlbmd0aHx8MT09aS5jbHVzdGVyTm9kZVByb3BlcnRpZXMuYWxsb3dTaW5nbGVOb2RlQ2x1c3Rlcikpe2Zvcih2YXIgbiBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobikmJnZvaWQgMCE9PXRoaXMuY2x1c3RlcmVkTm9kZXNbbl0pcmV0dXJuO3ZhciByPWMuZGVlcEV4dGVuZCh7fSxpLmNsdXN0ZXJOb2RlUHJvcGVydGllcyk7aWYodm9pZCAwIT09aS5wcm9jZXNzUHJvcGVydGllcyl7dmFyIGE9W107Zm9yKHZhciBoIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShoKSl7dmFyIGQ9cC5jbG9uZU9wdGlvbnModFtoXSk7YS5wdXNoKGQpfXZhciBsPVtdO2Zvcih2YXIgdSBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkodSkmJiJjbHVzdGVyRWRnZToiIT09dS5zdWJzdHIoMCwxMikpe3ZhciBtPXAuY2xvbmVPcHRpb25zKGVbdV0sImVkZ2UiKTtsLnB1c2gobSl9aWYoIShyPWkucHJvY2Vzc1Byb3BlcnRpZXMocixhLGwpKSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBwcm9jZXNzUHJvcGVydGllcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gcHJvcGVydGllcyEiKX12b2lkIDA9PT1yLmlkJiYoci5pZD0iY2x1c3RlcjoiK2MucmFuZG9tVVVJRCgpKTt2YXIgdj1yLmlkO3ZvaWQgMD09PXIubGFiZWwmJihyLmxhYmVsPSJjbHVzdGVyIik7dmFyIGc9dm9pZCAwO3ZvaWQgMD09PXIueCYmKGc9dGhpcy5fZ2V0Q2x1c3RlclBvc2l0aW9uKHQpLHIueD1nLngpLHZvaWQgMD09PXIueSYmKHZvaWQgMD09PWcmJihnPXRoaXMuX2dldENsdXN0ZXJQb3NpdGlvbih0KSksci55PWcueSksci5pZD12O3ZhciB5PXRoaXMuYm9keS5mdW5jdGlvbnMuY3JlYXRlTm9kZShyLGYpO3kuaXNDbHVzdGVyPSEwLHkuY29udGFpbmVkTm9kZXM9dCx5LmNvbnRhaW5lZEVkZ2VzPWUseS5jbHVzdGVyRWRnZVByb3BlcnRpZXM9aS5jbHVzdGVyRWRnZVByb3BlcnRpZXMsdGhpcy5ib2R5Lm5vZGVzW3IuaWRdPXksdGhpcy5fY3JlYXRlQ2x1c3RlckVkZ2VzKHQsZSxyLGkuY2x1c3RlckVkZ2VQcm9wZXJ0aWVzKTtmb3IodmFyIGIgaW4gZSlpZihlLmhhc093blByb3BlcnR5KGIpJiZ2b2lkIDAhPT10aGlzLmJvZHkuZWRnZXNbYl0pe3ZhciBfPXRoaXMuYm9keS5lZGdlc1tiXTt0aGlzLl9iYWNrdXBFZGdlT3B0aW9ucyhfKSxfLnNldE9wdGlvbnMoe3BoeXNpY3M6ITEsaGlkZGVuOiEwfSl9Zm9yKHZhciB3IGluIHQpdC5oYXNPd25Qcm9wZXJ0eSh3KSYmKHRoaXMuY2x1c3RlcmVkTm9kZXNbd109e2NsdXN0ZXJJZDpyLmlkLG5vZGU6dGhpcy5ib2R5Lm5vZGVzW3ddfSx0aGlzLmJvZHkubm9kZXNbd10uc2V0T3B0aW9ucyh7aGlkZGVuOiEwLHBoeXNpY3M6ITF9KSk7ci5pZD12b2lkIDAsITA9PT1vJiZ0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfZGF0YUNoYW5nZWQiKX19fSx7a2V5OiJfYmFja3VwRWRnZU9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZvaWQgMD09PXRoaXMuY2x1c3RlcmVkRWRnZXNbdC5pZF0mJih0aGlzLmNsdXN0ZXJlZEVkZ2VzW3QuaWRdPXtwaHlzaWNzOnQub3B0aW9ucy5waHlzaWNzLGhpZGRlbjp0Lm9wdGlvbnMuaGlkZGVufSl9fSx7a2V5OiJfcmVzdG9yZUVkZ2UiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY2x1c3RlcmVkRWRnZXNbdC5pZF07dm9pZCAwIT09ZSYmKHQuc2V0T3B0aW9ucyh7cGh5c2ljczplLnBoeXNpY3MsaGlkZGVuOmUuaGlkZGVufSksZGVsZXRlIHRoaXMuY2x1c3RlcmVkRWRnZXNbdC5pZF0pfX0se2tleToiaXNDbHVzdGVyIix2YWx1ZTpmdW5jdGlvbih0KXsNCnJldHVybiB2b2lkIDAhPT10aGlzLmJvZHkubm9kZXNbdF0/ITA9PT10aGlzLmJvZHkubm9kZXNbdF0uaXNDbHVzdGVyOihjb25zb2xlLmxvZygiTm9kZSBkb2VzIG5vdCBleGlzdC4iKSwhMSl9fSx7a2V5OiJfZ2V0Q2x1c3RlclBvc2l0aW9uIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9KDAscy5kZWZhdWx0KSh0KSxpPXRbZVswXV0ueCxvPXRbZVswXV0ueCxuPXRbZVswXV0ueSxyPXRbZVswXV0ueSxhPXZvaWQgMCxoPTE7aDxlLmxlbmd0aDtoKyspYT10W2VbaF1dLGk9YS54PGk/YS54Omksbz1hLng+bz9hLng6byxuPWEueTxuP2EueTpuLHI9YS55PnI/YS55OnI7cmV0dXJue3g6LjUqKGkrbykseTouNSoobityKX19fSx7a2V5OiJvcGVuQ2x1c3RlciIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IEVycm9yKCJObyBjbHVzdGVyTm9kZUlkIHN1cHBsaWVkIHRvIG9wZW5DbHVzdGVyLiIpO2lmKHZvaWQgMD09PXRoaXMuYm9keS5ub2Rlc1t0XSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBjbHVzdGVyTm9kZUlkIHN1cHBsaWVkIHRvIG9wZW5DbHVzdGVyIGRvZXMgbm90IGV4aXN0LiIpO2lmKHZvaWQgMD09PXRoaXMuYm9keS5ub2Rlc1t0XS5jb250YWluZWROb2RlcylyZXR1cm4gdm9pZCBjb25zb2xlLmxvZygiVGhlIG5vZGU6Iit0KyIgaXMgbm90IGEgY2x1c3Rlci4iKTt2YXIgbz10aGlzLmJvZHkubm9kZXNbdF0sbj1vLmNvbnRhaW5lZE5vZGVzLHM9by5jb250YWluZWRFZGdlcztpZih2b2lkIDAhPT1lJiZ2b2lkIDAhPT1lLnJlbGVhc2VGdW5jdGlvbiYmImZ1bmN0aW9uIj09dHlwZW9mIGUucmVsZWFzZUZ1bmN0aW9uKXt2YXIgcj17fSxhPXt4Om8ueCx5Om8ueX07Zm9yKHZhciBoIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShoKSl7dmFyIGQ9dGhpcy5ib2R5Lm5vZGVzW2hdO3JbaF09e3g6ZC54LHk6ZC55fX12YXIgbD1lLnJlbGVhc2VGdW5jdGlvbihhLHIpO2Zvcih2YXIgdSBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkodSkpe3ZhciBmPXRoaXMuYm9keS5ub2Rlc1t1XTt2b2lkIDAhPT1sW3VdJiYoZi54PXZvaWQgMD09PWxbdV0ueD9vLng6bFt1XS54LGYueT12b2lkIDA9PT1sW3VdLnk/by55OmxbdV0ueSl9fWVsc2UgZm9yKHZhciBtIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShtKSl7dmFyIHY9dGhpcy5ib2R5Lm5vZGVzW21dO3Y9blttXSwhMT09PXYub3B0aW9ucy5maXhlZC54JiYodi54PW8ueCksITE9PT12Lm9wdGlvbnMuZml4ZWQueSYmKHYueT1vLnkpfWZvcih2YXIgZyBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkoZykpe3ZhciB5PXRoaXMuYm9keS5ub2Rlc1tnXTt5LnZ4PW8udngseS52eT1vLnZ5LHkuc2V0T3B0aW9ucyh7aGlkZGVuOiExLHBoeXNpY3M6ITB9KSxkZWxldGUgdGhpcy5jbHVzdGVyZWROb2Rlc1tnXX1mb3IodmFyIGI9W10sXz0wO188by5lZGdlcy5sZW5ndGg7XysrKWIucHVzaChvLmVkZ2VzW19dKTtmb3IodmFyIHc9MDt3PGIubGVuZ3RoO3crKyl7dmFyIHg9Ylt3XSxrPXRoaXMuX2dldENvbm5lY3RlZElkKHgsdCk7aWYodm9pZCAwIT09dGhpcy5jbHVzdGVyZWROb2Rlc1trXSl7dmFyIEQ9dGhpcy5ib2R5Lm5vZGVzW3RoaXMuY2x1c3RlcmVkTm9kZXNba10uY2x1c3RlcklkXSxNPXRoaXMuYm9keS5lZGdlc1t4LmNsdXN0ZXJpbmdFZGdlUmVwbGFjaW5nSWRdO2lmKHZvaWQgMCE9PU0pe0QuY29udGFpbmVkRWRnZXNbTS5pZF09TSxkZWxldGUgc1tNLmlkXTt2YXIgUz1NLmZyb21JZCxPPU0udG9JZDtNLnRvSWQ9PWs/Tz10aGlzLmNsdXN0ZXJlZE5vZGVzW2tdLmNsdXN0ZXJJZDpTPXRoaXMuY2x1c3RlcmVkTm9kZXNba10uY2x1c3RlcklkO3ZhciBDPXAuY2xvbmVPcHRpb25zKE0sImVkZ2UiKTtjLmRlZXBFeHRlbmQoQyxELmNsdXN0ZXJFZGdlUHJvcGVydGllcyk7dmFyIFQ9ImNsdXN0ZXJFZGdlOiIrYy5yYW5kb21VVUlEKCk7Yy5kZWVwRXh0ZW5kKEMse2Zyb206Uyx0bzpPLGhpZGRlbjohMSxwaHlzaWNzOiEwLGlkOlR9KTt2YXIgRT10aGlzLmJvZHkuZnVuY3Rpb25zLmNyZWF0ZUVkZ2UoQyk7RS5jbHVzdGVyaW5nRWRnZVJlcGxhY2luZ0lkPU0uaWQsdGhpcy5ib2R5LmVkZ2VzW1RdPUUsdGhpcy5ib2R5LmVkZ2VzW1RdLmNvbm5lY3QoKX19ZWxzZXt2YXIgUD10aGlzLmJvZHkuZWRnZXNbeC5jbHVzdGVyaW5nRWRnZVJlcGxhY2luZ0lkXTt2b2lkIDAhPT1QJiZ0aGlzLl9yZXN0b3JlRWRnZShQKX14LmNsZWFudXAoKSx4LmRpc2Nvbm5lY3QoKSxkZWxldGUgdGhpcy5ib2R5LmVkZ2VzW3guaWRdfWZvcih2YXIgSSBpbiBzKXMuaGFzT3duUHJvcGVydHkoSSkmJnRoaXMuX3Jlc3RvcmVFZGdlKHNbSV0pO2RlbGV0ZSB0aGlzLmJvZHkubm9kZXNbdF0sITA9PT1pJiZ0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfZGF0YUNoYW5nZWQiKX19LHtrZXk6ImdldE5vZGVzSW5DbHVzdGVyIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1bXTtpZighMD09PXRoaXMuaXNDbHVzdGVyKHQpKXt2YXIgaT10aGlzLmJvZHkubm9kZXNbdF0uY29udGFpbmVkTm9kZXM7Zm9yKHZhciBvIGluIGkpaS5oYXNPd25Qcm9wZXJ0eShvKSYmZS5wdXNoKHRoaXMuYm9keS5ub2Rlc1tvXS5pZCl9cmV0dXJuIGV9fSx7a2V5OiJmaW5kTm9kZSIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLGk9MCxvPXZvaWQgMDt2b2lkIDAhPT10aGlzLmNsdXN0ZXJlZE5vZGVzW3RdJiZpPDEwMDspe2lmKHZvaWQgMD09PShvPXRoaXMuYm9keS5ub2Rlc1t0XSkpcmV0dXJuW107ZS5wdXNoKG8uaWQpLHQ9dGhpcy5jbHVzdGVyZWROb2Rlc1t0XS5jbHVzdGVySWQsaSsrfXJldHVybiB2b2lkIDA9PT0obz10aGlzLmJvZHkubm9kZXNbdF0pP1tdOihlLnB1c2goby5pZCksZS5yZXZlcnNlKCksZSl9fSx7a2V5OiJ1cGRhdGVDbHVzdGVyZWROb2RlIix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IEVycm9yKCJObyBjbHVzdGVyZWROb2RlSWQgc3VwcGxpZWQgdG8gdXBkYXRlQ2x1c3RlcmVkTm9kZS4iKTtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcigiTm8gbmV3T3B0aW9ucyBzdXBwbGllZCB0byB1cGRhdGVDbHVzdGVyZWROb2RlLiIpO2lmKHZvaWQgMD09PXRoaXMuYm9keS5ub2Rlc1t0XSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBjbHVzdGVyZWROb2RlSWQgc3VwcGxpZWQgdG8gdXBkYXRlQ2x1c3RlcmVkTm9kZSBkb2VzIG5vdCBleGlzdC4iKTt0aGlzLmJvZHkubm9kZXNbdF0uc2V0T3B0aW9ucyhlKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfZGF0YUNoYW5nZWQiKX19LHtrZXk6InVwZGF0ZUVkZ2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoIk5vIHN0YXJ0RWRnZUlkIHN1cHBsaWVkIHRvIHVwZGF0ZUVkZ2UuIik7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoIk5vIG5ld09wdGlvbnMgc3VwcGxpZWQgdG8gdXBkYXRlRWRnZS4iKTtpZih2b2lkIDA9PT10aGlzLmJvZHkuZWRnZXNbdF0pdGhyb3cgbmV3IEVycm9yKCJUaGUgc3RhcnRFZGdlSWQgc3VwcGxpZWQgdG8gdXBkYXRlRWRnZSBkb2VzIG5vdCBleGlzdC4iKTtmb3IodmFyIGk9dGhpcy5nZXRDbHVzdGVyZWRFZGdlcyh0KSxvPTA7bzxpLmxlbmd0aDtvKyspe3RoaXMuYm9keS5lZGdlc1tpW29dXS5zZXRPcHRpb25zKGUpfXRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9kYXRhQ2hhbmdlZCIpfX0se2tleToiZ2V0Q2x1c3RlcmVkRWRnZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxpPTA7dm9pZCAwIT09dCYmdm9pZCAwIT09dGhpcy5ib2R5LmVkZ2VzW3RdJiZpPDEwMDspZS5wdXNoKHRoaXMuYm9keS5lZGdlc1t0XS5pZCksdD10aGlzLmJvZHkuZWRnZXNbdF0uZWRnZVJlcGxhY2VkQnlJZCxpKys7cmV0dXJuIGUucmV2ZXJzZSgpLGV9fSx7a2V5OiJnZXRCYXNlRWRnZSIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQsaT0wO3ZvaWQgMCE9PXQmJnZvaWQgMCE9PXRoaXMuYm9keS5lZGdlc1t0XSYmaTwxMDA7KXQ9dGhpcy5ib2R5LmVkZ2VzW3RdLmNsdXN0ZXJpbmdFZGdlUmVwbGFjaW5nSWQsaSsrLHZvaWQgMCE9PXQmJihlPXQpO3JldHVybiBlfX0se2tleToiX2dldENvbm5lY3RlZElkIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvSWQhPWU/dC50b0lkOih0LmZyb21JZCx0LmZyb21JZCl9fSx7a2V5OiJfZ2V0SHViU2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPTAsaT0wLG89MCxuPTA7bjx0aGlzLmJvZHkubm9kZUluZGljZXMubGVuZ3RoO24rKyl7dmFyIHM9dGhpcy5ib2R5Lm5vZGVzW3RoaXMuYm9keS5ub2RlSW5kaWNlc1tuXV07cy5lZGdlcy5sZW5ndGg+byYmKG89cy5lZGdlcy5sZW5ndGgpLHQrPXMuZWRnZXMubGVuZ3RoLGUrPU1hdGgucG93KHMuZWRnZXMubGVuZ3RoLDIpLGkrPTF9dC89aSxlLz1pO3ZhciByPWUtTWF0aC5wb3codCwyKSxhPU1hdGguc3FydChyKSxoPU1hdGguZmxvb3IodCsyKmEpO3JldHVybiBoPm8mJihoPW8pLGh9fV0pLHR9KCk7ZS5kZWZhdWx0PW19LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxNzYpLHM9byhuKSxyPWkoMTM1KSxhPW8ociksaD1pKDE3OSksZD1vKGgpLGw9aSgxODApLHU9byhsKSxjPWkoMTY5KSxwPW8oYyksZj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsaSxvLG4scil7KDAsYS5kZWZhdWx0KSh0aGlzLGUpO3ZhciBoPSgwLGQuZGVmYXVsdCkodGhpcywoZS5fX3Byb3RvX198fCgwLHMuZGVmYXVsdCkoZSkpLmNhbGwodGhpcyx0LGksbyxuLHIpKTtyZXR1cm4gaC5pc0NsdXN0ZXI9ITAsaC5jb250YWluZWROb2Rlcz17fSxoLmNvbnRhaW5lZEVkZ2VzPXt9LGh9cmV0dXJuKDAsdS5kZWZhdWx0KShlLHQpLGV9KHAuZGVmYXVsdCk7ZS5kZWZhdWx0PWZ9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxMzUpLHM9byhuKSxyPWkoMTM2KSxhPW8ocik7InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJih3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZSk7dmFyIGg9aSgxKSxkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpeygwLHMuZGVmYXVsdCkodGhpcyx0KSx0aGlzLmJvZHk9ZSx0aGlzLmNhbnZhcz1pLHRoaXMucmVkcmF3UmVxdWVzdGVkPSExLHRoaXMucmVuZGVyVGltZXI9dm9pZCAwLHRoaXMucmVxdWlyZXNUaW1lb3V0PSEwLHRoaXMucmVuZGVyaW5nQWN0aXZlPSExLHRoaXMucmVuZGVyUmVxdWVzdHM9MCx0aGlzLmFsbG93UmVkcmF3PSEwLHRoaXMuZHJhZ2dpbmc9ITEsdGhpcy5vcHRpb25zPXt9LHRoaXMuZGVmYXVsdE9wdGlvbnM9e2hpZGVFZGdlc09uRHJhZzohMSxoaWRlTm9kZXNPbkRyYWc6ITF9LGguZXh0ZW5kKHRoaXMub3B0aW9ucyx0aGlzLmRlZmF1bHRPcHRpb25zKSx0aGlzLl9kZXRlcm1pbmVCcm93c2VyTWV0aG9kKCksdGhpcy5iaW5kRXZlbnRMaXN0ZW5lcnMoKX1yZXR1cm4oMCxhLmRlZmF1bHQpKHQsW3trZXk6ImJpbmRFdmVudExpc3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuYm9keS5lbWl0dGVyLm9uKCJkcmFnU3RhcnQiLGZ1bmN0aW9uKCl7dC5kcmFnZ2luZz0hMH0pLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJkcmFnRW5kIixmdW5jdGlvbigpe3QuZHJhZ2dpbmc9ITF9KSx0aGlzLmJvZHkuZW1pdHRlci5vbigiX3Jlc2l6ZU5vZGVzIixmdW5jdGlvbigpe3QuX3Jlc2l6ZU5vZGVzKCl9KSx0aGlzLmJvZHkuZW1pdHRlci5vbigiX3JlZHJhdyIsZnVuY3Rpb24oKXshMT09PXQucmVuZGVyaW5nQWN0aXZlJiZ0Ll9yZWRyYXcoKX0pLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJfYmxvY2tSZWRyYXciLGZ1bmN0aW9uKCl7dC5hbGxvd1JlZHJhdz0hMX0pLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJfYWxsb3dSZWRyYXciLGZ1bmN0aW9uKCl7dC5hbGxvd1JlZHJhdz0hMCx0LnJlZHJhd1JlcXVlc3RlZD0hMX0pLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJfcmVxdWVzdFJlZHJhdyIsdGhpcy5fcmVxdWVzdFJlZHJhdy5iaW5kKHRoaXMpKSx0aGlzLmJvZHkuZW1pdHRlci5vbigiX3N0YXJ0UmVuZGVyaW5nIixmdW5jdGlvbigpe3QucmVuZGVyUmVxdWVzdHMrPTEsdC5yZW5kZXJpbmdBY3RpdmU9ITAsdC5fc3RhcnRSZW5kZXJpbmcoKX0pLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJfc3RvcFJlbmRlcmluZyIsZnVuY3Rpb24oKXt0LnJlbmRlclJlcXVlc3RzLT0xLHQucmVuZGVyaW5nQWN0aXZlPXQucmVuZGVyUmVxdWVzdHM+MCx0LnJlbmRlclRpbWVyPXZvaWQgMH0pLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJkZXN0cm95IixmdW5jdGlvbigpe3QucmVuZGVyUmVxdWVzdHM9MCx0LmFsbG93UmVkcmF3PSExLHQucmVuZGVyaW5nQWN0aXZlPSExLCEwPT09dC5yZXF1aXJlc1RpbWVvdXQ/Y2xlYXJUaW1lb3V0KHQucmVuZGVyVGltZXIpOndpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0LnJlbmRlclRpbWVyKSx0LmJvZHkuZW1pdHRlci5vZmYoKX0pfX0se2tleToic2V0T3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodm9pZCAwIT09dCl7dmFyIGU9WyJoaWRlRWRnZXNPbkRyYWciLCJoaWRlTm9kZXNPbkRyYWciXTtoLnNlbGVjdGl2ZURlZXBFeHRlbmQoZSx0aGlzLm9wdGlvbnMsdCl9fX0se2tleToiX3N0YXJ0UmVuZGVyaW5nIix2YWx1ZTpmdW5jdGlvbigpeyEwPT09dGhpcy5yZW5kZXJpbmdBY3RpdmUmJnZvaWQgMD09PXRoaXMucmVuZGVyVGltZXImJighMD09PXRoaXMucmVxdWlyZXNUaW1lb3V0P3RoaXMucmVuZGVyVGltZXI9d2luZG93LnNldFRpbWVvdXQodGhpcy5fcmVuZGVyU3RlcC5iaW5kKHRoaXMpLHRoaXMuc2ltdWxhdGlvbkludGVydmFsKTp0aGlzLnJlbmRlclRpbWVyPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fcmVuZGVyU3RlcC5iaW5kKHRoaXMpKSl9fSx7a2V5OiJfcmVuZGVyU3RlcCIsdmFsdWU6ZnVuY3Rpb24oKXshMD09PXRoaXMucmVuZGVyaW5nQWN0aXZlJiYodGhpcy5yZW5kZXJUaW1lcj12b2lkIDAsITA9PT10aGlzLnJlcXVpcmVzVGltZW91dCYmdGhpcy5fc3RhcnRSZW5kZXJpbmcoKSx0aGlzLl9yZWRyYXcoKSwhMT09PXRoaXMucmVxdWlyZXNUaW1lb3V0JiZ0aGlzLl9zdGFydFJlbmRlcmluZygpKX19LHtrZXk6InJlZHJhdyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJzZXRTaXplIiksdGhpcy5fcmVkcmF3KCl9fSx7a2V5OiJfcmVxdWVzdFJlZHJhdyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzOyEwIT09dGhpcy5yZWRyYXdSZXF1ZXN0ZWQmJiExPT09dGhpcy5yZW5kZXJpbmdBY3RpdmUmJiEwPT09dGhpcy5hbGxvd1JlZHJhdyYmKHRoaXMucmVkcmF3UmVxdWVzdGVkPSEwLCEwPT09dGhpcy5yZXF1aXJlc1RpbWVvdXQ/d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0Ll9yZWRyYXcoITEpfSwwKTp3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7dC5fcmVkcmF3KCExKX0pKX19LHtrZXk6Il9yZWRyYXciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtpZighMD09PXRoaXMuYWxsb3dSZWRyYXcpe3RoaXMuYm9keS5lbWl0dGVyLmVtaXQoImluaXRSZWRyYXciKSx0aGlzLnJlZHJhd1JlcXVlc3RlZD0hMSwwIT09dGhpcy5jYW52YXMuZnJhbWUuY2FudmFzLndpZHRoJiYwIT09dGhpcy5jYW52YXMuZnJhbWUuY2FudmFzLmhlaWdodHx8dGhpcy5jYW52YXMuc2V0U2l6ZSgpLHRoaXMuY2FudmFzLnNldFRyYW5zZm9ybSgpO3ZhciBlPXRoaXMuY2FudmFzLmdldENvbnRleHQoKSxpPXRoaXMuY2FudmFzLmZyYW1lLmNhbnZhcy5jbGllbnRXaWR0aCxvPXRoaXMuY2FudmFzLmZyYW1lLmNhbnZhcy5jbGllbnRIZWlnaHQ7aWYoZS5jbGVhclJlY3QoMCwwLGksbyksMD09PXRoaXMuY2FudmFzLmZyYW1lLmNsaWVudFdpZHRoKXJldHVybjtlLnNhdmUoKSxlLnRyYW5zbGF0ZSh0aGlzLmJvZHkudmlldy50cmFuc2xhdGlvbi54LHRoaXMuYm9keS52aWV3LnRyYW5zbGF0aW9uLnkpLGUuc2NhbGUodGhpcy5ib2R5LnZpZXcuc2NhbGUsdGhpcy5ib2R5LnZpZXcuc2NhbGUpLGUuYmVnaW5QYXRoKCksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiYmVmb3JlRHJhd2luZyIsZSksZS5jbG9zZVBhdGgoKSwhMT09PXQmJighMT09PXRoaXMuZHJhZ2dpbmd8fCEwPT09dGhpcy5kcmFnZ2luZyYmITE9PT10aGlzLm9wdGlvbnMuaGlkZUVkZ2VzT25EcmFnKSYmdGhpcy5fZHJhd0VkZ2VzKGUpLCghMT09PXRoaXMuZHJhZ2dpbmd8fCEwPT09dGhpcy5kcmFnZ2luZyYmITE9PT10aGlzLm9wdGlvbnMuaGlkZU5vZGVzT25EcmFnKSYmdGhpcy5fZHJhd05vZGVzKGUsdCksZS5iZWdpblBhdGgoKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJhZnRlckRyYXdpbmciLGUpLGUuY2xvc2VQYXRoKCksZS5yZXN0b3JlKCksITA9PT10JiZlLmNsZWFyUmVjdCgwLDAsaSxvKX19fSx7a2V5OiJfcmVzaXplTm9kZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jYW52YXMuc2V0VHJhbnNmb3JtKCk7dmFyIHQ9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgpO3Quc2F2ZSgpLHQudHJhbnNsYXRlKHRoaXMuYm9keS52aWV3LnRyYW5zbGF0aW9uLngsdGhpcy5ib2R5LnZpZXcudHJhbnNsYXRpb24ueSksdC5zY2FsZSh0aGlzLmJvZHkudmlldy5zY2FsZSx0aGlzLmJvZHkudmlldy5zY2FsZSk7dmFyIGU9dGhpcy5ib2R5Lm5vZGVzLGk9dm9pZCAwO2Zvcih2YXIgbyBpbiBlKWUuaGFzT3duUHJvcGVydHkobykmJihpPWVbb10saS5yZXNpemUodCksaS51cGRhdGVCb3VuZGluZ0JveCh0LGkuc2VsZWN0ZWQpKTt0LnJlc3RvcmUoKX19LHtrZXk6Il9kcmF3Tm9kZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLGk9dGhpcy5ib2R5Lm5vZGVzLG89dGhpcy5ib2R5Lm5vZGVJbmRpY2VzLG49dm9pZCAwLHM9W10scj10aGlzLmNhbnZhcy5ET010b0NhbnZhcyh7eDotMjAseTotMjB9KSxhPXRoaXMuY2FudmFzLkRPTXRvQ2FudmFzKHt4OnRoaXMuY2FudmFzLmZyYW1lLmNhbnZhcy5jbGllbnRXaWR0aCsyMCx5OnRoaXMuY2FudmFzLmZyYW1lLmNhbnZhcy5jbGllbnRIZWlnaHQrMjB9KSxoPXt0b3A6ci55LGxlZnQ6ci54LGJvdHRvbTphLnkscmlnaHQ6YS54fSxkPTA7ZDxvLmxlbmd0aDtkKyspbj1pW29bZF1dLG4uaXNTZWxlY3RlZCgpP3MucHVzaChvW2RdKTohMD09PWU/bi5kcmF3KHQpOiEwPT09bi5pc0JvdW5kaW5nQm94T3ZlcmxhcHBpbmdXaXRoKGgpP24uZHJhdyh0KTpuLnVwZGF0ZUJvdW5kaW5nQm94KHQsbi5zZWxlY3RlZCk7Zm9yKHZhciBsPTA7bDxzLmxlbmd0aDtsKyspbj1pW3NbbF1dLG4uZHJhdyh0KX19LHtrZXk6Il9kcmF3RWRnZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLmJvZHkuZWRnZXMsaT10aGlzLmJvZHkuZWRnZUluZGljZXMsbz12b2lkIDAsbj0wO248aS5sZW5ndGg7bisrKW89ZVtpW25dXSwhMD09PW8uY29ubmVjdGVkJiZvLmRyYXcodCl9fSx7a2V5OiJfZGV0ZXJtaW5lQnJvd3Nlck1ldGhvZCIsdmFsdWU6ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyl7dmFyIHQ9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO3RoaXMucmVxdWlyZXNUaW1lb3V0PSExLC0xIT10LmluZGV4T2YoIm1zaWUgOS4wIik/dGhpcy5yZXF1aXJlc1RpbWVvdXQ9ITA6LTEhPXQuaW5kZXhPZigic2FmYXJpIikmJnQuaW5kZXhPZigiY2hyb21lIik8PS0xJiYodGhpcy5yZXF1aXJlc1RpbWVvdXQ9ITApfWVsc2UgdGhpcy5yZXF1aXJlc1RpbWVvdXQ9ITB9fV0pLHR9KCk7ZS5kZWZhdWx0PWR9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxMzUpLHM9byhuKSxyPWkoMTM2KSxhPW8ociksaD1pKDExMyksZD1pKDEyMCksbD1pKDEpLHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpeygwLHMuZGVmYXVsdCkodGhpcyx0KSx0aGlzLmJvZHk9ZSx0aGlzLnBpeGVsUmF0aW89MSx0aGlzLnJlc2l6ZVRpbWVyPXZvaWQgMCx0aGlzLnJlc2l6ZUZ1bmN0aW9uPXRoaXMuX29uUmVzaXplLmJpbmQodGhpcyksdGhpcy5jYW1lcmFTdGF0ZT17fSx0aGlzLmluaXRpYWxpemVkPSExLHRoaXMuY2FudmFzVmlld0NlbnRlcj17fSx0aGlzLm9wdGlvbnM9e30sdGhpcy5kZWZhdWx0T3B0aW9ucz17YXV0b1Jlc2l6ZTohMCxoZWlnaHQ6IjEwMCUiLHdpZHRoOiIxMDAlIn0sbC5leHRlbmQodGhpcy5vcHRpb25zLHRoaXMuZGVmYXVsdE9wdGlvbnMpLHRoaXMuYmluZEV2ZW50TGlzdGVuZXJzKCl9cmV0dXJuKDAsYS5kZWZhdWx0KSh0LFt7a2V5OiJiaW5kRXZlbnRMaXN0ZW5lcnMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmJvZHkuZW1pdHRlci5vbmNlKCJyZXNpemUiLGZ1bmN0aW9uKGUpezAhPT1lLndpZHRoJiYodC5ib2R5LnZpZXcudHJhbnNsYXRpb24ueD0uNSplLndpZHRoKSwwIT09ZS5oZWlnaHQmJih0LmJvZHkudmlldy50cmFuc2xhdGlvbi55PS41KmUuaGVpZ2h0KX0pLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJzZXRTaXplIix0aGlzLnNldFNpemUuYmluZCh0aGlzKSksdGhpcy5ib2R5LmVtaXR0ZXIub24oImRlc3Ryb3kiLGZ1bmN0aW9uKCl7dC5oYW1tZXJGcmFtZS5kZXN0cm95KCksdC5oYW1tZXIuZGVzdHJveSgpLHQuX2NsZWFuVXAoKX0pfX0se2tleToic2V0T3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih2b2lkIDAhPT10KXt2YXIgaT1bIndpZHRoIiwiaGVpZ2h0IiwiYXV0b1Jlc2l6ZSJdO2wuc2VsZWN0aXZlRGVlcEV4dGVuZChpLHRoaXMub3B0aW9ucyx0KX0hMD09PXRoaXMub3B0aW9ucy5hdXRvUmVzaXplJiYodGhpcy5fY2xlYW5VcCgpLHRoaXMucmVzaXplVGltZXI9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXshMD09PWUuc2V0U2l6ZSgpJiZlLmJvZHkuZW1pdHRlci5lbWl0KCJfcmVxdWVzdFJlZHJhdyIpfSwxZTMpLHRoaXMucmVzaXplRnVuY3Rpb249dGhpcy5fb25SZXNpemUuYmluZCh0aGlzKSxsLmFkZEV2ZW50TGlzdGVuZXIod2luZG93LCJyZXNpemUiLHRoaXMucmVzaXplRnVuY3Rpb24pKX19LHtrZXk6Il9jbGVhblVwIix2YWx1ZTpmdW5jdGlvbigpe3ZvaWQgMCE9PXRoaXMucmVzaXplVGltZXImJmNsZWFySW50ZXJ2YWwodGhpcy5yZXNpemVUaW1lciksbC5yZW1vdmVFdmVudExpc3RlbmVyKHdpbmRvdywicmVzaXplIix0aGlzLnJlc2l6ZUZ1bmN0aW9uKSx0aGlzLnJlc2l6ZUZ1bmN0aW9uPXZvaWQgMH19LHtrZXk6Il9vblJlc2l6ZSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNldFNpemUoKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfcmVkcmF3Iil9fSx7a2V5OiJfZ2V0Q2FtZXJhU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMucGl4ZWxSYXRpbzshMD09PXRoaXMuaW5pdGlhbGl6ZWQmJih0aGlzLmNhbWVyYVN0YXRlLnByZXZpb3VzV2lkdGg9dGhpcy5mcmFtZS5jYW52YXMud2lkdGgvdCx0aGlzLmNhbWVyYVN0YXRlLnByZXZpb3VzSGVpZ2h0PXRoaXMuZnJhbWUuY2FudmFzLmhlaWdodC90LHRoaXMuY2FtZXJhU3RhdGUuc2NhbGU9dGhpcy5ib2R5LnZpZXcuc2NhbGUsdGhpcy5jYW1lcmFTdGF0ZS5wb3NpdGlvbj10aGlzLkRPTXRvQ2FudmFzKHt4Oi41KnRoaXMuZnJhbWUuY2FudmFzLndpZHRoL3QseTouNSp0aGlzLmZyYW1lLmNhbnZhcy5oZWlnaHQvdH0pKX19LHtrZXk6Il9zZXRDYW1lcmFTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtpZih2b2lkIDAhPT10aGlzLmNhbWVyYVN0YXRlLnNjYWxlJiYwIT09dGhpcy5mcmFtZS5jYW52YXMuY2xpZW50V2lkdGgmJjAhPT10aGlzLmZyYW1lLmNhbnZhcy5jbGllbnRIZWlnaHQmJjAhPT10aGlzLnBpeGVsUmF0aW8mJnRoaXMuY2FtZXJhU3RhdGUucHJldmlvdXNXaWR0aD4wKXt2YXIgdD10aGlzLmZyYW1lLmNhbnZhcy53aWR0aC90aGlzLnBpeGVsUmF0aW8vdGhpcy5jYW1lcmFTdGF0ZS5wcmV2aW91c1dpZHRoLGU9dGhpcy5mcmFtZS5jYW52YXMuaGVpZ2h0L3RoaXMucGl4ZWxSYXRpby90aGlzLmNhbWVyYVN0YXRlLnByZXZpb3VzSGVpZ2h0LGk9dGhpcy5jYW1lcmFTdGF0ZS5zY2FsZTsxIT10JiYxIT1lP2k9LjUqdGhpcy5jYW1lcmFTdGF0ZS5zY2FsZSoodCtlKToxIT10P2k9dGhpcy5jYW1lcmFTdGF0ZS5zY2FsZSp0OjEhPWUmJihpPXRoaXMuY2FtZXJhU3RhdGUuc2NhbGUqZSksdGhpcy5ib2R5LnZpZXcuc2NhbGU9aTt2YXIgbz10aGlzLkRPTXRvQ2FudmFzKHt4Oi41KnRoaXMuZnJhbWUuY2FudmFzLmNsaWVudFdpZHRoLHk6LjUqdGhpcy5mcmFtZS5jYW52YXMuY2xpZW50SGVpZ2h0fSksbj17eDpvLngtdGhpcy5jYW1lcmFTdGF0ZS5wb3NpdGlvbi54LHk6by55LXRoaXMuY2FtZXJhU3RhdGUucG9zaXRpb24ueX07dGhpcy5ib2R5LnZpZXcudHJhbnNsYXRpb24ueCs9bi54KnRoaXMuYm9keS52aWV3LnNjYWxlLHRoaXMuYm9keS52aWV3LnRyYW5zbGF0aW9uLnkrPW4ueSp0aGlzLmJvZHkudmlldy5zY2FsZX19fSx7a2V5OiJfcHJlcGFyZVZhbHVlIix2YWx1ZTpmdW5jdGlvbih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQrInB4IjtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKC0xIT09dC5pbmRleE9mKCIlIil8fC0xIT09dC5pbmRleE9mKCJweCIpKXJldHVybiB0O2lmKC0xPT09dC5pbmRleE9mKCIlIikpcmV0dXJuIHQrInB4In10aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCB1c2UgdGhlIHZhbHVlIHN1cHBsaWVkIGZvciB3aWR0aCBvciBoZWlnaHQ6Iit0KX19LHtrZXk6Il9jcmVhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmJvZHkuY29udGFpbmVyLmhhc0NoaWxkTm9kZXMoKTspdGhpcy5ib2R5LmNvbnRhaW5lci5yZW1vdmVDaGlsZCh0aGlzLmJvZHkuY29udGFpbmVyLmZpcnN0Q2hpbGQpO2lmKHRoaXMuZnJhbWU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5mcmFtZS5jbGFzc05hbWU9InZpcy1uZXR3b3JrIix0aGlzLmZyYW1lLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsdGhpcy5mcmFtZS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIix0aGlzLmZyYW1lLnRhYkluZGV4PTkwMCx0aGlzLmZyYW1lLmNhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSx0aGlzLmZyYW1lLmNhbnZhcy5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLHRoaXMuZnJhbWUuYXBwZW5kQ2hpbGQodGhpcy5mcmFtZS5jYW52YXMpLHRoaXMuZnJhbWUuY2FudmFzLmdldENvbnRleHQpdGhpcy5fc2V0UGl4ZWxSYXRpbygpLHRoaXMuc2V0VHJhbnNmb3JtKCk7ZWxzZXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTt0LnN0eWxlLmNvbG9yPSJyZWQiLHQuc3R5bGUuZm9udFdlaWdodD0iYm9sZCIsdC5zdHlsZS5wYWRkaW5nPSIxMHB4Iix0LmlubmVySFRNTD0iRXJyb3I6IHlvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IEhUTUwgY2FudmFzIix0aGlzLmZyYW1lLmNhbnZhcy5hcHBlbmRDaGlsZCh0KX10aGlzLmJvZHkuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZnJhbWUpLHRoaXMuYm9keS52aWV3LnNjYWxlPTEsdGhpcy5ib2R5LnZpZXcudHJhbnNsYXRpb249e3g6LjUqdGhpcy5mcmFtZS5jYW52YXMuY2xpZW50V2lkdGgseTouNSp0aGlzLmZyYW1lLmNhbnZhcy5jbGllbnRIZWlnaHR9LHRoaXMuX2JpbmRIYW1tZXIoKX19LHtrZXk6Il9iaW5kSGFtbWVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dm9pZCAwIT09dGhpcy5oYW1tZXImJnRoaXMuaGFtbWVyLmRlc3Ryb3koKSx0aGlzLmRyYWc9e30sdGhpcy5waW5jaD17fSx0aGlzLmhhbW1lcj1uZXcgaCh0aGlzLmZyYW1lLmNhbnZhcyksdGhpcy5oYW1tZXIuZ2V0KCJwaW5jaCIpLnNldCh7ZW5hYmxlOiEwfSksdGhpcy5oYW1tZXIuZ2V0KCJwYW4iKS5zZXQoe3RocmVzaG9sZDo1LGRpcmVjdGlvbjpoLkRJUkVDVElPTl9BTEx9KSxkLm9uVG91Y2godGhpcy5oYW1tZXIsZnVuY3Rpb24oZSl7dC5ib2R5LmV2ZW50TGlzdGVuZXJzLm9uVG91Y2goZSl9KSx0aGlzLmhhbW1lci5vbigidGFwIixmdW5jdGlvbihlKXt0LmJvZHkuZXZlbnRMaXN0ZW5lcnMub25UYXAoZSl9KSx0aGlzLmhhbW1lci5vbigiZG91YmxldGFwIixmdW5jdGlvbihlKXt0LmJvZHkuZXZlbnRMaXN0ZW5lcnMub25Eb3VibGVUYXAoZSl9KSx0aGlzLmhhbW1lci5vbigicHJlc3MiLGZ1bmN0aW9uKGUpe3QuYm9keS5ldmVudExpc3RlbmVycy5vbkhvbGQoZSl9KSx0aGlzLmhhbW1lci5vbigicGFuc3RhcnQiLGZ1bmN0aW9uKGUpe3QuYm9keS5ldmVudExpc3RlbmVycy5vbkRyYWdTdGFydChlKX0pLHRoaXMuaGFtbWVyLm9uKCJwYW5tb3ZlIixmdW5jdGlvbihlKXt0LmJvZHkuZXZlbnRMaXN0ZW5lcnMub25EcmFnKGUpfSksdGhpcy5oYW1tZXIub24oInBhbmVuZCIsZnVuY3Rpb24oZSl7dC5ib2R5LmV2ZW50TGlzdGVuZXJzLm9uRHJhZ0VuZChlKX0pLHRoaXMuaGFtbWVyLm9uKCJwaW5jaCIsZnVuY3Rpb24oZSl7dC5ib2R5LmV2ZW50TGlzdGVuZXJzLm9uUGluY2goZSl9KSx0aGlzLmZyYW1lLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIixmdW5jdGlvbihlKXt0LmJvZHkuZXZlbnRMaXN0ZW5lcnMub25Nb3VzZVdoZWVsKGUpfSksdGhpcy5mcmFtZS5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigiRE9NTW91c2VTY3JvbGwiLGZ1bmN0aW9uKGUpe3QuYm9keS5ldmVudExpc3RlbmVycy5vbk1vdXNlV2hlZWwoZSl9KSx0aGlzLmZyYW1lLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLGZ1bmN0aW9uKGUpe3QuYm9keS5ldmVudExpc3RlbmVycy5vbk1vdXNlTW92ZShlKX0pLHRoaXMuZnJhbWUuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IixmdW5jdGlvbihlKXt0LmJvZHkuZXZlbnRMaXN0ZW5lcnMub25Db250ZXh0KGUpfSksdGhpcy5oYW1tZXJGcmFtZT1uZXcgaCh0aGlzLmZyYW1lKSxkLm9uUmVsZWFzZSh0aGlzLmhhbW1lckZyYW1lLGZ1bmN0aW9uKGUpe3QuYm9keS5ldmVudExpc3RlbmVycy5vblJlbGVhc2UoZSl9KX19LHtrZXk6InNldFNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMub3B0aW9ucy53aWR0aCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLm9wdGlvbnMuaGVpZ2h0O3Q9dGhpcy5fcHJlcGFyZVZhbHVlKHQpLGU9dGhpcy5fcHJlcGFyZVZhbHVlKGUpO3ZhciBpPSExLG89dGhpcy5mcmFtZS5jYW52YXMud2lkdGgsbj10aGlzLmZyYW1lLmNhbnZhcy5oZWlnaHQscz10aGlzLnBpeGVsUmF0aW87aWYodGhpcy5fc2V0UGl4ZWxSYXRpbygpLHQhPXRoaXMub3B0aW9ucy53aWR0aHx8ZSE9dGhpcy5vcHRpb25zLmhlaWdodHx8dGhpcy5mcmFtZS5zdHlsZS53aWR0aCE9dHx8dGhpcy5mcmFtZS5zdHlsZS5oZWlnaHQhPWUpdGhpcy5fZ2V0Q2FtZXJhU3RhdGUocyksdGhpcy5mcmFtZS5zdHlsZS53aWR0aD10LHRoaXMuZnJhbWUuc3R5bGUuaGVpZ2h0PWUsdGhpcy5mcmFtZS5jYW52YXMuc3R5bGUud2lkdGg9IjEwMCUiLHRoaXMuZnJhbWUuY2FudmFzLnN0eWxlLmhlaWdodD0iMTAwJSIsdGhpcy5mcmFtZS5jYW52YXMud2lkdGg9TWF0aC5yb3VuZCh0aGlzLmZyYW1lLmNhbnZhcy5jbGllbnRXaWR0aCp0aGlzLnBpeGVsUmF0aW8pLHRoaXMuZnJhbWUuY2FudmFzLmhlaWdodD1NYXRoLnJvdW5kKHRoaXMuZnJhbWUuY2FudmFzLmNsaWVudEhlaWdodCp0aGlzLnBpeGVsUmF0aW8pLHRoaXMub3B0aW9ucy53aWR0aD10LHRoaXMub3B0aW9ucy5oZWlnaHQ9ZSx0aGlzLmNhbnZhc1ZpZXdDZW50ZXI9e3g6LjUqdGhpcy5mcmFtZS5jbGllbnRXaWR0aCx5Oi41KnRoaXMuZnJhbWUuY2xpZW50SGVpZ2h0fSxpPSEwO2Vsc2V7dmFyIHI9TWF0aC5yb3VuZCh0aGlzLmZyYW1lLmNhbnZhcy5jbGllbnRXaWR0aCp0aGlzLnBpeGVsUmF0aW8pLGE9TWF0aC5yb3VuZCh0aGlzLmZyYW1lLmNhbnZhcy5jbGllbnRIZWlnaHQqdGhpcy5waXhlbFJhdGlvKTt0aGlzLmZyYW1lLmNhbnZhcy53aWR0aD09PXImJnRoaXMuZnJhbWUuY2FudmFzLmhlaWdodD09PWF8fHRoaXMuX2dldENhbWVyYVN0YXRlKHMpLHRoaXMuZnJhbWUuY2FudmFzLndpZHRoIT09ciYmKHRoaXMuZnJhbWUuY2FudmFzLndpZHRoPXIsaT0hMCksdGhpcy5mcmFtZS5jYW52YXMuaGVpZ2h0IT09YSYmKHRoaXMuZnJhbWUuY2FudmFzLmhlaWdodD1hLGk9ITApfXJldHVybiEwPT09aSYmKHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoInJlc2l6ZSIse3dpZHRoOk1hdGgucm91bmQodGhpcy5mcmFtZS5jYW52YXMud2lkdGgvdGhpcy5waXhlbFJhdGlvKSxoZWlnaHQ6TWF0aC5yb3VuZCh0aGlzLmZyYW1lLmNhbnZhcy5oZWlnaHQvdGhpcy5waXhlbFJhdGlvKSxvbGRXaWR0aDpNYXRoLnJvdW5kKG8vdGhpcy5waXhlbFJhdGlvKSxvbGRIZWlnaHQ6TWF0aC5yb3VuZChuL3RoaXMucGl4ZWxSYXRpbyl9KSx0aGlzLl9zZXRDYW1lcmFTdGF0ZSgpKSx0aGlzLmluaXRpYWxpemVkPSEwLGl9fSx7a2V5OiJnZXRDb250ZXh0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZyYW1lLmNhbnZhcy5nZXRDb250ZXh0KCIyZCIpfX0se2tleToiX2RldGVybWluZVBpeGVsUmF0aW8iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRDb250ZXh0KCk7aWYodm9pZCAwPT09dCl0aHJvdyJDb3VsZCBub3QgZ2V0IGNhbnZheCBjb250ZXh0IjtyZXR1cm4od2luZG93LmRldmljZVBpeGVsUmF0aW98fDEpLyh0LndlYmtpdEJhY2tpbmdTdG9yZVBpeGVsUmF0aW98fHQubW96QmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8dC5tc0JhY2tpbmdTdG9yZVBpeGVsUmF0aW98fHQub0JhY2tpbmdTdG9yZVBpeGVsUmF0aW98fHQuYmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8MSl9fSx7a2V5OiJfc2V0UGl4ZWxSYXRpbyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnBpeGVsUmF0aW89dGhpcy5fZGV0ZXJtaW5lUGl4ZWxSYXRpbygpfX0se2tleToic2V0VHJhbnNmb3JtIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0Q29udGV4dCgpO2lmKHZvaWQgMD09PXQpdGhyb3ciQ291bGQgbm90IGdldCBjYW52YXggY29udGV4dCI7dC5zZXRUcmFuc2Zvcm0odGhpcy5waXhlbFJhdGlvLDAsMCx0aGlzLnBpeGVsUmF0aW8sMCwwKX19LHtrZXk6Il9YY29udmVydERPTXRvQ2FudmFzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLmJvZHkudmlldy50cmFuc2xhdGlvbi54KS90aGlzLmJvZHkudmlldy5zY2FsZX19LHtrZXk6Il9YY29udmVydENhbnZhc1RvRE9NIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdCp0aGlzLmJvZHkudmlldy5zY2FsZSt0aGlzLmJvZHkudmlldy50cmFuc2xhdGlvbi54fX0se2tleToiX1ljb252ZXJ0RE9NdG9DYW52YXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMuYm9keS52aWV3LnRyYW5zbGF0aW9uLnkpL3RoaXMuYm9keS52aWV3LnNjYWxlfX0se2tleToiX1ljb252ZXJ0Q2FudmFzVG9ET00iLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0KnRoaXMuYm9keS52aWV3LnNjYWxlK3RoaXMuYm9keS52aWV3LnRyYW5zbGF0aW9uLnl9fSx7a2V5OiJjYW52YXNUb0RPTSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJue3g6dGhpcy5fWGNvbnZlcnRDYW52YXNUb0RPTSh0LngpLHk6dGhpcy5fWWNvbnZlcnRDYW52YXNUb0RPTSh0LnkpfX19LHtrZXk6IkRPTXRvQ2FudmFzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm57eDp0aGlzLl9YY29udmVydERPTXRvQ2FudmFzKHQueCkseTp0aGlzLl9ZY29udmVydERPTXRvQ2FudmFzKHQueSl9fX1dKSx0fSgpO2UuZGVmYXVsdD11fSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoMTM1KSxzPW8obikscj1pKDEzNiksYT1vKHIpLGg9aSgxKSxkPWkoMjExKS5kZWZhdWx0LGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7dmFyIG89dGhpczsoMCxzLmRlZmF1bHQpKHRoaXMsdCksdGhpcy5ib2R5PWUsdGhpcy5jYW52YXM9aSx0aGlzLmFuaW1hdGlvblNwZWVkPTEvdGhpcy5yZW5kZXJSZWZyZXNoUmF0ZSx0aGlzLmFuaW1hdGlvbkVhc2luZ0Z1bmN0aW9uPSJlYXNlSW5PdXRRdWludCIsdGhpcy5lYXNpbmdUaW1lPTAsdGhpcy5zb3VyY2VTY2FsZT0wLHRoaXMudGFyZ2V0U2NhbGU9MCx0aGlzLnNvdXJjZVRyYW5zbGF0aW9uPTAsdGhpcy50YXJnZXRUcmFuc2xhdGlvbj0wLHRoaXMubG9ja2VkT25Ob2RlSWQ9dm9pZCAwLHRoaXMubG9ja2VkT25Ob2RlT2Zmc2V0PXZvaWQgMCx0aGlzLnRvdWNoVGltZT0wLHRoaXMudmlld0Z1bmN0aW9uPXZvaWQgMCx0aGlzLmJvZHkuZW1pdHRlci5vbigiZml0Iix0aGlzLmZpdC5iaW5kKHRoaXMpKSx0aGlzLmJvZHkuZW1pdHRlci5vbigiYW5pbWF0aW9uRmluaXNoZWQiLGZ1bmN0aW9uKCl7by5ib2R5LmVtaXR0ZXIuZW1pdCgiX3N0b3BSZW5kZXJpbmciKX0pLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJ1bmxvY2tOb2RlIix0aGlzLnJlbGVhc2VOb2RlLmJpbmQodGhpcykpfXJldHVybigwLGEuZGVmYXVsdCkodCxbe2tleToic2V0T3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307dGhpcy5vcHRpb25zPXR9fSx7a2V5OiJmaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOntub2RlczpbXX0sZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLGk9dm9pZCAwLG89dm9pZCAwO2lmKHZvaWQgMCE9PXQubm9kZXMmJjAhPT10Lm5vZGVzLmxlbmd0aHx8KHQubm9kZXM9dGhpcy5ib2R5Lm5vZGVJbmRpY2VzKSwhMD09PWUpe3ZhciBuPTA7Zm9yKHZhciBzIGluIHRoaXMuYm9keS5ub2RlcylpZih0aGlzLmJvZHkubm9kZXMuaGFzT3duUHJvcGVydHkocykpe3ZhciByPXRoaXMuYm9keS5ub2Rlc1tzXTshMD09PXIucHJlZGVmaW5lZFBvc2l0aW9uJiYobis9MSl9aWYobj4uNSp0aGlzLmJvZHkubm9kZUluZGljZXMubGVuZ3RoKXJldHVybiB2b2lkIHRoaXMuZml0KHQsITEpO2k9ZC5nZXRSYW5nZSh0aGlzLmJvZHkubm9kZXMsdC5ub2Rlcyk7bz0xMi42NjIvKHRoaXMuYm9keS5ub2RlSW5kaWNlcy5sZW5ndGgrNy40MTQ3KSsuMDk2NDgyMjtvKj1NYXRoLm1pbih0aGlzLmNhbnZhcy5mcmFtZS5jYW52YXMuY2xpZW50V2lkdGgvNjAwLHRoaXMuY2FudmFzLmZyYW1lLmNhbnZhcy5jbGllbnRIZWlnaHQvNjAwKX1lbHNle3RoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9yZXNpemVOb2RlcyIpLGk9ZC5nZXRSYW5nZSh0aGlzLmJvZHkubm9kZXMsdC5ub2Rlcyk7dmFyIGE9MS4xKk1hdGguYWJzKGkubWF4WC1pLm1pblgpLGg9MS4xKk1hdGguYWJzKGkubWF4WS1pLm1pblkpLGw9dGhpcy5jYW52YXMuZnJhbWUuY2FudmFzLmNsaWVudFdpZHRoL2EsdT10aGlzLmNhbnZhcy5mcmFtZS5jYW52YXMuY2xpZW50SGVpZ2h0L2g7bz1sPD11P2w6dX1vPjE/bz0xOjA9PT1vJiYobz0xKTt2YXIgYz1kLmZpbmRDZW50ZXIoaSkscD17cG9zaXRpb246YyxzY2FsZTpvLGFuaW1hdGlvbjp0LmFuaW1hdGlvbn07dGhpcy5tb3ZlVG8ocCl9fSx7a2V5OiJmb2N1cyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKHZvaWQgMCE9PXRoaXMuYm9keS5ub2Rlc1t0XSl7dmFyIGk9e3g6dGhpcy5ib2R5Lm5vZGVzW3RdLngseTp0aGlzLmJvZHkubm9kZXNbdF0ueX07ZS5wb3NpdGlvbj1pLGUubG9ja2VkT25Ob2RlPXQsdGhpcy5tb3ZlVG8oZSl9ZWxzZSBjb25zb2xlLmxvZygiTm9kZTogIit0KyIgY2Fubm90IGJlIGZvdW5kLiIpfX0se2tleToibW92ZVRvIix2YWx1ZTpmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXJldHVybiB2b2lkKHQ9e30pO3ZvaWQgMD09PXQub2Zmc2V0JiYodC5vZmZzZXQ9e3g6MCx5OjB9KSx2b2lkIDA9PT10Lm9mZnNldC54JiYodC5vZmZzZXQueD0wKSx2b2lkIDA9PT10Lm9mZnNldC55JiYodC5vZmZzZXQueT0wKSx2b2lkIDA9PT10LnNjYWxlJiYodC5zY2FsZT10aGlzLmJvZHkudmlldy5zY2FsZSksdm9pZCAwPT09dC5wb3NpdGlvbiYmKHQucG9zaXRpb249dGhpcy5nZXRWaWV3UG9zaXRpb24oKSksdm9pZCAwPT09dC5hbmltYXRpb24mJih0LmFuaW1hdGlvbj17ZHVyYXRpb246MH0pLCExPT09dC5hbmltYXRpb24mJih0LmFuaW1hdGlvbj17ZHVyYXRpb246MH0pLCEwPT09dC5hbmltYXRpb24mJih0LmFuaW1hdGlvbj17fSksdm9pZCAwPT09dC5hbmltYXRpb24uZHVyYXRpb24mJih0LmFuaW1hdGlvbi5kdXJhdGlvbj0xZTMpLHZvaWQgMD09PXQuYW5pbWF0aW9uLmVhc2luZ0Z1bmN0aW9uJiYodC5hbmltYXRpb24uZWFzaW5nRnVuY3Rpb249ImVhc2VJbk91dFF1YWQiKSx0aGlzLmFuaW1hdGVWaWV3KHQpfX0se2tleToiYW5pbWF0ZVZpZXciLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQpe3RoaXMuYW5pbWF0aW9uRWFzaW5nRnVuY3Rpb249dC5hbmltYXRpb24uZWFzaW5nRnVuY3Rpb24sdGhpcy5yZWxlYXNlTm9kZSgpLCEwPT09dC5sb2NrZWQmJih0aGlzLmxvY2tlZE9uTm9kZUlkPXQubG9ja2VkT25Ob2RlLHRoaXMubG9ja2VkT25Ob2RlT2Zmc2V0PXQub2Zmc2V0KSwwIT10aGlzLmVhc2luZ1RpbWUmJnRoaXMuX3RyYW5zaXRpb25SZWRyYXcoITApLHRoaXMuc291cmNlU2NhbGU9dGhpcy5ib2R5LnZpZXcuc2NhbGUsdGhpcy5zb3VyY2VUcmFuc2xhdGlvbj10aGlzLmJvZHkudmlldy50cmFuc2xhdGlvbix0aGlzLnRhcmdldFNjYWxlPXQuc2NhbGUsdGhpcy5ib2R5LnZpZXcuc2NhbGU9dGhpcy50YXJnZXRTY2FsZTt2YXIgZT10aGlzLmNhbnZhcy5ET010b0NhbnZhcyh7eDouNSp0aGlzLmNhbnZhcy5mcmFtZS5jYW52YXMuY2xpZW50V2lkdGgseTouNSp0aGlzLmNhbnZhcy5mcmFtZS5jYW52YXMuY2xpZW50SGVpZ2h0fSksaT17eDplLngtdC5wb3NpdGlvbi54LHk6ZS55LXQucG9zaXRpb24ueX07dGhpcy50YXJnZXRUcmFuc2xhdGlvbj17eDp0aGlzLnNvdXJjZVRyYW5zbGF0aW9uLngraS54KnRoaXMudGFyZ2V0U2NhbGUrdC5vZmZzZXQueCx5OnRoaXMuc291cmNlVHJhbnNsYXRpb24ueStpLnkqdGhpcy50YXJnZXRTY2FsZSt0Lm9mZnNldC55fSwwPT09dC5hbmltYXRpb24uZHVyYXRpb24/dm9pZCAwIT10aGlzLmxvY2tlZE9uTm9kZUlkPyh0aGlzLnZpZXdGdW5jdGlvbj10aGlzLl9sb2NrZWRSZWRyYXcuYmluZCh0aGlzKSx0aGlzLmJvZHkuZW1pdHRlci5vbigiaW5pdFJlZHJhdyIsdGhpcy52aWV3RnVuY3Rpb24pKToodGhpcy5ib2R5LnZpZXcuc2NhbGU9dGhpcy50YXJnZXRTY2FsZSx0aGlzLmJvZHkudmlldy50cmFuc2xhdGlvbj10aGlzLnRhcmdldFRyYW5zbGF0aW9uLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9yZXF1ZXN0UmVkcmF3IikpOih0aGlzLmFuaW1hdGlvblNwZWVkPTEvKDYwKnQuYW5pbWF0aW9uLmR1cmF0aW9uKi4wMDEpfHwxLzYwLHRoaXMuYW5pbWF0aW9uRWFzaW5nRnVuY3Rpb249dC5hbmltYXRpb24uZWFzaW5nRnVuY3Rpb24sdGhpcy52aWV3RnVuY3Rpb249dGhpcy5fdHJhbnNpdGlvblJlZHJhdy5iaW5kKHRoaXMpLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJpbml0UmVkcmF3Iix0aGlzLnZpZXdGdW5jdGlvbiksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX3N0YXJ0UmVuZGVyaW5nIikpfX19LHtrZXk6Il9sb2NrZWRSZWRyYXciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9e3g6dGhpcy5ib2R5Lm5vZGVzW3RoaXMubG9ja2VkT25Ob2RlSWRdLngseTp0aGlzLmJvZHkubm9kZXNbdGhpcy5sb2NrZWRPbk5vZGVJZF0ueX0sZT10aGlzLmNhbnZhcy5ET010b0NhbnZhcyh7eDouNSp0aGlzLmNhbnZhcy5mcmFtZS5jYW52YXMuY2xpZW50V2lkdGgseTouNSp0aGlzLmNhbnZhcy5mcmFtZS5jYW52YXMuY2xpZW50SGVpZ2h0fSksaT17eDplLngtdC54LHk6ZS55LXQueX0sbz10aGlzLmJvZHkudmlldy50cmFuc2xhdGlvbixuPXt4Om8ueCtpLngqdGhpcy5ib2R5LnZpZXcuc2NhbGUrdGhpcy5sb2NrZWRPbk5vZGVPZmZzZXQueCx5Om8ueStpLnkqdGhpcy5ib2R5LnZpZXcuc2NhbGUrdGhpcy5sb2NrZWRPbk5vZGVPZmZzZXQueX07dGhpcy5ib2R5LnZpZXcudHJhbnNsYXRpb249bn19LHtrZXk6InJlbGVhc2VOb2RlIix2YWx1ZTpmdW5jdGlvbigpe3ZvaWQgMCE9PXRoaXMubG9ja2VkT25Ob2RlSWQmJnZvaWQgMCE9PXRoaXMudmlld0Z1bmN0aW9uJiYodGhpcy5ib2R5LmVtaXR0ZXIub2ZmKCJpbml0UmVkcmF3Iix0aGlzLnZpZXdGdW5jdGlvbiksdGhpcy5sb2NrZWRPbk5vZGVJZD12b2lkIDAsdGhpcy5sb2NrZWRPbk5vZGVPZmZzZXQ9dm9pZCAwKX19LHtrZXk6Il90cmFuc2l0aW9uUmVkcmF3Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07dGhpcy5lYXNpbmdUaW1lKz10aGlzLmFuaW1hdGlvblNwZWVkLHRoaXMuZWFzaW5nVGltZT0hMD09PXQ/MTp0aGlzLmVhc2luZ1RpbWU7dmFyIGU9aC5lYXNpbmdGdW5jdGlvbnNbdGhpcy5hbmltYXRpb25FYXNpbmdGdW5jdGlvbl0odGhpcy5lYXNpbmdUaW1lKTt0aGlzLmJvZHkudmlldy5zY2FsZT10aGlzLnNvdXJjZVNjYWxlKyh0aGlzLnRhcmdldFNjYWxlLXRoaXMuc291cmNlU2NhbGUpKmUsdGhpcy5ib2R5LnZpZXcudHJhbnNsYXRpb249e3g6dGhpcy5zb3VyY2VUcmFuc2xhdGlvbi54Kyh0aGlzLnRhcmdldFRyYW5zbGF0aW9uLngtdGhpcy5zb3VyY2VUcmFuc2xhdGlvbi54KSplLHk6dGhpcy5zb3VyY2VUcmFuc2xhdGlvbi55Kyh0aGlzLnRhcmdldFRyYW5zbGF0aW9uLnktdGhpcy5zb3VyY2VUcmFuc2xhdGlvbi55KSplfSx0aGlzLmVhc2luZ1RpbWU+PTEmJih0aGlzLmJvZHkuZW1pdHRlci5vZmYoImluaXRSZWRyYXciLHRoaXMudmlld0Z1bmN0aW9uKSx0aGlzLmVhc2luZ1RpbWU9MCx2b2lkIDAhPXRoaXMubG9ja2VkT25Ob2RlSWQmJih0aGlzLnZpZXdGdW5jdGlvbj10aGlzLl9sb2NrZWRSZWRyYXcuYmluZCh0aGlzKSx0aGlzLmJvZHkuZW1pdHRlci5vbigiaW5pdFJlZHJhdyIsdGhpcy52aWV3RnVuY3Rpb24pKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJhbmltYXRpb25GaW5pc2hlZCIpKX19LHtrZXk6ImdldFNjYWxlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJvZHkudmlldy5zY2FsZX19LHtrZXk6ImdldFZpZXdQb3NpdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW52YXMuRE9NdG9DYW52YXMoe3g6LjUqdGhpcy5jYW52YXMuZnJhbWUuY2FudmFzLmNsaWVudFdpZHRoLHk6LjUqdGhpcy5jYW52YXMuZnJhbWUuY2FudmFzLmNsaWVudEhlaWdodH0pfX1dKSx0fSgpO2UuZGVmYXVsdD1sfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoMTM1KSxzPW8obikscj1pKDEzNiksYT1vKHIpLGg9aSgxKSxkPWkoMjI3KS5kZWZhdWx0LGw9aSgxMzQpLmRlZmF1bHQsdT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpLG8peygwLHMuZGVmYXVsdCkodGhpcyx0KSx0aGlzLmJvZHk9ZSx0aGlzLmNhbnZhcz1pLHRoaXMuc2VsZWN0aW9uSGFuZGxlcj1vLHRoaXMubmF2aWdhdGlvbkhhbmRsZXI9bmV3IGQoZSxpKSx0aGlzLmJvZHkuZXZlbnRMaXN0ZW5lcnMub25UYXA9dGhpcy5vblRhcC5iaW5kKHRoaXMpLHRoaXMuYm9keS5ldmVudExpc3RlbmVycy5vblRvdWNoPXRoaXMub25Ub3VjaC5iaW5kKHRoaXMpLHRoaXMuYm9keS5ldmVudExpc3RlbmVycy5vbkRvdWJsZVRhcD10aGlzLm9uRG91YmxlVGFwLmJpbmQodGhpcyksdGhpcy5ib2R5LmV2ZW50TGlzdGVuZXJzLm9uSG9sZD10aGlzLm9uSG9sZC5iaW5kKHRoaXMpLHRoaXMuYm9keS5ldmVudExpc3RlbmVycy5vbkRyYWdTdGFydD10aGlzLm9uRHJhZ1N0YXJ0LmJpbmQodGhpcyksdGhpcy5ib2R5LmV2ZW50TGlzdGVuZXJzLm9uRHJhZz10aGlzLm9uRHJhZy5iaW5kKHRoaXMpLHRoaXMuYm9keS5ldmVudExpc3RlbmVycy5vbkRyYWdFbmQ9dGhpcy5vbkRyYWdFbmQuYmluZCh0aGlzKSx0aGlzLmJvZHkuZXZlbnRMaXN0ZW5lcnMub25Nb3VzZVdoZWVsPXRoaXMub25Nb3VzZVdoZWVsLmJpbmQodGhpcyksdGhpcy5ib2R5LmV2ZW50TGlzdGVuZXJzLm9uUGluY2g9dGhpcy5vblBpbmNoLmJpbmQodGhpcyksdGhpcy5ib2R5LmV2ZW50TGlzdGVuZXJzLm9uTW91c2VNb3ZlPXRoaXMub25Nb3VzZU1vdmUuYmluZCh0aGlzKSx0aGlzLmJvZHkuZXZlbnRMaXN0ZW5lcnMub25SZWxlYXNlPXRoaXMub25SZWxlYXNlLmJpbmQodGhpcyksdGhpcy5ib2R5LmV2ZW50TGlzdGVuZXJzLm9uQ29udGV4dD10aGlzLm9uQ29udGV4dC5iaW5kKHRoaXMpLHRoaXMudG91Y2hUaW1lPTAsdGhpcy5kcmFnPXt9LHRoaXMucGluY2g9e30sdGhpcy5wb3B1cD12b2lkIDAsdGhpcy5wb3B1cE9iaj12b2lkIDAsdGhpcy5wb3B1cFRpbWVyPXZvaWQgMCx0aGlzLmJvZHkuZnVuY3Rpb25zLmdldFBvaW50ZXI9dGhpcy5nZXRQb2ludGVyLmJpbmQodGhpcyksdGhpcy5vcHRpb25zPXt9LHRoaXMuZGVmYXVsdE9wdGlvbnM9e2RyYWdOb2RlczohMCxkcmFnVmlldzohMCxob3ZlcjohMSxrZXlib2FyZDp7ZW5hYmxlZDohMSxzcGVlZDp7eDoxMCx5OjEwLHpvb206LjAyfSxiaW5kVG9XaW5kb3c6ITB9LG5hdmlnYXRpb25CdXR0b25zOiExLHRvb2x0aXBEZWxheTozMDAsem9vbVZpZXc6ITB9LGguZXh0ZW5kKHRoaXMub3B0aW9ucyx0aGlzLmRlZmF1bHRPcHRpb25zKSx0aGlzLmJpbmRFdmVudExpc3RlbmVycygpfXJldHVybigwLGEuZGVmYXVsdCkodCxbe2tleToiYmluZEV2ZW50TGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5ib2R5LmVtaXR0ZXIub24oImRlc3Ryb3kiLGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHQucG9wdXBUaW1lciksZGVsZXRlIHQuYm9keS5mdW5jdGlvbnMuZ2V0UG9pbnRlcn0pfX0se2tleToic2V0T3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodm9pZCAwIT09dCl7dmFyIGU9WyJoaWRlRWRnZXNPbkRyYWciLCJoaWRlTm9kZXNPbkRyYWciLCJrZXlib2FyZCIsIm11bHRpc2VsZWN0Iiwic2VsZWN0YWJsZSIsInNlbGVjdENvbm5lY3RlZEVkZ2VzIl07aC5zZWxlY3RpdmVOb3REZWVwRXh0ZW5kKGUsdGhpcy5vcHRpb25zLHQpLGgubWVyZ2VPcHRpb25zKHRoaXMub3B0aW9ucyx0LCJrZXlib2FyZCIpLHQudG9vbHRpcCYmKGguZXh0ZW5kKHRoaXMub3B0aW9ucy50b29sdGlwLHQudG9vbHRpcCksdC50b29sdGlwLmNvbG9yJiYodGhpcy5vcHRpb25zLnRvb2x0aXAuY29sb3I9aC5wYXJzZUNvbG9yKHQudG9vbHRpcC5jb2xvcikpKX10aGlzLm5hdmlnYXRpb25IYW5kbGVyLnNldE9wdGlvbnModGhpcy5vcHRpb25zKX19LHtrZXk6ImdldFBvaW50ZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybnt4OnQueC1oLmdldEFic29sdXRlTGVmdCh0aGlzLmNhbnZhcy5mcmFtZS5jYW52YXMpLHk6dC55LWguZ2V0QWJzb2x1dGVUb3AodGhpcy5jYW52YXMuZnJhbWUuY2FudmFzKX19fSx7a2V5OiJvblRvdWNoIix2YWx1ZTpmdW5jdGlvbih0KXsobmV3IERhdGUpLnZhbHVlT2YoKS10aGlzLnRvdWNoVGltZT41MCYmKHRoaXMuZHJhZy5wb2ludGVyPXRoaXMuZ2V0UG9pbnRlcih0LmNlbnRlciksdGhpcy5kcmFnLnBpbmNoZWQ9ITEsdGhpcy5waW5jaC5zY2FsZT10aGlzLmJvZHkudmlldy5zY2FsZSx0aGlzLnRvdWNoVGltZT0obmV3IERhdGUpLnZhbHVlT2YoKSl9fSx7a2V5OiJvblRhcCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRQb2ludGVyKHQuY2VudGVyKSxpPXRoaXMuc2VsZWN0aW9uSGFuZGxlci5vcHRpb25zLm11bHRpc2VsZWN0JiYodC5jaGFuZ2VkUG9pbnRlcnNbMF0uY3RybEtleXx8dC5jaGFuZ2VkUG9pbnRlcnNbMF0ubWV0YUtleSk7dGhpcy5jaGVja1NlbGVjdGlvbkNoYW5nZXMoZSx0LGkpLHRoaXMuc2VsZWN0aW9uSGFuZGxlci5fZ2VuZXJhdGVDbGlja0V2ZW50KCJjbGljayIsdCxlKX19LHtrZXk6Im9uRG91YmxlVGFwIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldFBvaW50ZXIodC5jZW50ZXIpO3RoaXMuc2VsZWN0aW9uSGFuZGxlci5fZ2VuZXJhdGVDbGlja0V2ZW50KCJkb3VibGVDbGljayIsdCxlKX19LHtrZXk6Im9uSG9sZCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRQb2ludGVyKHQuY2VudGVyKSxpPXRoaXMuc2VsZWN0aW9uSGFuZGxlci5vcHRpb25zLm11bHRpc2VsZWN0O3RoaXMuY2hlY2tTZWxlY3Rpb25DaGFuZ2VzKGUsdCxpKSx0aGlzLnNlbGVjdGlvbkhhbmRsZXIuX2dlbmVyYXRlQ2xpY2tFdmVudCgiY2xpY2siLHQsZSksdGhpcy5zZWxlY3Rpb25IYW5kbGVyLl9nZW5lcmF0ZUNsaWNrRXZlbnQoImhvbGQiLHQsZSl9fSx7a2V5OiJvblJlbGVhc2UiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKChuZXcgRGF0ZSkudmFsdWVPZigpLXRoaXMudG91Y2hUaW1lPjEwKXt2YXIgZT10aGlzLmdldFBvaW50ZXIodC5jZW50ZXIpO3RoaXMuc2VsZWN0aW9uSGFuZGxlci5fZ2VuZXJhdGVDbGlja0V2ZW50KCJyZWxlYXNlIix0LGUpLHRoaXMudG91Y2hUaW1lPShuZXcgRGF0ZSkudmFsdWVPZigpfX19LHtrZXk6Im9uQ29udGV4dCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRQb2ludGVyKHt4OnQuY2xpZW50WCx5OnQuY2xpZW50WX0pO3RoaXMuc2VsZWN0aW9uSGFuZGxlci5fZ2VuZXJhdGVDbGlja0V2ZW50KCJvbmNvbnRleHQiLHQsZSl9fSx7a2V5OiJjaGVja1NlbGVjdGlvbkNoYW5nZXMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxvPXRoaXMuc2VsZWN0aW9uSGFuZGxlci5nZXRTZWxlY3Rpb24oKSxuPSExO249ITA9PT1pP3RoaXMuc2VsZWN0aW9uSGFuZGxlci5zZWxlY3RBZGRpdGlvbmFsT25Qb2ludCh0KTp0aGlzLnNlbGVjdGlvbkhhbmRsZXIuc2VsZWN0T25Qb2ludCh0KTt2YXIgcz10aGlzLnNlbGVjdGlvbkhhbmRsZXIuZ2V0U2VsZWN0aW9uKCkscj10aGlzLl9kZXRlcm1pbmVEaWZmZXJlbmNlKG8scyksYT10aGlzLl9kZXRlcm1pbmVEaWZmZXJlbmNlKHMsbyk7ci5lZGdlcy5sZW5ndGg+MCYmKHRoaXMuc2VsZWN0aW9uSGFuZGxlci5fZ2VuZXJhdGVDbGlja0V2ZW50KCJkZXNlbGVjdEVkZ2UiLGUsdCxvKSxuPSEwKSxyLm5vZGVzLmxlbmd0aD4wJiYodGhpcy5zZWxlY3Rpb25IYW5kbGVyLl9nZW5lcmF0ZUNsaWNrRXZlbnQoImRlc2VsZWN0Tm9kZSIsZSx0LG8pLG49ITApLGEubm9kZXMubGVuZ3RoPjAmJih0aGlzLnNlbGVjdGlvbkhhbmRsZXIuX2dlbmVyYXRlQ2xpY2tFdmVudCgic2VsZWN0Tm9kZSIsZSx0KSxuPSEwKSxhLmVkZ2VzLmxlbmd0aD4wJiYodGhpcy5zZWxlY3Rpb25IYW5kbGVyLl9nZW5lcmF0ZUNsaWNrRXZlbnQoInNlbGVjdEVkZ2UiLGUsdCksbj0hMCksITA9PT1uJiZ0aGlzLnNlbGVjdGlvbkhhbmRsZXIuX2dlbmVyYXRlQ2xpY2tFdmVudCgic2VsZWN0IixlLHQpfX0se2tleToiX2RldGVybWluZURpZmZlcmVuY2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9W10sbz0wO288dC5sZW5ndGg7bysrKXt2YXIgbj10W29dOy0xPT09ZS5pbmRleE9mKG4pJiZpLnB1c2gobil9cmV0dXJuIGl9O3JldHVybntub2RlczppKHQubm9kZXMsZS5ub2RlcyksZWRnZXM6aSh0LmVkZ2VzLGUuZWRnZXMpfX19LHtrZXk6Im9uRHJhZ1N0YXJ0Iix2YWx1ZTpmdW5jdGlvbih0KXt2b2lkIDA9PT10aGlzLmRyYWcucG9pbnRlciYmdGhpcy5vblRvdWNoKHQpO3ZhciBlPXRoaXMuc2VsZWN0aW9uSGFuZGxlci5nZXROb2RlQXQodGhpcy5kcmFnLnBvaW50ZXIpO2lmKHRoaXMuZHJhZy5kcmFnZ2luZz0hMCx0aGlzLmRyYWcuc2VsZWN0aW9uPVtdLHRoaXMuZHJhZy50cmFuc2xhdGlvbj1oLmV4dGVuZCh7fSx0aGlzLmJvZHkudmlldy50cmFuc2xhdGlvbiksdGhpcy5kcmFnLm5vZGVJZD12b2lkIDAsdm9pZCAwIT09ZSYmITA9PT10aGlzLm9wdGlvbnMuZHJhZ05vZGVzKXt0aGlzLmRyYWcubm9kZUlkPWUuaWQsITE9PT1lLmlzU2VsZWN0ZWQoKSYmKHRoaXMuc2VsZWN0aW9uSGFuZGxlci51bnNlbGVjdEFsbCgpLHRoaXMuc2VsZWN0aW9uSGFuZGxlci5zZWxlY3RPYmplY3QoZSkpLHRoaXMuc2VsZWN0aW9uSGFuZGxlci5fZ2VuZXJhdGVDbGlja0V2ZW50KCJkcmFnU3RhcnQiLHQsdGhpcy5kcmFnLnBvaW50ZXIpO3ZhciBpPXRoaXMuc2VsZWN0aW9uSGFuZGxlci5zZWxlY3Rpb25PYmoubm9kZXM7Zm9yKHZhciBvIGluIGkpaWYoaS5oYXNPd25Qcm9wZXJ0eShvKSl7dmFyIG49aVtvXSxzPXtpZDpuLmlkLG5vZGU6bix4Om4ueCx5Om4ueSx4Rml4ZWQ6bi5vcHRpb25zLmZpeGVkLngseUZpeGVkOm4ub3B0aW9ucy5maXhlZC55fTtuLm9wdGlvbnMuZml4ZWQueD0hMCxuLm9wdGlvbnMuZml4ZWQueT0hMCx0aGlzLmRyYWcuc2VsZWN0aW9uLnB1c2gocyl9fWVsc2UgdGhpcy5zZWxlY3Rpb25IYW5kbGVyLl9nZW5lcmF0ZUNsaWNrRXZlbnQoImRyYWdTdGFydCIsdCx0aGlzLmRyYWcucG9pbnRlcix2b2lkIDAsITApfX0se2tleToib25EcmFnIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKCEwIT09dGhpcy5kcmFnLnBpbmNoZWQpe3RoaXMuYm9keS5lbWl0dGVyLmVtaXQoInVubG9ja05vZGUiKTt2YXIgaT10aGlzLmdldFBvaW50ZXIodC5jZW50ZXIpLG89dGhpcy5kcmFnLnNlbGVjdGlvbjtpZihvJiZvLmxlbmd0aCYmITA9PT10aGlzLm9wdGlvbnMuZHJhZ05vZGVzKXt0aGlzLnNlbGVjdGlvbkhhbmRsZXIuX2dlbmVyYXRlQ2xpY2tFdmVudCgiZHJhZ2dpbmciLHQsaSk7dmFyIG49aS54LXRoaXMuZHJhZy5wb2ludGVyLngscz1pLnktdGhpcy5kcmFnLnBvaW50ZXIueTtvLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGk9dC5ub2RlOyExPT09dC54Rml4ZWQmJihpLng9ZS5jYW52YXMuX1hjb252ZXJ0RE9NdG9DYW52YXMoZS5jYW52YXMuX1hjb252ZXJ0Q2FudmFzVG9ET00odC54KStuKSksITE9PT10LnlGaXhlZCYmKGkueT1lLmNhbnZhcy5fWWNvbnZlcnRET010b0NhbnZhcyhlLmNhbnZhcy5fWWNvbnZlcnRDYW52YXNUb0RPTSh0LnkpK3MpKX0pLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoInN0YXJ0U2ltdWxhdGlvbiIpfWVsc2UgaWYoITA9PT10aGlzLm9wdGlvbnMuZHJhZ1ZpZXcpe2lmKHRoaXMuc2VsZWN0aW9uSGFuZGxlci5fZ2VuZXJhdGVDbGlja0V2ZW50KCJkcmFnZ2luZyIsdCxpLHZvaWQgMCwhMCksdm9pZCAwPT09dGhpcy5kcmFnLnBvaW50ZXIpcmV0dXJuIHZvaWQgdGhpcy5vbkRyYWdTdGFydCh0KTt2YXIgcj1pLngtdGhpcy5kcmFnLnBvaW50ZXIueCxhPWkueS10aGlzLmRyYWcucG9pbnRlci55O3RoaXMuYm9keS52aWV3LnRyYW5zbGF0aW9uPXt4OnRoaXMuZHJhZy50cmFuc2xhdGlvbi54K3IseTp0aGlzLmRyYWcudHJhbnNsYXRpb24ueSthfSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfcmVkcmF3Iil9fX19LHtrZXk6Im9uRHJhZ0VuZCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5kcmFnLmRyYWdnaW5nPSExO3ZhciBlPXRoaXMuZHJhZy5zZWxlY3Rpb247ZSYmZS5sZW5ndGg/KGUuZm9yRWFjaChmdW5jdGlvbih0KXt0Lm5vZGUub3B0aW9ucy5maXhlZC54PXQueEZpeGVkLHQubm9kZS5vcHRpb25zLmZpeGVkLnk9dC55Rml4ZWR9KSx0aGlzLnNlbGVjdGlvbkhhbmRsZXIuX2dlbmVyYXRlQ2xpY2tFdmVudCgiZHJhZ0VuZCIsdCx0aGlzLmdldFBvaW50ZXIodC5jZW50ZXIpKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJzdGFydFNpbXVsYXRpb24iKSk6KHRoaXMuc2VsZWN0aW9uSGFuZGxlci5fZ2VuZXJhdGVDbGlja0V2ZW50KCJkcmFnRW5kIix0LHRoaXMuZ2V0UG9pbnRlcih0LmNlbnRlciksdm9pZCAwLCEwKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfcmVxdWVzdFJlZHJhdyIpKX19LHtrZXk6Im9uUGluY2giLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0UG9pbnRlcih0LmNlbnRlcik7dGhpcy5kcmFnLnBpbmNoZWQ9ITAsdm9pZCAwPT09dGhpcy5waW5jaC5zY2FsZSYmKHRoaXMucGluY2guc2NhbGU9MSk7dmFyIGk9dGhpcy5waW5jaC5zY2FsZSp0LnNjYWxlO3RoaXMuem9vbShpLGUpfX0se2tleToiem9vbSIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZighMD09PXRoaXMub3B0aW9ucy56b29tVmlldyl7dmFyIGk9dGhpcy5ib2R5LnZpZXcuc2NhbGU7dDwxZS01JiYodD0xZS01KSx0PjEwJiYodD0xMCk7dmFyIG89dm9pZCAwO3ZvaWQgMCE9PXRoaXMuZHJhZyYmITA9PT10aGlzLmRyYWcuZHJhZ2dpbmcmJihvPXRoaXMuY2FudmFzLkRPTXRvQ2FudmFzKHRoaXMuZHJhZy5wb2ludGVyKSk7dmFyIG49dGhpcy5ib2R5LnZpZXcudHJhbnNsYXRpb24scz10L2kscj0oMS1zKSplLngrbi54KnMsYT0oMS1zKSplLnkrbi55KnM7aWYodGhpcy5ib2R5LnZpZXcuc2NhbGU9dCx0aGlzLmJvZHkudmlldy50cmFuc2xhdGlvbj17eDpyLHk6YX0sdm9pZCAwIT1vKXt2YXIgaD10aGlzLmNhbnZhcy5jYW52YXNUb0RPTShvKTt0aGlzLmRyYWcucG9pbnRlci54PWgueCx0aGlzLmRyYWcucG9pbnRlci55PWgueX10aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfcmVxdWVzdFJlZHJhdyIpLGk8dD90aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJ6b29tIix7ZGlyZWN0aW9uOiIrIixzY2FsZTp0aGlzLmJvZHkudmlldy5zY2FsZSxwb2ludGVyOmV9KTp0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJ6b29tIix7ZGlyZWN0aW9uOiItIixzY2FsZTp0aGlzLmJvZHkudmlldy5zY2FsZSxwb2ludGVyOmV9KX19fSx7a2V5OiJvbk1vdXNlV2hlZWwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCEwPT09dGhpcy5vcHRpb25zLnpvb21WaWV3KXt2YXIgZT0wO2lmKHQud2hlZWxEZWx0YT9lPXQud2hlZWxEZWx0YS8xMjA6dC5kZXRhaWwmJihlPS10LmRldGFpbC8zKSwwIT09ZSl7dmFyIGk9dGhpcy5ib2R5LnZpZXcuc2NhbGUsbz1lLzEwO2U8MCYmKG8vPTEtbyksaSo9MStvO3ZhciBuPXRoaXMuZ2V0UG9pbnRlcih7eDp0LmNsaWVudFgseTp0LmNsaWVudFl9KTt0aGlzLnpvb20oaSxuKX10LnByZXZlbnREZWZhdWx0KCl9fX0se2tleToib25Nb3VzZU1vdmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLmdldFBvaW50ZXIoe3g6dC5jbGllbnRYLHk6dC5jbGllbnRZfSksbz0hMTtpZih2b2lkIDAhPT10aGlzLnBvcHVwJiYoITE9PT10aGlzLnBvcHVwLmhpZGRlbiYmdGhpcy5fY2hlY2tIaWRlUG9wdXAoaSksDQohMT09PXRoaXMucG9wdXAuaGlkZGVuJiYobz0hMCx0aGlzLnBvcHVwLnNldFBvc2l0aW9uKGkueCszLGkueS01KSx0aGlzLnBvcHVwLnNob3coKSkpLCExPT09dGhpcy5vcHRpb25zLmtleWJvYXJkLmJpbmRUb1dpbmRvdyYmITA9PT10aGlzLm9wdGlvbnMua2V5Ym9hcmQuZW5hYmxlZCYmdGhpcy5jYW52YXMuZnJhbWUuZm9jdXMoKSwhMT09PW8mJih2b2lkIDAhPT10aGlzLnBvcHVwVGltZXImJihjbGVhckludGVydmFsKHRoaXMucG9wdXBUaW1lciksdGhpcy5wb3B1cFRpbWVyPXZvaWQgMCksdGhpcy5kcmFnLmRyYWdnaW5nfHwodGhpcy5wb3B1cFRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gZS5fY2hlY2tTaG93UG9wdXAoaSl9LHRoaXMub3B0aW9ucy50b29sdGlwRGVsYXkpKSksITA9PT10aGlzLm9wdGlvbnMuaG92ZXIpe3ZhciBuPXRoaXMuc2VsZWN0aW9uSGFuZGxlci5nZXROb2RlQXQoaSk7dm9pZCAwPT09biYmKG49dGhpcy5zZWxlY3Rpb25IYW5kbGVyLmdldEVkZ2VBdChpKSksdGhpcy5zZWxlY3Rpb25IYW5kbGVyLmhvdmVyT2JqZWN0KG4pfX19LHtrZXk6Il9jaGVja1Nob3dQb3B1cCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jYW52YXMuX1hjb252ZXJ0RE9NdG9DYW52YXModC54KSxpPXRoaXMuY2FudmFzLl9ZY29udmVydERPTXRvQ2FudmFzKHQueSksbz17bGVmdDplLHRvcDppLHJpZ2h0OmUsYm90dG9tOml9LG49dm9pZCAwPT09dGhpcy5wb3B1cE9iaj92b2lkIDA6dGhpcy5wb3B1cE9iai5pZCxzPSExLHI9Im5vZGUiO2lmKHZvaWQgMD09PXRoaXMucG9wdXBPYmope2Zvcih2YXIgYT10aGlzLmJvZHkubm9kZUluZGljZXMsaD10aGlzLmJvZHkubm9kZXMsZD12b2lkIDAsdT1bXSxjPTA7YzxhLmxlbmd0aDtjKyspZD1oW2FbY11dLCEwPT09ZC5pc092ZXJsYXBwaW5nV2l0aChvKSYmdm9pZCAwIT09ZC5nZXRUaXRsZSgpJiZ1LnB1c2goYVtjXSk7dS5sZW5ndGg+MCYmKHRoaXMucG9wdXBPYmo9aFt1W3UubGVuZ3RoLTFdXSxzPSEwKX1pZih2b2lkIDA9PT10aGlzLnBvcHVwT2JqJiYhMT09PXMpe2Zvcih2YXIgcD10aGlzLmJvZHkuZWRnZUluZGljZXMsZj10aGlzLmJvZHkuZWRnZXMsbT12b2lkIDAsdj1bXSxnPTA7ZzxwLmxlbmd0aDtnKyspbT1mW3BbZ11dLCEwPT09bS5pc092ZXJsYXBwaW5nV2l0aChvKSYmITA9PT1tLmNvbm5lY3RlZCYmdm9pZCAwIT09bS5nZXRUaXRsZSgpJiZ2LnB1c2gocFtnXSk7di5sZW5ndGg+MCYmKHRoaXMucG9wdXBPYmo9Zlt2W3YubGVuZ3RoLTFdXSxyPSJlZGdlIil9dm9pZCAwIT09dGhpcy5wb3B1cE9iaj90aGlzLnBvcHVwT2JqLmlkIT09biYmKHZvaWQgMD09PXRoaXMucG9wdXAmJih0aGlzLnBvcHVwPW5ldyBsKHRoaXMuY2FudmFzLmZyYW1lKSksdGhpcy5wb3B1cC5wb3B1cFRhcmdldFR5cGU9cix0aGlzLnBvcHVwLnBvcHVwVGFyZ2V0SWQ9dGhpcy5wb3B1cE9iai5pZCx0aGlzLnBvcHVwLnNldFBvc2l0aW9uKHQueCszLHQueS01KSx0aGlzLnBvcHVwLnNldFRleHQodGhpcy5wb3B1cE9iai5nZXRUaXRsZSgpKSx0aGlzLnBvcHVwLnNob3coKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJzaG93UG9wdXAiLHRoaXMucG9wdXBPYmouaWQpKTp2b2lkIDAhPT10aGlzLnBvcHVwJiYodGhpcy5wb3B1cC5oaWRlKCksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiaGlkZVBvcHVwIikpfX0se2tleToiX2NoZWNrSGlkZVBvcHVwIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnNlbGVjdGlvbkhhbmRsZXIuX3BvaW50ZXJUb1Bvc2l0aW9uT2JqZWN0KHQpLGk9ITE7aWYoIm5vZGUiPT09dGhpcy5wb3B1cC5wb3B1cFRhcmdldFR5cGUpe2lmKHZvaWQgMCE9PXRoaXMuYm9keS5ub2Rlc1t0aGlzLnBvcHVwLnBvcHVwVGFyZ2V0SWRdJiYhMD09PShpPXRoaXMuYm9keS5ub2Rlc1t0aGlzLnBvcHVwLnBvcHVwVGFyZ2V0SWRdLmlzT3ZlcmxhcHBpbmdXaXRoKGUpKSl7dmFyIG89dGhpcy5zZWxlY3Rpb25IYW5kbGVyLmdldE5vZGVBdCh0KTtpPXZvaWQgMCE9PW8mJm8uaWQ9PT10aGlzLnBvcHVwLnBvcHVwVGFyZ2V0SWR9fWVsc2Ugdm9pZCAwPT09dGhpcy5zZWxlY3Rpb25IYW5kbGVyLmdldE5vZGVBdCh0KSYmdm9pZCAwIT09dGhpcy5ib2R5LmVkZ2VzW3RoaXMucG9wdXAucG9wdXBUYXJnZXRJZF0mJihpPXRoaXMuYm9keS5lZGdlc1t0aGlzLnBvcHVwLnBvcHVwVGFyZ2V0SWRdLmlzT3ZlcmxhcHBpbmdXaXRoKGUpKTshMT09PWkmJih0aGlzLnBvcHVwT2JqPXZvaWQgMCx0aGlzLnBvcHVwLmhpZGUoKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJoaWRlUG9wdXAiKSl9fV0pLHR9KCk7ZS5kZWZhdWx0PXV9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxMzUpLHM9byhuKSxyPWkoMTM2KSxhPW8ociksaD0oaSgxKSxpKDExMykpLGQ9aSgxMjApLGw9aSgxMTYpLHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7dmFyIG89dGhpczsoMCxzLmRlZmF1bHQpKHRoaXMsdCksdGhpcy5ib2R5PWUsdGhpcy5jYW52YXM9aSx0aGlzLmljb25zQ3JlYXRlZD0hMSx0aGlzLm5hdmlnYXRpb25IYW1tZXJzPVtdLHRoaXMuYm91bmRGdW5jdGlvbnM9e30sdGhpcy50b3VjaFRpbWU9MCx0aGlzLmFjdGl2YXRlZD0hMSx0aGlzLmJvZHkuZW1pdHRlci5vbigiYWN0aXZhdGUiLGZ1bmN0aW9uKCl7by5hY3RpdmF0ZWQ9ITAsby5jb25maWd1cmVLZXlib2FyZEJpbmRpbmdzKCl9KSx0aGlzLmJvZHkuZW1pdHRlci5vbigiZGVhY3RpdmF0ZSIsZnVuY3Rpb24oKXtvLmFjdGl2YXRlZD0hMSxvLmNvbmZpZ3VyZUtleWJvYXJkQmluZGluZ3MoKX0pLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJkZXN0cm95IixmdW5jdGlvbigpe3ZvaWQgMCE9PW8ua2V5Y2hhcm0mJm8ua2V5Y2hhcm0uZGVzdHJveSgpfSksdGhpcy5vcHRpb25zPXt9fXJldHVybigwLGEuZGVmYXVsdCkodCxbe2tleToic2V0T3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7dm9pZCAwIT09dCYmKHRoaXMub3B0aW9ucz10LHRoaXMuY3JlYXRlKCkpfX0se2tleToiY3JlYXRlIix2YWx1ZTpmdW5jdGlvbigpeyEwPT09dGhpcy5vcHRpb25zLm5hdmlnYXRpb25CdXR0b25zPyExPT09dGhpcy5pY29uc0NyZWF0ZWQmJnRoaXMubG9hZE5hdmlnYXRpb25FbGVtZW50cygpOiEwPT09dGhpcy5pY29uc0NyZWF0ZWQmJnRoaXMuY2xlYW5OYXZpZ2F0aW9uKCksdGhpcy5jb25maWd1cmVLZXlib2FyZEJpbmRpbmdzKCl9fSx7a2V5OiJjbGVhbk5hdmlnYXRpb24iLHZhbHVlOmZ1bmN0aW9uKCl7aWYoMCE9dGhpcy5uYXZpZ2F0aW9uSGFtbWVycy5sZW5ndGgpe2Zvcih2YXIgdD0wO3Q8dGhpcy5uYXZpZ2F0aW9uSGFtbWVycy5sZW5ndGg7dCsrKXRoaXMubmF2aWdhdGlvbkhhbW1lcnNbdF0uZGVzdHJveSgpO3RoaXMubmF2aWdhdGlvbkhhbW1lcnM9W119dGhpcy5uYXZpZ2F0aW9uRE9NJiZ0aGlzLm5hdmlnYXRpb25ET00ud3JhcHBlciYmdGhpcy5uYXZpZ2F0aW9uRE9NLndyYXBwZXIucGFyZW50Tm9kZSYmdGhpcy5uYXZpZ2F0aW9uRE9NLndyYXBwZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLm5hdmlnYXRpb25ET00ud3JhcHBlciksdGhpcy5pY29uc0NyZWF0ZWQ9ITF9fSx7a2V5OiJsb2FkTmF2aWdhdGlvbkVsZW1lbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5jbGVhbk5hdmlnYXRpb24oKSx0aGlzLm5hdmlnYXRpb25ET009e307dmFyIGU9WyJ1cCIsImRvd24iLCJsZWZ0IiwicmlnaHQiLCJ6b29tSW4iLCJ6b29tT3V0Iiwiem9vbUV4dGVuZHMiXSxpPVsiX21vdmVVcCIsIl9tb3ZlRG93biIsIl9tb3ZlTGVmdCIsIl9tb3ZlUmlnaHQiLCJfem9vbUluIiwiX3pvb21PdXQiLCJfZml0Il07dGhpcy5uYXZpZ2F0aW9uRE9NLndyYXBwZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5uYXZpZ2F0aW9uRE9NLndyYXBwZXIuY2xhc3NOYW1lPSJ2aXMtbmF2aWdhdGlvbiIsdGhpcy5jYW52YXMuZnJhbWUuYXBwZW5kQ2hpbGQodGhpcy5uYXZpZ2F0aW9uRE9NLndyYXBwZXIpO2Zvcih2YXIgbz0wO288ZS5sZW5ndGg7bysrKXt0aGlzLm5hdmlnYXRpb25ET01bZVtvXV09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5uYXZpZ2F0aW9uRE9NW2Vbb11dLmNsYXNzTmFtZT0idmlzLWJ1dHRvbiB2aXMtIitlW29dLHRoaXMubmF2aWdhdGlvbkRPTS53cmFwcGVyLmFwcGVuZENoaWxkKHRoaXMubmF2aWdhdGlvbkRPTVtlW29dXSk7dmFyIG49bmV3IGgodGhpcy5uYXZpZ2F0aW9uRE9NW2Vbb11dKTsiX2ZpdCI9PT1pW29dP2Qub25Ub3VjaChuLHRoaXMuX2ZpdC5iaW5kKHRoaXMpKTpkLm9uVG91Y2gobix0aGlzLmJpbmRUb1JlZHJhdy5iaW5kKHRoaXMsaVtvXSkpLHRoaXMubmF2aWdhdGlvbkhhbW1lcnMucHVzaChuKX12YXIgcz1uZXcgaCh0aGlzLmNhbnZhcy5mcmFtZSk7ZC5vblJlbGVhc2UocyxmdW5jdGlvbigpe3QuX3N0b3BNb3ZlbWVudCgpfSksdGhpcy5uYXZpZ2F0aW9uSGFtbWVycy5wdXNoKHMpLHRoaXMuaWNvbnNDcmVhdGVkPSEwfX0se2tleToiYmluZFRvUmVkcmF3Iix2YWx1ZTpmdW5jdGlvbih0KXt2b2lkIDA9PT10aGlzLmJvdW5kRnVuY3Rpb25zW3RdJiYodGhpcy5ib3VuZEZ1bmN0aW9uc1t0XT10aGlzW3RdLmJpbmQodGhpcyksdGhpcy5ib2R5LmVtaXR0ZXIub24oImluaXRSZWRyYXciLHRoaXMuYm91bmRGdW5jdGlvbnNbdF0pLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9zdGFydFJlbmRlcmluZyIpKX19LHtrZXk6InVuYmluZEZyb21SZWRyYXciLHZhbHVlOmZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXRoaXMuYm91bmRGdW5jdGlvbnNbdF0mJih0aGlzLmJvZHkuZW1pdHRlci5vZmYoImluaXRSZWRyYXciLHRoaXMuYm91bmRGdW5jdGlvbnNbdF0pLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9zdG9wUmVuZGVyaW5nIiksZGVsZXRlIHRoaXMuYm91bmRGdW5jdGlvbnNbdF0pfX0se2tleToiX2ZpdCIsdmFsdWU6ZnVuY3Rpb24oKXsobmV3IERhdGUpLnZhbHVlT2YoKS10aGlzLnRvdWNoVGltZT43MDAmJih0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJmaXQiLHtkdXJhdGlvbjo3MDB9KSx0aGlzLnRvdWNoVGltZT0obmV3IERhdGUpLnZhbHVlT2YoKSl9fSx7a2V5OiJfc3RvcE1vdmVtZW50Iix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLmJvdW5kRnVuY3Rpb25zKXRoaXMuYm91bmRGdW5jdGlvbnMuaGFzT3duUHJvcGVydHkodCkmJih0aGlzLmJvZHkuZW1pdHRlci5vZmYoImluaXRSZWRyYXciLHRoaXMuYm91bmRGdW5jdGlvbnNbdF0pLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9zdG9wUmVuZGVyaW5nIikpO3RoaXMuYm91bmRGdW5jdGlvbnM9e319fSx7a2V5OiJfbW92ZVVwIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYm9keS52aWV3LnRyYW5zbGF0aW9uLnkrPXRoaXMub3B0aW9ucy5rZXlib2FyZC5zcGVlZC55fX0se2tleToiX21vdmVEb3duIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYm9keS52aWV3LnRyYW5zbGF0aW9uLnktPXRoaXMub3B0aW9ucy5rZXlib2FyZC5zcGVlZC55fX0se2tleToiX21vdmVMZWZ0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYm9keS52aWV3LnRyYW5zbGF0aW9uLngrPXRoaXMub3B0aW9ucy5rZXlib2FyZC5zcGVlZC54fX0se2tleToiX21vdmVSaWdodCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmJvZHkudmlldy50cmFuc2xhdGlvbi54LT10aGlzLm9wdGlvbnMua2V5Ym9hcmQuc3BlZWQueH19LHtrZXk6Il96b29tSW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5ib2R5LnZpZXcuc2NhbGUsZT10aGlzLmJvZHkudmlldy5zY2FsZSooMSt0aGlzLm9wdGlvbnMua2V5Ym9hcmQuc3BlZWQuem9vbSksaT10aGlzLmJvZHkudmlldy50cmFuc2xhdGlvbixvPWUvdCxuPSgxLW8pKnRoaXMuY2FudmFzLmNhbnZhc1ZpZXdDZW50ZXIueCtpLngqbyxzPSgxLW8pKnRoaXMuY2FudmFzLmNhbnZhc1ZpZXdDZW50ZXIueStpLnkqbzt0aGlzLmJvZHkudmlldy5zY2FsZT1lLHRoaXMuYm9keS52aWV3LnRyYW5zbGF0aW9uPXt4Om4seTpzfSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJ6b29tIix7ZGlyZWN0aW9uOiIrIixzY2FsZTp0aGlzLmJvZHkudmlldy5zY2FsZSxwb2ludGVyOm51bGx9KX19LHtrZXk6Il96b29tT3V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuYm9keS52aWV3LnNjYWxlLGU9dGhpcy5ib2R5LnZpZXcuc2NhbGUvKDErdGhpcy5vcHRpb25zLmtleWJvYXJkLnNwZWVkLnpvb20pLGk9dGhpcy5ib2R5LnZpZXcudHJhbnNsYXRpb24sbz1lL3Qsbj0oMS1vKSp0aGlzLmNhbnZhcy5jYW52YXNWaWV3Q2VudGVyLngraS54Km8scz0oMS1vKSp0aGlzLmNhbnZhcy5jYW52YXNWaWV3Q2VudGVyLnkraS55Km87dGhpcy5ib2R5LnZpZXcuc2NhbGU9ZSx0aGlzLmJvZHkudmlldy50cmFuc2xhdGlvbj17eDpuLHk6c30sdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiem9vbSIse2RpcmVjdGlvbjoiLSIsc2NhbGU6dGhpcy5ib2R5LnZpZXcuc2NhbGUscG9pbnRlcjpudWxsfSl9fSx7a2V5OiJjb25maWd1cmVLZXlib2FyZEJpbmRpbmdzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dm9pZCAwIT09dGhpcy5rZXljaGFybSYmdGhpcy5rZXljaGFybS5kZXN0cm95KCksITA9PT10aGlzLm9wdGlvbnMua2V5Ym9hcmQuZW5hYmxlZCYmKCEwPT09dGhpcy5vcHRpb25zLmtleWJvYXJkLmJpbmRUb1dpbmRvdz90aGlzLmtleWNoYXJtPWwoe2NvbnRhaW5lcjp3aW5kb3cscHJldmVudERlZmF1bHQ6ITB9KTp0aGlzLmtleWNoYXJtPWwoe2NvbnRhaW5lcjp0aGlzLmNhbnZhcy5mcmFtZSxwcmV2ZW50RGVmYXVsdDohMH0pLHRoaXMua2V5Y2hhcm0ucmVzZXQoKSwhMD09PXRoaXMuYWN0aXZhdGVkJiYodGhpcy5rZXljaGFybS5iaW5kKCJ1cCIsZnVuY3Rpb24oKXt0LmJpbmRUb1JlZHJhdygiX21vdmVVcCIpfSwia2V5ZG93biIpLHRoaXMua2V5Y2hhcm0uYmluZCgiZG93biIsZnVuY3Rpb24oKXt0LmJpbmRUb1JlZHJhdygiX21vdmVEb3duIil9LCJrZXlkb3duIiksdGhpcy5rZXljaGFybS5iaW5kKCJsZWZ0IixmdW5jdGlvbigpe3QuYmluZFRvUmVkcmF3KCJfbW92ZUxlZnQiKX0sImtleWRvd24iKSx0aGlzLmtleWNoYXJtLmJpbmQoInJpZ2h0IixmdW5jdGlvbigpe3QuYmluZFRvUmVkcmF3KCJfbW92ZVJpZ2h0Iil9LCJrZXlkb3duIiksdGhpcy5rZXljaGFybS5iaW5kKCI9IixmdW5jdGlvbigpe3QuYmluZFRvUmVkcmF3KCJfem9vbUluIil9LCJrZXlkb3duIiksdGhpcy5rZXljaGFybS5iaW5kKCJudW0rIixmdW5jdGlvbigpe3QuYmluZFRvUmVkcmF3KCJfem9vbUluIil9LCJrZXlkb3duIiksdGhpcy5rZXljaGFybS5iaW5kKCJudW0tIixmdW5jdGlvbigpe3QuYmluZFRvUmVkcmF3KCJfem9vbU91dCIpfSwia2V5ZG93biIpLHRoaXMua2V5Y2hhcm0uYmluZCgiLSIsZnVuY3Rpb24oKXt0LmJpbmRUb1JlZHJhdygiX3pvb21PdXQiKX0sImtleWRvd24iKSx0aGlzLmtleWNoYXJtLmJpbmQoIlsiLGZ1bmN0aW9uKCl7dC5iaW5kVG9SZWRyYXcoIl96b29tT3V0Iil9LCJrZXlkb3duIiksdGhpcy5rZXljaGFybS5iaW5kKCJdIixmdW5jdGlvbigpe3QuYmluZFRvUmVkcmF3KCJfem9vbUluIil9LCJrZXlkb3duIiksdGhpcy5rZXljaGFybS5iaW5kKCJwYWdldXAiLGZ1bmN0aW9uKCl7dC5iaW5kVG9SZWRyYXcoIl96b29tSW4iKX0sImtleWRvd24iKSx0aGlzLmtleWNoYXJtLmJpbmQoInBhZ2Vkb3duIixmdW5jdGlvbigpe3QuYmluZFRvUmVkcmF3KCJfem9vbU91dCIpfSwia2V5ZG93biIpLHRoaXMua2V5Y2hhcm0uYmluZCgidXAiLGZ1bmN0aW9uKCl7dC51bmJpbmRGcm9tUmVkcmF3KCJfbW92ZVVwIil9LCJrZXl1cCIpLHRoaXMua2V5Y2hhcm0uYmluZCgiZG93biIsZnVuY3Rpb24oKXt0LnVuYmluZEZyb21SZWRyYXcoIl9tb3ZlRG93biIpfSwia2V5dXAiKSx0aGlzLmtleWNoYXJtLmJpbmQoImxlZnQiLGZ1bmN0aW9uKCl7dC51bmJpbmRGcm9tUmVkcmF3KCJfbW92ZUxlZnQiKX0sImtleXVwIiksdGhpcy5rZXljaGFybS5iaW5kKCJyaWdodCIsZnVuY3Rpb24oKXt0LnVuYmluZEZyb21SZWRyYXcoIl9tb3ZlUmlnaHQiKX0sImtleXVwIiksdGhpcy5rZXljaGFybS5iaW5kKCI9IixmdW5jdGlvbigpe3QudW5iaW5kRnJvbVJlZHJhdygiX3pvb21JbiIpfSwia2V5dXAiKSx0aGlzLmtleWNoYXJtLmJpbmQoIm51bSsiLGZ1bmN0aW9uKCl7dC51bmJpbmRGcm9tUmVkcmF3KCJfem9vbUluIil9LCJrZXl1cCIpLHRoaXMua2V5Y2hhcm0uYmluZCgibnVtLSIsZnVuY3Rpb24oKXt0LnVuYmluZEZyb21SZWRyYXcoIl96b29tT3V0Iil9LCJrZXl1cCIpLHRoaXMua2V5Y2hhcm0uYmluZCgiLSIsZnVuY3Rpb24oKXt0LnVuYmluZEZyb21SZWRyYXcoIl96b29tT3V0Iil9LCJrZXl1cCIpLHRoaXMua2V5Y2hhcm0uYmluZCgiWyIsZnVuY3Rpb24oKXt0LnVuYmluZEZyb21SZWRyYXcoIl96b29tT3V0Iil9LCJrZXl1cCIpLHRoaXMua2V5Y2hhcm0uYmluZCgiXSIsZnVuY3Rpb24oKXt0LnVuYmluZEZyb21SZWRyYXcoIl96b29tSW4iKX0sImtleXVwIiksdGhpcy5rZXljaGFybS5iaW5kKCJwYWdldXAiLGZ1bmN0aW9uKCl7dC51bmJpbmRGcm9tUmVkcmF3KCJfem9vbUluIil9LCJrZXl1cCIpLHRoaXMua2V5Y2hhcm0uYmluZCgicGFnZWRvd24iLGZ1bmN0aW9uKCl7dC51bmJpbmRGcm9tUmVkcmF3KCJfem9vbU91dCIpfSwia2V5dXAiKSkpfX1dKSx0fSgpO2UuZGVmYXVsdD11fSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoMTM1KSxzPW8obikscj1pKDEzNiksYT1vKHIpLGg9aSgxNjkpLmRlZmF1bHQsZD1pKDIwMikuZGVmYXVsdCxsPWkoMSksdT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXt2YXIgbz10aGlzOygwLHMuZGVmYXVsdCkodGhpcyx0KSx0aGlzLmJvZHk9ZSx0aGlzLmNhbnZhcz1pLHRoaXMuc2VsZWN0aW9uT2JqPXtub2RlczpbXSxlZGdlczpbXX0sdGhpcy5ob3Zlck9iaj17bm9kZXM6e30sZWRnZXM6e319LHRoaXMub3B0aW9ucz17fSx0aGlzLmRlZmF1bHRPcHRpb25zPXttdWx0aXNlbGVjdDohMSxzZWxlY3RhYmxlOiEwLHNlbGVjdENvbm5lY3RlZEVkZ2VzOiEwLGhvdmVyQ29ubmVjdGVkRWRnZXM6ITB9LGwuZXh0ZW5kKHRoaXMub3B0aW9ucyx0aGlzLmRlZmF1bHRPcHRpb25zKSx0aGlzLmJvZHkuZW1pdHRlci5vbigiX2RhdGFDaGFuZ2VkIixmdW5jdGlvbigpe28udXBkYXRlU2VsZWN0aW9uKCl9KX1yZXR1cm4oMCxhLmRlZmF1bHQpKHQsW3trZXk6InNldE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQpe3ZhciBlPVsibXVsdGlzZWxlY3QiLCJob3ZlckNvbm5lY3RlZEVkZ2VzIiwic2VsZWN0YWJsZSIsInNlbGVjdENvbm5lY3RlZEVkZ2VzIl07bC5zZWxlY3RpdmVEZWVwRXh0ZW5kKGUsdGhpcy5vcHRpb25zLHQpfX19LHtrZXk6InNlbGVjdE9uUG9pbnQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSExO2lmKCEwPT09dGhpcy5vcHRpb25zLnNlbGVjdGFibGUpe3ZhciBpPXRoaXMuZ2V0Tm9kZUF0KHQpfHx0aGlzLmdldEVkZ2VBdCh0KTt0aGlzLnVuc2VsZWN0QWxsKCksdm9pZCAwIT09aSYmKGU9dGhpcy5zZWxlY3RPYmplY3QoaSkpLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9yZXF1ZXN0UmVkcmF3Iil9cmV0dXJuIGV9fSx7a2V5OiJzZWxlY3RBZGRpdGlvbmFsT25Qb2ludCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9ITE7aWYoITA9PT10aGlzLm9wdGlvbnMuc2VsZWN0YWJsZSl7dmFyIGk9dGhpcy5nZXROb2RlQXQodCl8fHRoaXMuZ2V0RWRnZUF0KHQpO3ZvaWQgMCE9PWkmJihlPSEwLCEwPT09aS5pc1NlbGVjdGVkKCk/dGhpcy5kZXNlbGVjdE9iamVjdChpKTp0aGlzLnNlbGVjdE9iamVjdChpKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfcmVxdWVzdFJlZHJhdyIpKX1yZXR1cm4gZX19LHtrZXk6Il9nZW5lcmF0ZUNsaWNrRXZlbnQiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLG8pe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdJiZhcmd1bWVudHNbNF0scz12b2lkIDA7cz0hMD09PW4/e25vZGVzOltdLGVkZ2VzOltdfTp0aGlzLmdldFNlbGVjdGlvbigpLHMucG9pbnRlcj17RE9NOnt4OmkueCx5OmkueX0sY2FudmFzOnRoaXMuY2FudmFzLkRPTXRvQ2FudmFzKGkpfSxzLmV2ZW50PWUsdm9pZCAwIT09byYmKHMucHJldmlvdXNTZWxlY3Rpb249byksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCh0LHMpfX0se2tleToic2VsZWN0T2JqZWN0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5vcHRpb25zLnNlbGVjdENvbm5lY3RlZEVkZ2VzO3JldHVybiB2b2lkIDAhPT10JiYodCBpbnN0YW5jZW9mIGgmJiEwPT09ZSYmdGhpcy5fc2VsZWN0Q29ubmVjdGVkRWRnZXModCksdC5zZWxlY3QoKSx0aGlzLl9hZGRUb1NlbGVjdGlvbih0KSwhMCl9fSx7a2V5OiJkZXNlbGVjdE9iamVjdCIsdmFsdWU6ZnVuY3Rpb24odCl7ITA9PT10LmlzU2VsZWN0ZWQoKSYmKHQuc2VsZWN0ZWQ9ITEsdGhpcy5fcmVtb3ZlRnJvbVNlbGVjdGlvbih0KSl9fSx7a2V5OiJfZ2V0QWxsTm9kZXNPdmVybGFwcGluZ1dpdGgiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxpPXRoaXMuYm9keS5ub2RlcyxvPTA7bzx0aGlzLmJvZHkubm9kZUluZGljZXMubGVuZ3RoO28rKyl7dmFyIG49dGhpcy5ib2R5Lm5vZGVJbmRpY2VzW29dO2lbbl0uaXNPdmVybGFwcGluZ1dpdGgodCkmJmUucHVzaChuKX1yZXR1cm4gZX19LHtrZXk6Il9wb2ludGVyVG9Qb3NpdGlvbk9iamVjdCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jYW52YXMuRE9NdG9DYW52YXModCk7cmV0dXJue2xlZnQ6ZS54LTEsdG9wOmUueSsxLHJpZ2h0OmUueCsxLGJvdHRvbTplLnktMX19fSx7a2V5OiJnZXROb2RlQXQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT10aGlzLl9wb2ludGVyVG9Qb3NpdGlvbk9iamVjdCh0KSxvPXRoaXMuX2dldEFsbE5vZGVzT3ZlcmxhcHBpbmdXaXRoKGkpO3JldHVybiBvLmxlbmd0aD4wPyEwPT09ZT90aGlzLmJvZHkubm9kZXNbb1tvLmxlbmd0aC0xXV06b1tvLmxlbmd0aC0xXTp2b2lkIDB9fSx7a2V5OiJfZ2V0RWRnZXNPdmVybGFwcGluZ1dpdGgiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXRoaXMuYm9keS5lZGdlcyxvPTA7bzx0aGlzLmJvZHkuZWRnZUluZGljZXMubGVuZ3RoO28rKyl7dmFyIG49dGhpcy5ib2R5LmVkZ2VJbmRpY2VzW29dO2lbbl0uaXNPdmVybGFwcGluZ1dpdGgodCkmJmUucHVzaChuKX19fSx7a2V5OiJfZ2V0QWxsRWRnZXNPdmVybGFwcGluZ1dpdGgiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiB0aGlzLl9nZXRFZGdlc092ZXJsYXBwaW5nV2l0aCh0LGUpLGV9fSx7a2V5OiJnZXRFZGdlQXQiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9dGhpcy5jYW52YXMuRE9NdG9DYW52YXModCksbz0xMCxuPW51bGwscz10aGlzLmJvZHkuZWRnZXMscj0wO3I8dGhpcy5ib2R5LmVkZ2VJbmRpY2VzLmxlbmd0aDtyKyspe3ZhciBhPXRoaXMuYm9keS5lZGdlSW5kaWNlc1tyXSxoPXNbYV07aWYoaC5jb25uZWN0ZWQpe3ZhciBkPWguZnJvbS54LGw9aC5mcm9tLnksdT1oLnRvLngsYz1oLnRvLnkscD1oLmVkZ2VUeXBlLmdldERpc3RhbmNlVG9FZGdlKGQsbCx1LGMsaS54LGkueSk7cDxvJiYobj1hLG89cCl9fXJldHVybiBudWxsIT09bj8hMD09PWU/dGhpcy5ib2R5LmVkZ2VzW25dOm46dm9pZCAwfX0se2tleToiX2FkZFRvU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbih0KXt0IGluc3RhbmNlb2YgaD90aGlzLnNlbGVjdGlvbk9iai5ub2Rlc1t0LmlkXT10OnRoaXMuc2VsZWN0aW9uT2JqLmVkZ2VzW3QuaWRdPXR9fSx7a2V5OiJfYWRkVG9Ib3ZlciIsdmFsdWU6ZnVuY3Rpb24odCl7dCBpbnN0YW5jZW9mIGg/dGhpcy5ob3Zlck9iai5ub2Rlc1t0LmlkXT10OnRoaXMuaG92ZXJPYmouZWRnZXNbdC5pZF09dH19LHtrZXk6Il9yZW1vdmVGcm9tU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbih0KXt0IGluc3RhbmNlb2YgaD8oZGVsZXRlIHRoaXMuc2VsZWN0aW9uT2JqLm5vZGVzW3QuaWRdLHRoaXMuX3Vuc2VsZWN0Q29ubmVjdGVkRWRnZXModCkpOmRlbGV0ZSB0aGlzLnNlbGVjdGlvbk9iai5lZGdlc1t0LmlkXX19LHtrZXk6InVuc2VsZWN0QWxsIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLnNlbGVjdGlvbk9iai5ub2Rlcyl0aGlzLnNlbGVjdGlvbk9iai5ub2Rlcy5oYXNPd25Qcm9wZXJ0eSh0KSYmdGhpcy5zZWxlY3Rpb25PYmoubm9kZXNbdF0udW5zZWxlY3QoKTtmb3IodmFyIGUgaW4gdGhpcy5zZWxlY3Rpb25PYmouZWRnZXMpdGhpcy5zZWxlY3Rpb25PYmouZWRnZXMuaGFzT3duUHJvcGVydHkoZSkmJnRoaXMuc2VsZWN0aW9uT2JqLmVkZ2VzW2VdLnVuc2VsZWN0KCk7dGhpcy5zZWxlY3Rpb25PYmo9e25vZGVzOnt9LGVkZ2VzOnt9fX19LHtrZXk6Il9nZXRTZWxlY3RlZE5vZGVDb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD0wO2Zvcih2YXIgZSBpbiB0aGlzLnNlbGVjdGlvbk9iai5ub2Rlcyl0aGlzLnNlbGVjdGlvbk9iai5ub2Rlcy5oYXNPd25Qcm9wZXJ0eShlKSYmKHQrPTEpO3JldHVybiB0fX0se2tleToiX2dldFNlbGVjdGVkTm9kZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5zZWxlY3Rpb25PYmoubm9kZXMpaWYodGhpcy5zZWxlY3Rpb25PYmoubm9kZXMuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIHRoaXMuc2VsZWN0aW9uT2JqLm5vZGVzW3RdfX0se2tleToiX2dldFNlbGVjdGVkRWRnZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5zZWxlY3Rpb25PYmouZWRnZXMpaWYodGhpcy5zZWxlY3Rpb25PYmouZWRnZXMuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIHRoaXMuc2VsZWN0aW9uT2JqLmVkZ2VzW3RdfX0se2tleToiX2dldFNlbGVjdGVkRWRnZUNvdW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PTA7Zm9yKHZhciBlIGluIHRoaXMuc2VsZWN0aW9uT2JqLmVkZ2VzKXRoaXMuc2VsZWN0aW9uT2JqLmVkZ2VzLmhhc093blByb3BlcnR5KGUpJiYodCs9MSk7cmV0dXJuIHR9fSx7a2V5OiJfZ2V0U2VsZWN0ZWRPYmplY3RDb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD0wO2Zvcih2YXIgZSBpbiB0aGlzLnNlbGVjdGlvbk9iai5ub2Rlcyl0aGlzLnNlbGVjdGlvbk9iai5ub2Rlcy5oYXNPd25Qcm9wZXJ0eShlKSYmKHQrPTEpO2Zvcih2YXIgaSBpbiB0aGlzLnNlbGVjdGlvbk9iai5lZGdlcyl0aGlzLnNlbGVjdGlvbk9iai5lZGdlcy5oYXNPd25Qcm9wZXJ0eShpKSYmKHQrPTEpO3JldHVybiB0fX0se2tleToiX3NlbGVjdGlvbklzRW1wdHkiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuc2VsZWN0aW9uT2JqLm5vZGVzKWlmKHRoaXMuc2VsZWN0aW9uT2JqLm5vZGVzLmhhc093blByb3BlcnR5KHQpKXJldHVybiExO2Zvcih2YXIgZSBpbiB0aGlzLnNlbGVjdGlvbk9iai5lZGdlcylpZih0aGlzLnNlbGVjdGlvbk9iai5lZGdlcy5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4hMTtyZXR1cm4hMH19LHtrZXk6Il9jbHVzdGVySW5TZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuc2VsZWN0aW9uT2JqLm5vZGVzKWlmKHRoaXMuc2VsZWN0aW9uT2JqLm5vZGVzLmhhc093blByb3BlcnR5KHQpJiZ0aGlzLnNlbGVjdGlvbk9iai5ub2Rlc1t0XS5jbHVzdGVyU2l6ZT4xKXJldHVybiEwO3JldHVybiExfX0se2tleToiX3NlbGVjdENvbm5lY3RlZEVkZ2VzIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQuZWRnZXMubGVuZ3RoO2UrKyl7dmFyIGk9dC5lZGdlc1tlXTtpLnNlbGVjdCgpLHRoaXMuX2FkZFRvU2VsZWN0aW9uKGkpfX19LHtrZXk6Il9ob3ZlckNvbm5lY3RlZEVkZ2VzIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQuZWRnZXMubGVuZ3RoO2UrKyl7dmFyIGk9dC5lZGdlc1tlXTtpLmhvdmVyPSEwLHRoaXMuX2FkZFRvSG92ZXIoaSl9fX0se2tleToiX3Vuc2VsZWN0Q29ubmVjdGVkRWRnZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5lZGdlcy5sZW5ndGg7ZSsrKXt2YXIgaT10LmVkZ2VzW2VdO2kudW5zZWxlY3QoKSx0aGlzLl9yZW1vdmVGcm9tU2VsZWN0aW9uKGkpfX19LHtrZXk6ImJsdXJPYmplY3QiLHZhbHVlOmZ1bmN0aW9uKHQpeyEwPT09dC5ob3ZlciYmKHQuaG92ZXI9ITEsdCBpbnN0YW5jZW9mIGg/dGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiYmx1ck5vZGUiLHtub2RlOnQuaWR9KTp0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJibHVyRWRnZSIse2VkZ2U6dC5pZH0pKX19LHtrZXk6ImhvdmVyT2JqZWN0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hMTtmb3IodmFyIGkgaW4gdGhpcy5ob3Zlck9iai5ub2Rlcyl0aGlzLmhvdmVyT2JqLm5vZGVzLmhhc093blByb3BlcnR5KGkpJiYodm9pZCAwPT09dHx8dCBpbnN0YW5jZW9mIGgmJnQuaWQhPWl8fHQgaW5zdGFuY2VvZiBkKSYmKHRoaXMuYmx1ck9iamVjdCh0aGlzLmhvdmVyT2JqLm5vZGVzW2ldKSxkZWxldGUgdGhpcy5ob3Zlck9iai5ub2Rlc1tpXSxlPSEwKTtmb3IodmFyIG8gaW4gdGhpcy5ob3Zlck9iai5lZGdlcyl0aGlzLmhvdmVyT2JqLmVkZ2VzLmhhc093blByb3BlcnR5KG8pJiYoITA9PT1lPyh0aGlzLmhvdmVyT2JqLmVkZ2VzW29dLmhvdmVyPSExLGRlbGV0ZSB0aGlzLmhvdmVyT2JqLmVkZ2VzW29dKToodm9pZCAwPT09dHx8dCBpbnN0YW5jZW9mIGQmJnQuaWQhPW98fHQgaW5zdGFuY2VvZiBoJiYhdC5ob3ZlcikmJih0aGlzLmJsdXJPYmplY3QodGhpcy5ob3Zlck9iai5lZGdlc1tvXSksZGVsZXRlIHRoaXMuaG92ZXJPYmouZWRnZXNbb10sZT0hMCkpO3ZvaWQgMCE9PXQmJighMT09PXQuaG92ZXImJih0LmhvdmVyPSEwLHRoaXMuX2FkZFRvSG92ZXIodCksZT0hMCx0IGluc3RhbmNlb2YgaD90aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJob3Zlck5vZGUiLHtub2RlOnQuaWR9KTp0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJob3ZlckVkZ2UiLHtlZGdlOnQuaWR9KSksdCBpbnN0YW5jZW9mIGgmJiEwPT09dGhpcy5vcHRpb25zLmhvdmVyQ29ubmVjdGVkRWRnZXMmJnRoaXMuX2hvdmVyQ29ubmVjdGVkRWRnZXModCkpLCEwPT09ZSYmdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX3JlcXVlc3RSZWRyYXciKX19LHtrZXk6ImdldFNlbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57bm9kZXM6dGhpcy5nZXRTZWxlY3RlZE5vZGVzKCksZWRnZXM6dGhpcy5nZXRTZWxlY3RlZEVkZ2VzKCl9fX0se2tleToiZ2V0U2VsZWN0ZWROb2RlcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1bXTtpZighMD09PXRoaXMub3B0aW9ucy5zZWxlY3RhYmxlKWZvcih2YXIgZSBpbiB0aGlzLnNlbGVjdGlvbk9iai5ub2Rlcyl0aGlzLnNlbGVjdGlvbk9iai5ub2Rlcy5oYXNPd25Qcm9wZXJ0eShlKSYmdC5wdXNoKHRoaXMuc2VsZWN0aW9uT2JqLm5vZGVzW2VdLmlkKTtyZXR1cm4gdH19LHtrZXk6ImdldFNlbGVjdGVkRWRnZXMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9W107aWYoITA9PT10aGlzLm9wdGlvbnMuc2VsZWN0YWJsZSlmb3IodmFyIGUgaW4gdGhpcy5zZWxlY3Rpb25PYmouZWRnZXMpdGhpcy5zZWxlY3Rpb25PYmouZWRnZXMuaGFzT3duUHJvcGVydHkoZSkmJnQucHVzaCh0aGlzLnNlbGVjdGlvbk9iai5lZGdlc1tlXS5pZCk7cmV0dXJuIHR9fSx7a2V5OiJzZXRTZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxpPXZvaWQgMCxvPXZvaWQgMDtpZighdHx8IXQubm9kZXMmJiF0LmVkZ2VzKXRocm93IlNlbGVjdGlvbiBtdXN0IGJlIGFuIG9iamVjdCB3aXRoIG5vZGVzIGFuZC9vciBlZGdlcyBwcm9wZXJ0aWVzIjtpZigoZS51bnNlbGVjdEFsbHx8dm9pZCAwPT09ZS51bnNlbGVjdEFsbCkmJnRoaXMudW5zZWxlY3RBbGwoKSx0Lm5vZGVzKWZvcihpPTA7aTx0Lm5vZGVzLmxlbmd0aDtpKyspe289dC5ub2Rlc1tpXTt2YXIgbj10aGlzLmJvZHkubm9kZXNbb107aWYoIW4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ05vZGUgd2l0aCBpZCAiJytvKyciIG5vdCBmb3VuZCcpO3RoaXMuc2VsZWN0T2JqZWN0KG4sZS5oaWdobGlnaHRFZGdlcyl9aWYodC5lZGdlcylmb3IoaT0wO2k8dC5lZGdlcy5sZW5ndGg7aSsrKXtvPXQuZWRnZXNbaV07dmFyIHM9dGhpcy5ib2R5LmVkZ2VzW29dO2lmKCFzKXRocm93IG5ldyBSYW5nZUVycm9yKCdFZGdlIHdpdGggaWQgIicrbysnIiBub3QgZm91bmQnKTt0aGlzLnNlbGVjdE9iamVjdChzKX10aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfcmVxdWVzdFJlZHJhdyIpfX0se2tleToic2VsZWN0Tm9kZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV07aWYoIXR8fHZvaWQgMD09PXQubGVuZ3RoKXRocm93IlNlbGVjdGlvbiBtdXN0IGJlIGFuIGFycmF5IHdpdGggaWRzIjt0aGlzLnNldFNlbGVjdGlvbih7bm9kZXM6dH0se2hpZ2hsaWdodEVkZ2VzOmV9KX19LHtrZXk6InNlbGVjdEVkZ2VzIix2YWx1ZTpmdW5jdGlvbih0KXtpZighdHx8dm9pZCAwPT09dC5sZW5ndGgpdGhyb3ciU2VsZWN0aW9uIG11c3QgYmUgYW4gYXJyYXkgd2l0aCBpZHMiO3RoaXMuc2V0U2VsZWN0aW9uKHtlZGdlczp0fSl9fSx7a2V5OiJ1cGRhdGVTZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuc2VsZWN0aW9uT2JqLm5vZGVzKXRoaXMuc2VsZWN0aW9uT2JqLm5vZGVzLmhhc093blByb3BlcnR5KHQpJiYodGhpcy5ib2R5Lm5vZGVzLmhhc093blByb3BlcnR5KHQpfHxkZWxldGUgdGhpcy5zZWxlY3Rpb25PYmoubm9kZXNbdF0pO2Zvcih2YXIgZSBpbiB0aGlzLnNlbGVjdGlvbk9iai5lZGdlcyl0aGlzLnNlbGVjdGlvbk9iai5lZGdlcy5oYXNPd25Qcm9wZXJ0eShlKSYmKHRoaXMuYm9keS5lZGdlcy5oYXNPd25Qcm9wZXJ0eShlKXx8ZGVsZXRlIHRoaXMuc2VsZWN0aW9uT2JqLmVkZ2VzW2VdKX19XSksdH0oKTtlLmRlZmF1bHQ9dX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1pKDU4KSxzPW8obikscj1pKDkwKSxhPW8ociksaD1pKDYyKSxkPW8oaCksbD1pKDEzNSksdT1vKGwpLGM9aSgxMzYpLHA9byhjKSxmPWkoMSksbT1pKDExMyksdj1pKDEyMCksZz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpLG8pe3ZhciBuPXRoaXM7KDAsdS5kZWZhdWx0KSh0aGlzLHQpLHRoaXMuYm9keT1lLHRoaXMuY2FudmFzPWksdGhpcy5zZWxlY3Rpb25IYW5kbGVyPW8sdGhpcy5lZGl0TW9kZT0hMSx0aGlzLm1hbmlwdWxhdGlvbkRpdj12b2lkIDAsdGhpcy5lZGl0TW9kZURpdj12b2lkIDAsdGhpcy5jbG9zZURpdj12b2lkIDAsdGhpcy5tYW5pcHVsYXRpb25IYW1tZXJzPVtdLHRoaXMudGVtcG9yYXJ5VUlGdW5jdGlvbnM9e30sdGhpcy50ZW1wb3JhcnlFdmVudEZ1bmN0aW9ucz1bXSx0aGlzLnRvdWNoVGltZT0wLHRoaXMudGVtcG9yYXJ5SWRzPXtub2RlczpbXSxlZGdlczpbXX0sdGhpcy5ndWlFbmFibGVkPSExLHRoaXMuaW5Nb2RlPSExLHRoaXMuc2VsZWN0ZWRDb250cm9sTm9kZT12b2lkIDAsdGhpcy5vcHRpb25zPXt9LHRoaXMuZGVmYXVsdE9wdGlvbnM9e2VuYWJsZWQ6ITEsaW5pdGlhbGx5QWN0aXZlOiExLGFkZE5vZGU6ITAsYWRkRWRnZTohMCxlZGl0Tm9kZTp2b2lkIDAsZWRpdEVkZ2U6ITAsZGVsZXRlTm9kZTohMCxkZWxldGVFZGdlOiEwLGNvbnRyb2xOb2RlU3R5bGU6e3NoYXBlOiJkb3QiLHNpemU6Nixjb2xvcjp7YmFja2dyb3VuZDoiI2ZmMDAwMCIsYm9yZGVyOiIjM2MzYzNjIixoaWdobGlnaHQ6e2JhY2tncm91bmQ6IiMwN2Y5NjgiLGJvcmRlcjoiIzNjM2MzYyJ9fSxib3JkZXJXaWR0aDoyLGJvcmRlcldpZHRoU2VsZWN0ZWQ6Mn19LGYuZXh0ZW5kKHRoaXMub3B0aW9ucyx0aGlzLmRlZmF1bHRPcHRpb25zKSx0aGlzLmJvZHkuZW1pdHRlci5vbigiZGVzdHJveSIsZnVuY3Rpb24oKXtuLl9jbGVhbigpfSksdGhpcy5ib2R5LmVtaXR0ZXIub24oIl9kYXRhQ2hhbmdlZCIsdGhpcy5fcmVzdG9yZS5iaW5kKHRoaXMpKSx0aGlzLmJvZHkuZW1pdHRlci5vbigiX3Jlc2V0RGF0YSIsdGhpcy5fcmVzdG9yZS5iaW5kKHRoaXMpKX1yZXR1cm4oMCxwLmRlZmF1bHQpKHQsW3trZXk6Il9yZXN0b3JlIix2YWx1ZTpmdW5jdGlvbigpeyExIT09dGhpcy5pbk1vZGUmJighMD09PXRoaXMub3B0aW9ucy5pbml0aWFsbHlBY3RpdmU/dGhpcy5lbmFibGVFZGl0TW9kZSgpOnRoaXMuZGlzYWJsZUVkaXRNb2RlKCkpfX0se2tleToic2V0T3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZvaWQgMCE9PWUmJih2b2lkIDAhPT1lLmxvY2FsZT90aGlzLm9wdGlvbnMubG9jYWxlPWUubG9jYWxlOnRoaXMub3B0aW9ucy5sb2NhbGU9aS5sb2NhbGUsdm9pZCAwIT09ZS5sb2NhbGVzP3RoaXMub3B0aW9ucy5sb2NhbGVzPWUubG9jYWxlczp0aGlzLm9wdGlvbnMubG9jYWxlcz1pLmxvY2FsZXMpLHZvaWQgMCE9PXQmJigiYm9vbGVhbiI9PXR5cGVvZiB0P3RoaXMub3B0aW9ucy5lbmFibGVkPXQ6KHRoaXMub3B0aW9ucy5lbmFibGVkPSEwLGYuZGVlcEV4dGVuZCh0aGlzLm9wdGlvbnMsdCkpLCEwPT09dGhpcy5vcHRpb25zLmluaXRpYWxseUFjdGl2ZSYmKHRoaXMuZWRpdE1vZGU9ITApLHRoaXMuX3NldHVwKCkpfX0se2tleToidG9nZ2xlRWRpdE1vZGUiLHZhbHVlOmZ1bmN0aW9uKCl7ITA9PT10aGlzLmVkaXRNb2RlP3RoaXMuZGlzYWJsZUVkaXRNb2RlKCk6dGhpcy5lbmFibGVFZGl0TW9kZSgpfX0se2tleToiZW5hYmxlRWRpdE1vZGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lZGl0TW9kZT0hMCx0aGlzLl9jbGVhbigpLCEwPT09dGhpcy5ndWlFbmFibGVkJiYodGhpcy5tYW5pcHVsYXRpb25EaXYuc3R5bGUuZGlzcGxheT0iYmxvY2siLHRoaXMuY2xvc2VEaXYuc3R5bGUuZGlzcGxheT0iYmxvY2siLHRoaXMuZWRpdE1vZGVEaXYuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5zaG93TWFuaXB1bGF0b3JUb29sYmFyKCkpfX0se2tleToiZGlzYWJsZUVkaXRNb2RlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZWRpdE1vZGU9ITEsdGhpcy5fY2xlYW4oKSwhMD09PXRoaXMuZ3VpRW5hYmxlZCYmKHRoaXMubWFuaXB1bGF0aW9uRGl2LnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuY2xvc2VEaXYuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5lZGl0TW9kZURpdi5zdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy5fY3JlYXRlRWRpdEJ1dHRvbigpKX19LHtrZXk6InNob3dNYW5pcHVsYXRvclRvb2xiYXIiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy5fY2xlYW4oKSx0aGlzLm1hbmlwdWxhdGlvbkRPTT17fSwhMD09PXRoaXMuZ3VpRW5hYmxlZCl7dGhpcy5lZGl0TW9kZT0hMCx0aGlzLm1hbmlwdWxhdGlvbkRpdi5zdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy5jbG9zZURpdi5zdHlsZS5kaXNwbGF5PSJibG9jayI7dmFyIHQ9dGhpcy5zZWxlY3Rpb25IYW5kbGVyLl9nZXRTZWxlY3RlZE5vZGVDb3VudCgpLGU9dGhpcy5zZWxlY3Rpb25IYW5kbGVyLl9nZXRTZWxlY3RlZEVkZ2VDb3VudCgpLGk9dCtlLG89dGhpcy5vcHRpb25zLmxvY2FsZXNbdGhpcy5vcHRpb25zLmxvY2FsZV0sbj0hMTshMSE9PXRoaXMub3B0aW9ucy5hZGROb2RlJiYodGhpcy5fY3JlYXRlQWRkTm9kZUJ1dHRvbihvKSxuPSEwKSwhMSE9PXRoaXMub3B0aW9ucy5hZGRFZGdlJiYoITA9PT1uP3RoaXMuX2NyZWF0ZVNlcGVyYXRvcigxKTpuPSEwLHRoaXMuX2NyZWF0ZUFkZEVkZ2VCdXR0b24obykpLDE9PT10JiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vcHRpb25zLmVkaXROb2RlPyghMD09PW4/dGhpcy5fY3JlYXRlU2VwZXJhdG9yKDIpOm49ITAsdGhpcy5fY3JlYXRlRWRpdE5vZGVCdXR0b24obykpOjE9PT1lJiYwPT09dCYmITEhPT10aGlzLm9wdGlvbnMuZWRpdEVkZ2UmJighMD09PW4/dGhpcy5fY3JlYXRlU2VwZXJhdG9yKDMpOm49ITAsdGhpcy5fY3JlYXRlRWRpdEVkZ2VCdXR0b24obykpLDAhPT1pJiYodD4wJiYhMSE9PXRoaXMub3B0aW9ucy5kZWxldGVOb2RlPyghMD09PW4mJnRoaXMuX2NyZWF0ZVNlcGVyYXRvcig0KSx0aGlzLl9jcmVhdGVEZWxldGVCdXR0b24obykpOjA9PT10JiYhMSE9PXRoaXMub3B0aW9ucy5kZWxldGVFZGdlJiYoITA9PT1uJiZ0aGlzLl9jcmVhdGVTZXBlcmF0b3IoNCksdGhpcy5fY3JlYXRlRGVsZXRlQnV0dG9uKG8pKSksdGhpcy5fYmluZEhhbW1lclRvRGl2KHRoaXMuY2xvc2VEaXYsdGhpcy50b2dnbGVFZGl0TW9kZS5iaW5kKHRoaXMpKSx0aGlzLl90ZW1wb3JhcnlCaW5kRXZlbnQoInNlbGVjdCIsdGhpcy5zaG93TWFuaXB1bGF0b3JUb29sYmFyLmJpbmQodGhpcykpfXRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9yZWRyYXciKX19LHtrZXk6ImFkZE5vZGVNb2RlIix2YWx1ZTpmdW5jdGlvbigpe2lmKCEwIT09dGhpcy5lZGl0TW9kZSYmdGhpcy5lbmFibGVFZGl0TW9kZSgpLHRoaXMuX2NsZWFuKCksdGhpcy5pbk1vZGU9ImFkZE5vZGUiLCEwPT09dGhpcy5ndWlFbmFibGVkKXt2YXIgdD10aGlzLm9wdGlvbnMubG9jYWxlc1t0aGlzLm9wdGlvbnMubG9jYWxlXTt0aGlzLm1hbmlwdWxhdGlvbkRPTT17fSx0aGlzLl9jcmVhdGVCYWNrQnV0dG9uKHQpLHRoaXMuX2NyZWF0ZVNlcGVyYXRvcigpLHRoaXMuX2NyZWF0ZURlc2NyaXB0aW9uKHQuYWRkRGVzY3JpcHRpb258fHRoaXMub3B0aW9ucy5sb2NhbGVzLmVuLmFkZERlc2NyaXB0aW9uKSx0aGlzLl9iaW5kSGFtbWVyVG9EaXYodGhpcy5jbG9zZURpdix0aGlzLnRvZ2dsZUVkaXRNb2RlLmJpbmQodGhpcykpfXRoaXMuX3RlbXBvcmFyeUJpbmRFdmVudCgiY2xpY2siLHRoaXMuX3BlcmZvcm1BZGROb2RlLmJpbmQodGhpcykpfX0se2tleToiZWRpdE5vZGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczshMCE9PXRoaXMuZWRpdE1vZGUmJnRoaXMuZW5hYmxlRWRpdE1vZGUoKSx0aGlzLl9jbGVhbigpO3ZhciBlPXRoaXMuc2VsZWN0aW9uSGFuZGxlci5fZ2V0U2VsZWN0ZWROb2RlKCk7aWYodm9pZCAwIT09ZSl7aWYodGhpcy5pbk1vZGU9ImVkaXROb2RlIiwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5vcHRpb25zLmVkaXROb2RlKXRocm93IG5ldyBFcnJvcigiTm8gZnVuY3Rpb24gaGFzIGJlZW4gY29uZmlndXJlZCB0byBoYW5kbGUgdGhlIGVkaXRpbmcgb2Ygbm9kZXMuIik7aWYoITAhPT1lLmlzQ2x1c3Rlcil7dmFyIGk9Zi5kZWVwRXh0ZW5kKHt9LGUub3B0aW9ucywhMSk7aWYoaS54PWUueCxpLnk9ZS55LDIhPT10aGlzLm9wdGlvbnMuZWRpdE5vZGUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVGhlIGZ1bmN0aW9uIGZvciBlZGl0IGRvZXMgbm90IHN1cHBvcnQgdHdvIGFyZ3VtZW50cyAoZGF0YSwgY2FsbGJhY2spIik7dGhpcy5vcHRpb25zLmVkaXROb2RlKGksZnVuY3Rpb24oZSl7bnVsbCE9PWUmJnZvaWQgMCE9PWUmJiJlZGl0Tm9kZSI9PT10LmluTW9kZSYmdC5ib2R5LmRhdGEubm9kZXMuZ2V0RGF0YVNldCgpLnVwZGF0ZShlKSx0LnNob3dNYW5pcHVsYXRvclRvb2xiYXIoKX0pfWVsc2UgYWxlcnQodGhpcy5vcHRpb25zLmxvY2FsZXNbdGhpcy5vcHRpb25zLmxvY2FsZV0uZWRpdENsdXN0ZXJFcnJvcnx8dGhpcy5vcHRpb25zLmxvY2FsZXMuZW4uZWRpdENsdXN0ZXJFcnJvcil9ZWxzZSB0aGlzLnNob3dNYW5pcHVsYXRvclRvb2xiYXIoKX19LHtrZXk6ImFkZEVkZ2VNb2RlIix2YWx1ZTpmdW5jdGlvbigpe2lmKCEwIT09dGhpcy5lZGl0TW9kZSYmdGhpcy5lbmFibGVFZGl0TW9kZSgpLHRoaXMuX2NsZWFuKCksdGhpcy5pbk1vZGU9ImFkZEVkZ2UiLCEwPT09dGhpcy5ndWlFbmFibGVkKXt2YXIgdD10aGlzLm9wdGlvbnMubG9jYWxlc1t0aGlzLm9wdGlvbnMubG9jYWxlXTt0aGlzLm1hbmlwdWxhdGlvbkRPTT17fSx0aGlzLl9jcmVhdGVCYWNrQnV0dG9uKHQpLHRoaXMuX2NyZWF0ZVNlcGVyYXRvcigpLHRoaXMuX2NyZWF0ZURlc2NyaXB0aW9uKHQuZWRnZURlc2NyaXB0aW9ufHx0aGlzLm9wdGlvbnMubG9jYWxlcy5lbi5lZGdlRGVzY3JpcHRpb24pLHRoaXMuX2JpbmRIYW1tZXJUb0Rpdih0aGlzLmNsb3NlRGl2LHRoaXMudG9nZ2xlRWRpdE1vZGUuYmluZCh0aGlzKSl9dGhpcy5fdGVtcG9yYXJ5QmluZFVJKCJvblRvdWNoIix0aGlzLl9oYW5kbGVDb25uZWN0LmJpbmQodGhpcykpLHRoaXMuX3RlbXBvcmFyeUJpbmRVSSgib25EcmFnRW5kIix0aGlzLl9maW5pc2hDb25uZWN0LmJpbmQodGhpcykpLHRoaXMuX3RlbXBvcmFyeUJpbmRVSSgib25EcmFnIix0aGlzLl9kcmFnQ29udHJvbE5vZGUuYmluZCh0aGlzKSksdGhpcy5fdGVtcG9yYXJ5QmluZFVJKCJvblJlbGVhc2UiLHRoaXMuX2ZpbmlzaENvbm5lY3QuYmluZCh0aGlzKSksdGhpcy5fdGVtcG9yYXJ5QmluZFVJKCJvbkRyYWdTdGFydCIsZnVuY3Rpb24oKXt9KSx0aGlzLl90ZW1wb3JhcnlCaW5kVUkoIm9uSG9sZCIsZnVuY3Rpb24oKXt9KX19LHtrZXk6ImVkaXRFZGdlTW9kZSIsdmFsdWU6ZnVuY3Rpb24oKXtpZighMCE9PXRoaXMuZWRpdE1vZGUmJnRoaXMuZW5hYmxlRWRpdE1vZGUoKSx0aGlzLl9jbGVhbigpLHRoaXMuaW5Nb2RlPSJlZGl0RWRnZSIsIm9iamVjdCI9PT0oMCxkLmRlZmF1bHQpKHRoaXMub3B0aW9ucy5lZGl0RWRnZSkmJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuZWRpdEVkZ2UuZWRpdFdpdGhvdXREcmFnJiYodGhpcy5lZGdlQmVpbmdFZGl0ZWRJZD10aGlzLnNlbGVjdGlvbkhhbmRsZXIuZ2V0U2VsZWN0ZWRFZGdlcygpWzBdLHZvaWQgMCE9PXRoaXMuZWRnZUJlaW5nRWRpdGVkSWQpKXt2YXIgdD10aGlzLmJvZHkuZWRnZXNbdGhpcy5lZGdlQmVpbmdFZGl0ZWRJZF07cmV0dXJuIHZvaWQgdGhpcy5fcGVyZm9ybUVkaXRFZGdlKHQuZnJvbSx0LnRvKX1pZighMD09PXRoaXMuZ3VpRW5hYmxlZCl7dmFyIGU9dGhpcy5vcHRpb25zLmxvY2FsZXNbdGhpcy5vcHRpb25zLmxvY2FsZV07dGhpcy5tYW5pcHVsYXRpb25ET009e30sdGhpcy5fY3JlYXRlQmFja0J1dHRvbihlKSx0aGlzLl9jcmVhdGVTZXBlcmF0b3IoKSx0aGlzLl9jcmVhdGVEZXNjcmlwdGlvbihlLmVkaXRFZGdlRGVzY3JpcHRpb258fHRoaXMub3B0aW9ucy5sb2NhbGVzLmVuLmVkaXRFZGdlRGVzY3JpcHRpb24pLHRoaXMuX2JpbmRIYW1tZXJUb0Rpdih0aGlzLmNsb3NlRGl2LHRoaXMudG9nZ2xlRWRpdE1vZGUuYmluZCh0aGlzKSl9aWYodGhpcy5lZGdlQmVpbmdFZGl0ZWRJZD10aGlzLnNlbGVjdGlvbkhhbmRsZXIuZ2V0U2VsZWN0ZWRFZGdlcygpWzBdLHZvaWQgMCE9PXRoaXMuZWRnZUJlaW5nRWRpdGVkSWQpe3ZhciBpPXRoaXMuYm9keS5lZGdlc1t0aGlzLmVkZ2VCZWluZ0VkaXRlZElkXSxvPXRoaXMuX2dldE5ld1RhcmdldE5vZGUoaS5mcm9tLngsaS5mcm9tLnkpLG49dGhpcy5fZ2V0TmV3VGFyZ2V0Tm9kZShpLnRvLngsaS50by55KTt0aGlzLnRlbXBvcmFyeUlkcy5ub2Rlcy5wdXNoKG8uaWQpLHRoaXMudGVtcG9yYXJ5SWRzLm5vZGVzLnB1c2gobi5pZCksdGhpcy5ib2R5Lm5vZGVzW28uaWRdPW8sdGhpcy5ib2R5Lm5vZGVJbmRpY2VzLnB1c2goby5pZCksdGhpcy5ib2R5Lm5vZGVzW24uaWRdPW4sdGhpcy5ib2R5Lm5vZGVJbmRpY2VzLnB1c2gobi5pZCksdGhpcy5fdGVtcG9yYXJ5QmluZFVJKCJvblRvdWNoIix0aGlzLl9jb250cm9sTm9kZVRvdWNoLmJpbmQodGhpcykpLHRoaXMuX3RlbXBvcmFyeUJpbmRVSSgib25UYXAiLGZ1bmN0aW9uKCl7fSksdGhpcy5fdGVtcG9yYXJ5QmluZFVJKCJvbkhvbGQiLGZ1bmN0aW9uKCl7fSksdGhpcy5fdGVtcG9yYXJ5QmluZFVJKCJvbkRyYWdTdGFydCIsdGhpcy5fY29udHJvbE5vZGVEcmFnU3RhcnQuYmluZCh0aGlzKSksdGhpcy5fdGVtcG9yYXJ5QmluZFVJKCJvbkRyYWciLHRoaXMuX2NvbnRyb2xOb2RlRHJhZy5iaW5kKHRoaXMpKSx0aGlzLl90ZW1wb3JhcnlCaW5kVUkoIm9uRHJhZ0VuZCIsdGhpcy5fY29udHJvbE5vZGVEcmFnRW5kLmJpbmQodGhpcykpLHRoaXMuX3RlbXBvcmFyeUJpbmRVSSgib25Nb3VzZU1vdmUiLGZ1bmN0aW9uKCl7fSksdGhpcy5fdGVtcG9yYXJ5QmluZEV2ZW50KCJiZWZvcmVEcmF3aW5nIixmdW5jdGlvbih0KXt2YXIgZT1pLmVkZ2VUeXBlLmZpbmRCb3JkZXJQb3NpdGlvbnModCk7ITE9PT1vLnNlbGVjdGVkJiYoby54PWUuZnJvbS54LG8ueT1lLmZyb20ueSksITE9PT1uLnNlbGVjdGVkJiYobi54PWUudG8ueCxuLnk9ZS50by55KX0pLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoIl9yZWRyYXciKX1lbHNlIHRoaXMuc2hvd01hbmlwdWxhdG9yVG9vbGJhcigpfX0se2tleToiZGVsZXRlU2VsZWN0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczshMCE9PXRoaXMuZWRpdE1vZGUmJnRoaXMuZW5hYmxlRWRpdE1vZGUoKSx0aGlzLl9jbGVhbigpLHRoaXMuaW5Nb2RlPSJkZWxldGUiO3ZhciBlPXRoaXMuc2VsZWN0aW9uSGFuZGxlci5nZXRTZWxlY3RlZE5vZGVzKCksaT10aGlzLnNlbGVjdGlvbkhhbmRsZXIuZ2V0U2VsZWN0ZWRFZGdlcygpLG89dm9pZCAwO2lmKGUubGVuZ3RoPjApe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKCEwPT09dGhpcy5ib2R5Lm5vZGVzW2Vbbl1dLmlzQ2x1c3RlcilyZXR1cm4gdm9pZCBhbGVydCh0aGlzLm9wdGlvbnMubG9jYWxlc1t0aGlzLm9wdGlvbnMubG9jYWxlXS5kZWxldGVDbHVzdGVyRXJyb3J8fHRoaXMub3B0aW9ucy5sb2NhbGVzLmVuLmRlbGV0ZUNsdXN0ZXJFcnJvcik7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub3B0aW9ucy5kZWxldGVOb2RlJiYobz10aGlzLm9wdGlvbnMuZGVsZXRlTm9kZSl9ZWxzZSBpLmxlbmd0aD4wJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vcHRpb25zLmRlbGV0ZUVkZ2UmJihvPXRoaXMub3B0aW9ucy5kZWxldGVFZGdlKTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbyl7dmFyIHM9e25vZGVzOmUsZWRnZXM6aX07aWYoMiE9PW8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVGhlIGZ1bmN0aW9uIGZvciBkZWxldGUgZG9lcyBub3Qgc3VwcG9ydCB0d28gYXJndW1lbnRzIChkYXRhLCBjYWxsYmFjaykiKTtvKHMsZnVuY3Rpb24oZSl7bnVsbCE9PWUmJnZvaWQgMCE9PWUmJiJkZWxldGUiPT09dC5pbk1vZGU/KHQuYm9keS5kYXRhLmVkZ2VzLmdldERhdGFTZXQoKS5yZW1vdmUoZS5lZGdlcyksdC5ib2R5LmRhdGEubm9kZXMuZ2V0RGF0YVNldCgpLnJlbW92ZShlLm5vZGVzKSx0LmJvZHkuZW1pdHRlci5lbWl0KCJzdGFydFNpbXVsYXRpb24iKSx0LnNob3dNYW5pcHVsYXRvclRvb2xiYXIoKSk6KHQuYm9keS5lbWl0dGVyLmVtaXQoInN0YXJ0U2ltdWxhdGlvbiIpLHQuc2hvd01hbmlwdWxhdG9yVG9vbGJhcigpKX0pfWVsc2UgdGhpcy5ib2R5LmRhdGEuZWRnZXMuZ2V0RGF0YVNldCgpLnJlbW92ZShpKSx0aGlzLmJvZHkuZGF0YS5ub2Rlcy5nZXREYXRhU2V0KCkucmVtb3ZlKGUpLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoInN0YXJ0U2ltdWxhdGlvbiIpLHRoaXMuc2hvd01hbmlwdWxhdG9yVG9vbGJhcigpfX0se2tleToiX3NldHVwIix2YWx1ZTpmdW5jdGlvbigpeyEwPT09dGhpcy5vcHRpb25zLmVuYWJsZWQ/KHRoaXMuZ3VpRW5hYmxlZD0hMCx0aGlzLl9jcmVhdGVXcmFwcGVycygpLCExPT09dGhpcy5lZGl0TW9kZT90aGlzLl9jcmVhdGVFZGl0QnV0dG9uKCk6dGhpcy5zaG93TWFuaXB1bGF0b3JUb29sYmFyKCkpOih0aGlzLl9yZW1vdmVNYW5pcHVsYXRpb25ET00oKSx0aGlzLmd1aUVuYWJsZWQ9ITEpfX0se2tleToiX2NyZWF0ZVdyYXBwZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZvaWQgMD09PXRoaXMubWFuaXB1bGF0aW9uRGl2JiYodGhpcy5tYW5pcHVsYXRpb25EaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5tYW5pcHVsYXRpb25EaXYuY2xhc3NOYW1lPSJ2aXMtbWFuaXB1bGF0aW9uIiwhMD09PXRoaXMuZWRpdE1vZGU/dGhpcy5tYW5pcHVsYXRpb25EaXYuc3R5bGUuZGlzcGxheT0iYmxvY2siOnRoaXMubWFuaXB1bGF0aW9uRGl2LnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuY2FudmFzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMubWFuaXB1bGF0aW9uRGl2KSksdm9pZCAwPT09dGhpcy5lZGl0TW9kZURpdiYmKHRoaXMuZWRpdE1vZGVEaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5lZGl0TW9kZURpdi5jbGFzc05hbWU9InZpcy1lZGl0LW1vZGUiLCEwPT09dGhpcy5lZGl0TW9kZT90aGlzLmVkaXRNb2RlRGl2LnN0eWxlLmRpc3BsYXk9Im5vbmUiOnRoaXMuZWRpdE1vZGVEaXYuc3R5bGUuZGlzcGxheT0iYmxvY2siLHRoaXMuY2FudmFzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMuZWRpdE1vZGVEaXYpKSx2b2lkIDA9PT10aGlzLmNsb3NlRGl2JiYodGhpcy5jbG9zZURpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmNsb3NlRGl2LmNsYXNzTmFtZT0idmlzLWNsb3NlIix0aGlzLmNsb3NlRGl2LnN0eWxlLmRpc3BsYXk9dGhpcy5tYW5pcHVsYXRpb25EaXYuc3R5bGUuZGlzcGxheSx0aGlzLmNhbnZhcy5mcmFtZS5hcHBlbmRDaGlsZCh0aGlzLmNsb3NlRGl2KSl9fSx7a2V5OiJfZ2V0TmV3VGFyZ2V0Tm9kZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1mLmRlZXBFeHRlbmQoe30sdGhpcy5vcHRpb25zLmNvbnRyb2xOb2RlU3R5bGUpO2kuaWQ9InRhcmdldE5vZGUiK2YucmFuZG9tVVVJRCgpLGkuaGlkZGVuPSExLGkucGh5c2ljcz0hMSxpLng9dCxpLnk9ZTt2YXIgbz10aGlzLmJvZHkuZnVuY3Rpb25zLmNyZWF0ZU5vZGUoaSk7cmV0dXJuIG8uc2hhcGUuYm91bmRpbmdCb3g9e2xlZnQ6dCxyaWdodDp0LHRvcDplLGJvdHRvbTplfSxvfX0se2tleToiX2NyZWF0ZUVkaXRCdXR0b24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fY2xlYW4oKSx0aGlzLm1hbmlwdWxhdGlvbkRPTT17fSxmLnJlY3Vyc2l2ZURPTURlbGV0ZSh0aGlzLmVkaXRNb2RlRGl2KTt2YXIgdD10aGlzLm9wdGlvbnMubG9jYWxlc1t0aGlzLm9wdGlvbnMubG9jYWxlXSxlPXRoaXMuX2NyZWF0ZUJ1dHRvbigiZWRpdE1vZGUiLCJ2aXMtYnV0dG9uIHZpcy1lZGl0IHZpcy1lZGl0LW1vZGUiLHQuZWRpdHx8dGhpcy5vcHRpb25zLmxvY2FsZXMuZW4uZWRpdCk7dGhpcy5lZGl0TW9kZURpdi5hcHBlbmRDaGlsZChlKSx0aGlzLl9iaW5kSGFtbWVyVG9EaXYoZSx0aGlzLnRvZ2dsZUVkaXRNb2RlLmJpbmQodGhpcykpfX0se2tleToiX2NsZWFuIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaW5Nb2RlPSExLCEwPT09dGhpcy5ndWlFbmFibGVkJiYoZi5yZWN1cnNpdmVET01EZWxldGUodGhpcy5lZGl0TW9kZURpdiksZi5yZWN1cnNpdmVET01EZWxldGUodGhpcy5tYW5pcHVsYXRpb25EaXYpLHRoaXMuX2NsZWFuTWFuaXB1bGF0b3JIYW1tZXJzKCkpLHRoaXMuX2NsZWFudXBUZW1wb3JhcnlOb2Rlc0FuZEVkZ2VzKCksdGhpcy5fdW5iaW5kVGVtcG9yYXJ5VUlzKCksdGhpcy5fdW5iaW5kVGVtcG9yYXJ5RXZlbnRzKCksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgicmVzdG9yZVBoeXNpY3MiKX19LHtrZXk6Il9jbGVhbk1hbmlwdWxhdG9ySGFtbWVycyIsdmFsdWU6ZnVuY3Rpb24oKXtpZigwIT10aGlzLm1hbmlwdWxhdGlvbkhhbW1lcnMubGVuZ3RoKXtmb3IodmFyIHQ9MDt0PHRoaXMubWFuaXB1bGF0aW9uSGFtbWVycy5sZW5ndGg7dCsrKXRoaXMubWFuaXB1bGF0aW9uSGFtbWVyc1t0XS5kZXN0cm95KCk7dGhpcy5tYW5pcHVsYXRpb25IYW1tZXJzPVtdfX19LHtrZXk6Il9yZW1vdmVNYW5pcHVsYXRpb25ET00iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fY2xlYW4oKSxmLnJlY3Vyc2l2ZURPTURlbGV0ZSh0aGlzLm1hbmlwdWxhdGlvbkRpdiksZi5yZWN1cnNpdmVET01EZWxldGUodGhpcy5lZGl0TW9kZURpdiksZi5yZWN1cnNpdmVET01EZWxldGUodGhpcy5jbG9zZURpdiksdGhpcy5tYW5pcHVsYXRpb25EaXYmJnRoaXMuY2FudmFzLmZyYW1lLnJlbW92ZUNoaWxkKHRoaXMubWFuaXB1bGF0aW9uRGl2KSx0aGlzLmVkaXRNb2RlRGl2JiZ0aGlzLmNhbnZhcy5mcmFtZS5yZW1vdmVDaGlsZCh0aGlzLmVkaXRNb2RlRGl2KSx0aGlzLmNsb3NlRGl2JiZ0aGlzLmNhbnZhcy5mcmFtZS5yZW1vdmVDaGlsZCh0aGlzLmNsb3NlRGl2KSx0aGlzLm1hbmlwdWxhdGlvbkRpdj12b2lkIDAsdGhpcy5lZGl0TW9kZURpdj12b2lkIDAsdGhpcy5jbG9zZURpdj12b2lkIDB9fSx7a2V5OiJfY3JlYXRlU2VwZXJhdG9yIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToxO3RoaXMubWFuaXB1bGF0aW9uRE9NWyJzZXBlcmF0b3JMaW5lRGl2Iit0XT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLm1hbmlwdWxhdGlvbkRPTVsic2VwZXJhdG9yTGluZURpdiIrdF0uY2xhc3NOYW1lPSJ2aXMtc2VwYXJhdG9yLWxpbmUiLHRoaXMubWFuaXB1bGF0aW9uRGl2LmFwcGVuZENoaWxkKHRoaXMubWFuaXB1bGF0aW9uRE9NWyJzZXBlcmF0b3JMaW5lRGl2Iit0XSl9fSx7a2V5OiJfY3JlYXRlQWRkTm9kZUJ1dHRvbiIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fY3JlYXRlQnV0dG9uKCJhZGROb2RlIiwidmlzLWJ1dHRvbiB2aXMtYWRkIix0LmFkZE5vZGV8fHRoaXMub3B0aW9ucy5sb2NhbGVzLmVuLmFkZE5vZGUpO3RoaXMubWFuaXB1bGF0aW9uRGl2LmFwcGVuZENoaWxkKGUpLHRoaXMuX2JpbmRIYW1tZXJUb0RpdihlLHRoaXMuYWRkTm9kZU1vZGUuYmluZCh0aGlzKSl9fSx7a2V5OiJfY3JlYXRlQWRkRWRnZUJ1dHRvbiIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fY3JlYXRlQnV0dG9uKCJhZGRFZGdlIiwidmlzLWJ1dHRvbiB2aXMtY29ubmVjdCIsdC5hZGRFZGdlfHx0aGlzLm9wdGlvbnMubG9jYWxlcy5lbi5hZGRFZGdlKTt0aGlzLm1hbmlwdWxhdGlvbkRpdi5hcHBlbmRDaGlsZChlKSx0aGlzLl9iaW5kSGFtbWVyVG9EaXYoZSx0aGlzLmFkZEVkZ2VNb2RlLmJpbmQodGhpcykpfX0se2tleToiX2NyZWF0ZUVkaXROb2RlQnV0dG9uIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9jcmVhdGVCdXR0b24oImVkaXROb2RlIiwidmlzLWJ1dHRvbiB2aXMtZWRpdCIsdC5lZGl0Tm9kZXx8dGhpcy5vcHRpb25zLmxvY2FsZXMuZW4uZWRpdE5vZGUpO3RoaXMubWFuaXB1bGF0aW9uRGl2LmFwcGVuZENoaWxkKGUpLHRoaXMuX2JpbmRIYW1tZXJUb0RpdihlLHRoaXMuZWRpdE5vZGUuYmluZCh0aGlzKSl9fSx7a2V5OiJfY3JlYXRlRWRpdEVkZ2VCdXR0b24iLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2NyZWF0ZUJ1dHRvbigiZWRpdEVkZ2UiLCJ2aXMtYnV0dG9uIHZpcy1lZGl0Iix0LmVkaXRFZGdlfHx0aGlzLm9wdGlvbnMubG9jYWxlcy5lbi5lZGl0RWRnZSk7dGhpcy5tYW5pcHVsYXRpb25EaXYuYXBwZW5kQ2hpbGQoZSksdGhpcy5fYmluZEhhbW1lclRvRGl2KGUsdGhpcy5lZGl0RWRnZU1vZGUuYmluZCh0aGlzKSl9fSx7a2V5OiJfY3JlYXRlRGVsZXRlQnV0dG9uIix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLm9wdGlvbnMucnRsKXZhciBlPSJ2aXMtYnV0dG9uIHZpcy1kZWxldGUtcnRsIjtlbHNlIHZhciBlPSJ2aXMtYnV0dG9uIHZpcy1kZWxldGUiO3ZhciBpPXRoaXMuX2NyZWF0ZUJ1dHRvbigiZGVsZXRlIixlLHQuZGVsfHx0aGlzLm9wdGlvbnMubG9jYWxlcy5lbi5kZWwpO3RoaXMubWFuaXB1bGF0aW9uRGl2LmFwcGVuZENoaWxkKGkpLHRoaXMuX2JpbmRIYW1tZXJUb0RpdihpLHRoaXMuZGVsZXRlU2VsZWN0ZWQuYmluZCh0aGlzKSl9fSx7a2V5OiJfY3JlYXRlQmFja0J1dHRvbiIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fY3JlYXRlQnV0dG9uKCJiYWNrIiwidmlzLWJ1dHRvbiB2aXMtYmFjayIsdC5iYWNrfHx0aGlzLm9wdGlvbnMubG9jYWxlcy5lbi5iYWNrKTt0aGlzLm1hbmlwdWxhdGlvbkRpdi5hcHBlbmRDaGlsZChlKSx0aGlzLl9iaW5kSGFtbWVyVG9EaXYoZSx0aGlzLnNob3dNYW5pcHVsYXRvclRvb2xiYXIuYmluZCh0aGlzKSl9fSx7a2V5OiJfY3JlYXRlQnV0dG9uIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIG89YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOiJ2aXMtbGFiZWwiO3JldHVybiB0aGlzLm1hbmlwdWxhdGlvbkRPTVt0KyJEaXYiXT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLm1hbmlwdWxhdGlvbkRPTVt0KyJEaXYiXS5jbGFzc05hbWU9ZSx0aGlzLm1hbmlwdWxhdGlvbkRPTVt0KyJMYWJlbCJdPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMubWFuaXB1bGF0aW9uRE9NW3QrIkxhYmVsIl0uY2xhc3NOYW1lPW8sdGhpcy5tYW5pcHVsYXRpb25ET01bdCsiTGFiZWwiXS5pbm5lckhUTUw9aSx0aGlzLm1hbmlwdWxhdGlvbkRPTVt0KyJEaXYiXS5hcHBlbmRDaGlsZCh0aGlzLm1hbmlwdWxhdGlvbkRPTVt0KyJMYWJlbCJdKSx0aGlzLm1hbmlwdWxhdGlvbkRPTVt0KyJEaXYiXX19LHtrZXk6Il9jcmVhdGVEZXNjcmlwdGlvbiIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5tYW5pcHVsYXRpb25EaXYuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQnV0dG9uKCJkZXNjcmlwdGlvbiIsInZpcy1idXR0b24gdmlzLW5vbmUiLHQpKX19LHtrZXk6Il90ZW1wb3JhcnlCaW5kRXZlbnQiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy50ZW1wb3JhcnlFdmVudEZ1bmN0aW9ucy5wdXNoKHtldmVudDp0LGJvdW5kRnVuY3Rpb246ZX0pLHRoaXMuYm9keS5lbWl0dGVyLm9uKHQsZSl9fSx7a2V5OiJfdGVtcG9yYXJ5QmluZFVJIix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PXRoaXMuYm9keS5ldmVudExpc3RlbmVyc1t0XSl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgVUkgZnVuY3Rpb24gZG9lcyBub3QgZXhpc3QuIFR5cG8/IFlvdSB0cmllZDogIit0KyIgcG9zc2libGUgYXJlOiAiKygwLGEuZGVmYXVsdCkoKDAscy5kZWZhdWx0KSh0aGlzLmJvZHkuZXZlbnRMaXN0ZW5lcnMpKSk7dGhpcy50ZW1wb3JhcnlVSUZ1bmN0aW9uc1t0XT10aGlzLmJvZHkuZXZlbnRMaXN0ZW5lcnNbdF0sdGhpcy5ib2R5LmV2ZW50TGlzdGVuZXJzW3RdPWV9fSx7a2V5OiJfdW5iaW5kVGVtcG9yYXJ5VUlzIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLnRlbXBvcmFyeVVJRnVuY3Rpb25zKXRoaXMudGVtcG9yYXJ5VUlGdW5jdGlvbnMuaGFzT3duUHJvcGVydHkodCkmJih0aGlzLmJvZHkuZXZlbnRMaXN0ZW5lcnNbdF09dGhpcy50ZW1wb3JhcnlVSUZ1bmN0aW9uc1t0XSxkZWxldGUgdGhpcy50ZW1wb3JhcnlVSUZ1bmN0aW9uc1t0XSk7dGhpcy50ZW1wb3JhcnlVSUZ1bmN0aW9ucz17fX19LHtrZXk6Il91bmJpbmRUZW1wb3JhcnlFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDx0aGlzLnRlbXBvcmFyeUV2ZW50RnVuY3Rpb25zLmxlbmd0aDt0Kyspe3ZhciBlPXRoaXMudGVtcG9yYXJ5RXZlbnRGdW5jdGlvbnNbdF0uZXZlbnQsaT10aGlzLnRlbXBvcmFyeUV2ZW50RnVuY3Rpb25zW3RdLmJvdW5kRnVuY3Rpb247dGhpcy5ib2R5LmVtaXR0ZXIub2ZmKGUsaSl9dGhpcy50ZW1wb3JhcnlFdmVudEZ1bmN0aW9ucz1bXX19LHtrZXk6Il9iaW5kSGFtbWVyVG9EaXYiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7DQp2YXIgaT1uZXcgbSh0LHt9KTt2Lm9uVG91Y2goaSxlKSx0aGlzLm1hbmlwdWxhdGlvbkhhbW1lcnMucHVzaChpKX19LHtrZXk6Il9jbGVhbnVwVGVtcG9yYXJ5Tm9kZXNBbmRFZGdlcyIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMudGVtcG9yYXJ5SWRzLmVkZ2VzLmxlbmd0aDt0Kyspe3RoaXMuYm9keS5lZGdlc1t0aGlzLnRlbXBvcmFyeUlkcy5lZGdlc1t0XV0uZGlzY29ubmVjdCgpLGRlbGV0ZSB0aGlzLmJvZHkuZWRnZXNbdGhpcy50ZW1wb3JhcnlJZHMuZWRnZXNbdF1dO3ZhciBlPXRoaXMuYm9keS5lZGdlSW5kaWNlcy5pbmRleE9mKHRoaXMudGVtcG9yYXJ5SWRzLmVkZ2VzW3RdKTstMSE9PWUmJnRoaXMuYm9keS5lZGdlSW5kaWNlcy5zcGxpY2UoZSwxKX1mb3IodmFyIGk9MDtpPHRoaXMudGVtcG9yYXJ5SWRzLm5vZGVzLmxlbmd0aDtpKyspe2RlbGV0ZSB0aGlzLmJvZHkubm9kZXNbdGhpcy50ZW1wb3JhcnlJZHMubm9kZXNbaV1dO3ZhciBvPXRoaXMuYm9keS5ub2RlSW5kaWNlcy5pbmRleE9mKHRoaXMudGVtcG9yYXJ5SWRzLm5vZGVzW2ldKTstMSE9PW8mJnRoaXMuYm9keS5ub2RlSW5kaWNlcy5zcGxpY2UobywxKX10aGlzLnRlbXBvcmFyeUlkcz17bm9kZXM6W10sZWRnZXM6W119fX0se2tleToiX2NvbnRyb2xOb2RlVG91Y2giLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuc2VsZWN0aW9uSGFuZGxlci51bnNlbGVjdEFsbCgpLHRoaXMubGFzdFRvdWNoPXRoaXMuYm9keS5mdW5jdGlvbnMuZ2V0UG9pbnRlcih0LmNlbnRlciksdGhpcy5sYXN0VG91Y2gudHJhbnNsYXRpb249Zi5leHRlbmQoe30sdGhpcy5ib2R5LnZpZXcudHJhbnNsYXRpb24pfX0se2tleToiX2NvbnRyb2xOb2RlRHJhZ1N0YXJ0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhc3RUb3VjaCxpPXRoaXMuc2VsZWN0aW9uSGFuZGxlci5fcG9pbnRlclRvUG9zaXRpb25PYmplY3QoZSksbz10aGlzLmJvZHkubm9kZXNbdGhpcy50ZW1wb3JhcnlJZHMubm9kZXNbMF1dLG49dGhpcy5ib2R5Lm5vZGVzW3RoaXMudGVtcG9yYXJ5SWRzLm5vZGVzWzFdXSxzPXRoaXMuYm9keS5lZGdlc1t0aGlzLmVkZ2VCZWluZ0VkaXRlZElkXTt0aGlzLnNlbGVjdGVkQ29udHJvbE5vZGU9dm9pZCAwO3ZhciByPW8uaXNPdmVybGFwcGluZ1dpdGgoaSksYT1uLmlzT3ZlcmxhcHBpbmdXaXRoKGkpOyEwPT09cj8odGhpcy5zZWxlY3RlZENvbnRyb2xOb2RlPW8scy5lZGdlVHlwZS5mcm9tPW8pOiEwPT09YSYmKHRoaXMuc2VsZWN0ZWRDb250cm9sTm9kZT1uLHMuZWRnZVR5cGUudG89biksdm9pZCAwIT09dGhpcy5zZWxlY3RlZENvbnRyb2xOb2RlJiZ0aGlzLnNlbGVjdGlvbkhhbmRsZXIuc2VsZWN0T2JqZWN0KHRoaXMuc2VsZWN0ZWRDb250cm9sTm9kZSksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX3JlZHJhdyIpfX0se2tleToiX2NvbnRyb2xOb2RlRHJhZyIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiZGlzYWJsZVBoeXNpY3MiKTt2YXIgZT10aGlzLmJvZHkuZnVuY3Rpb25zLmdldFBvaW50ZXIodC5jZW50ZXIpLGk9dGhpcy5jYW52YXMuRE9NdG9DYW52YXMoZSk7aWYodm9pZCAwIT09dGhpcy5zZWxlY3RlZENvbnRyb2xOb2RlKXRoaXMuc2VsZWN0ZWRDb250cm9sTm9kZS54PWkueCx0aGlzLnNlbGVjdGVkQ29udHJvbE5vZGUueT1pLnk7ZWxzZXt2YXIgbz1lLngtdGhpcy5sYXN0VG91Y2gueCxuPWUueS10aGlzLmxhc3RUb3VjaC55O3RoaXMuYm9keS52aWV3LnRyYW5zbGF0aW9uPXt4OnRoaXMubGFzdFRvdWNoLnRyYW5zbGF0aW9uLngrbyx5OnRoaXMubGFzdFRvdWNoLnRyYW5zbGF0aW9uLnkrbn19dGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX3JlZHJhdyIpfX0se2tleToiX2NvbnRyb2xOb2RlRHJhZ0VuZCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5ib2R5LmZ1bmN0aW9ucy5nZXRQb2ludGVyKHQuY2VudGVyKSxpPXRoaXMuc2VsZWN0aW9uSGFuZGxlci5fcG9pbnRlclRvUG9zaXRpb25PYmplY3QoZSksbz10aGlzLmJvZHkuZWRnZXNbdGhpcy5lZGdlQmVpbmdFZGl0ZWRJZF07aWYodm9pZCAwIT09dGhpcy5zZWxlY3RlZENvbnRyb2xOb2RlKXt0aGlzLnNlbGVjdGlvbkhhbmRsZXIudW5zZWxlY3RBbGwoKTtmb3IodmFyIG49dGhpcy5zZWxlY3Rpb25IYW5kbGVyLl9nZXRBbGxOb2Rlc092ZXJsYXBwaW5nV2l0aChpKSxzPXZvaWQgMCxyPW4ubGVuZ3RoLTE7cj49MDtyLS0paWYobltyXSE9PXRoaXMuc2VsZWN0ZWRDb250cm9sTm9kZS5pZCl7cz10aGlzLmJvZHkubm9kZXNbbltyXV07YnJlYWt9aWYodm9pZCAwIT09cyYmdm9pZCAwIT09dGhpcy5zZWxlY3RlZENvbnRyb2xOb2RlKWlmKCEwPT09cy5pc0NsdXN0ZXIpYWxlcnQodGhpcy5vcHRpb25zLmxvY2FsZXNbdGhpcy5vcHRpb25zLmxvY2FsZV0uY3JlYXRlRWRnZUVycm9yfHx0aGlzLm9wdGlvbnMubG9jYWxlcy5lbi5jcmVhdGVFZGdlRXJyb3IpO2Vsc2V7dmFyIGE9dGhpcy5ib2R5Lm5vZGVzW3RoaXMudGVtcG9yYXJ5SWRzLm5vZGVzWzBdXTt0aGlzLnNlbGVjdGVkQ29udHJvbE5vZGUuaWQ9PT1hLmlkP3RoaXMuX3BlcmZvcm1FZGl0RWRnZShzLmlkLG8udG8uaWQpOnRoaXMuX3BlcmZvcm1FZGl0RWRnZShvLmZyb20uaWQscy5pZCl9ZWxzZSBvLnVwZGF0ZUVkZ2VUeXBlKCksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgicmVzdG9yZVBoeXNpY3MiKTt0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfcmVkcmF3Iil9fX0se2tleToiX2hhbmRsZUNvbm5lY3QiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKChuZXcgRGF0ZSkudmFsdWVPZigpLXRoaXMudG91Y2hUaW1lPjEwMCl7dGhpcy5sYXN0VG91Y2g9dGhpcy5ib2R5LmZ1bmN0aW9ucy5nZXRQb2ludGVyKHQuY2VudGVyKSx0aGlzLmxhc3RUb3VjaC50cmFuc2xhdGlvbj1mLmV4dGVuZCh7fSx0aGlzLmJvZHkudmlldy50cmFuc2xhdGlvbik7dmFyIGU9dGhpcy5sYXN0VG91Y2gsaT10aGlzLnNlbGVjdGlvbkhhbmRsZXIuZ2V0Tm9kZUF0KGUpO2lmKHZvaWQgMCE9PWkpaWYoITA9PT1pLmlzQ2x1c3RlcilhbGVydCh0aGlzLm9wdGlvbnMubG9jYWxlc1t0aGlzLm9wdGlvbnMubG9jYWxlXS5jcmVhdGVFZGdlRXJyb3J8fHRoaXMub3B0aW9ucy5sb2NhbGVzLmVuLmNyZWF0ZUVkZ2VFcnJvcik7ZWxzZXt2YXIgbz10aGlzLl9nZXROZXdUYXJnZXROb2RlKGkueCxpLnkpO3RoaXMuYm9keS5ub2Rlc1tvLmlkXT1vLHRoaXMuYm9keS5ub2RlSW5kaWNlcy5wdXNoKG8uaWQpO3ZhciBuPXRoaXMuYm9keS5mdW5jdGlvbnMuY3JlYXRlRWRnZSh7aWQ6ImNvbm5lY3Rpb25FZGdlIitmLnJhbmRvbVVVSUQoKSxmcm9tOmkuaWQsdG86by5pZCxwaHlzaWNzOiExLHNtb290aDp7ZW5hYmxlZDohMCx0eXBlOiJjb250aW51b3VzIixyb3VuZG5lc3M6LjV9fSk7dGhpcy5ib2R5LmVkZ2VzW24uaWRdPW4sdGhpcy5ib2R5LmVkZ2VJbmRpY2VzLnB1c2gobi5pZCksdGhpcy50ZW1wb3JhcnlJZHMubm9kZXMucHVzaChvLmlkKSx0aGlzLnRlbXBvcmFyeUlkcy5lZGdlcy5wdXNoKG4uaWQpfXRoaXMudG91Y2hUaW1lPShuZXcgRGF0ZSkudmFsdWVPZigpfX19LHtrZXk6Il9kcmFnQ29udHJvbE5vZGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYm9keS5mdW5jdGlvbnMuZ2V0UG9pbnRlcih0LmNlbnRlcik7aWYodm9pZCAwIT09dGhpcy50ZW1wb3JhcnlJZHMubm9kZXNbMF0pe3ZhciBpPXRoaXMuYm9keS5ub2Rlc1t0aGlzLnRlbXBvcmFyeUlkcy5ub2Rlc1swXV07aS54PXRoaXMuY2FudmFzLl9YY29udmVydERPTXRvQ2FudmFzKGUueCksaS55PXRoaXMuY2FudmFzLl9ZY29udmVydERPTXRvQ2FudmFzKGUueSksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiX3JlZHJhdyIpfWVsc2V7dmFyIG89ZS54LXRoaXMubGFzdFRvdWNoLngsbj1lLnktdGhpcy5sYXN0VG91Y2gueTt0aGlzLmJvZHkudmlldy50cmFuc2xhdGlvbj17eDp0aGlzLmxhc3RUb3VjaC50cmFuc2xhdGlvbi54K28seTp0aGlzLmxhc3RUb3VjaC50cmFuc2xhdGlvbi55K259fX19LHtrZXk6Il9maW5pc2hDb25uZWN0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmJvZHkuZnVuY3Rpb25zLmdldFBvaW50ZXIodC5jZW50ZXIpLGk9dGhpcy5zZWxlY3Rpb25IYW5kbGVyLl9wb2ludGVyVG9Qb3NpdGlvbk9iamVjdChlKSxvPXZvaWQgMDt2b2lkIDAhPT10aGlzLnRlbXBvcmFyeUlkcy5lZGdlc1swXSYmKG89dGhpcy5ib2R5LmVkZ2VzW3RoaXMudGVtcG9yYXJ5SWRzLmVkZ2VzWzBdXS5mcm9tSWQpO2Zvcih2YXIgbj10aGlzLnNlbGVjdGlvbkhhbmRsZXIuX2dldEFsbE5vZGVzT3ZlcmxhcHBpbmdXaXRoKGkpLHM9dm9pZCAwLHI9bi5sZW5ndGgtMTtyPj0wO3ItLSlpZigtMT09PXRoaXMudGVtcG9yYXJ5SWRzLm5vZGVzLmluZGV4T2YobltyXSkpe3M9dGhpcy5ib2R5Lm5vZGVzW25bcl1dO2JyZWFrfXRoaXMuX2NsZWFudXBUZW1wb3JhcnlOb2Rlc0FuZEVkZ2VzKCksdm9pZCAwIT09cyYmKCEwPT09cy5pc0NsdXN0ZXI/YWxlcnQodGhpcy5vcHRpb25zLmxvY2FsZXNbdGhpcy5vcHRpb25zLmxvY2FsZV0uY3JlYXRlRWRnZUVycm9yfHx0aGlzLm9wdGlvbnMubG9jYWxlcy5lbi5jcmVhdGVFZGdlRXJyb3IpOnZvaWQgMCE9PXRoaXMuYm9keS5ub2Rlc1tvXSYmdm9pZCAwIT09dGhpcy5ib2R5Lm5vZGVzW3MuaWRdJiZ0aGlzLl9wZXJmb3JtQWRkRWRnZShvLHMuaWQpKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJfcmVkcmF3Iil9fSx7a2V5OiJfcGVyZm9ybUFkZE5vZGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT17aWQ6Zi5yYW5kb21VVUlEKCkseDp0LnBvaW50ZXIuY2FudmFzLngseTp0LnBvaW50ZXIuY2FudmFzLnksbGFiZWw6Im5ldyJ9O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuYWRkTm9kZSl7aWYoMiE9PXRoaXMub3B0aW9ucy5hZGROb2RlLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBmdW5jdGlvbiBmb3IgYWRkIGRvZXMgbm90IHN1cHBvcnQgdHdvIGFyZ3VtZW50cyAoZGF0YSxjYWxsYmFjaykiKTt0aGlzLm9wdGlvbnMuYWRkTm9kZShpLGZ1bmN0aW9uKHQpe251bGwhPT10JiZ2b2lkIDAhPT10JiYiYWRkTm9kZSI9PT1lLmluTW9kZSYmKGUuYm9keS5kYXRhLm5vZGVzLmdldERhdGFTZXQoKS5hZGQodCksZS5zaG93TWFuaXB1bGF0b3JUb29sYmFyKCkpfSl9ZWxzZSB0aGlzLmJvZHkuZGF0YS5ub2Rlcy5nZXREYXRhU2V0KCkuYWRkKGkpLHRoaXMuc2hvd01hbmlwdWxhdG9yVG9vbGJhcigpfX0se2tleToiX3BlcmZvcm1BZGRFZGdlIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsbz17ZnJvbTp0LHRvOmV9O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuYWRkRWRnZSl7aWYoMiE9PXRoaXMub3B0aW9ucy5hZGRFZGdlLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBmdW5jdGlvbiBmb3IgY29ubmVjdCBkb2VzIG5vdCBzdXBwb3J0IHR3byBhcmd1bWVudHMgKGRhdGEsY2FsbGJhY2spIik7dGhpcy5vcHRpb25zLmFkZEVkZ2UobyxmdW5jdGlvbih0KXtudWxsIT09dCYmdm9pZCAwIT09dCYmImFkZEVkZ2UiPT09aS5pbk1vZGUmJihpLmJvZHkuZGF0YS5lZGdlcy5nZXREYXRhU2V0KCkuYWRkKHQpLGkuc2VsZWN0aW9uSGFuZGxlci51bnNlbGVjdEFsbCgpLGkuc2hvd01hbmlwdWxhdG9yVG9vbGJhcigpKX0pfWVsc2UgdGhpcy5ib2R5LmRhdGEuZWRnZXMuZ2V0RGF0YVNldCgpLmFkZChvKSx0aGlzLnNlbGVjdGlvbkhhbmRsZXIudW5zZWxlY3RBbGwoKSx0aGlzLnNob3dNYW5pcHVsYXRvclRvb2xiYXIoKX19LHtrZXk6Il9wZXJmb3JtRWRpdEVkZ2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxvPXtpZDp0aGlzLmVkZ2VCZWluZ0VkaXRlZElkLGZyb206dCx0bzplLGxhYmVsOnRoaXMuYm9keS5kYXRhLmVkZ2VzLl9kYXRhW3RoaXMuZWRnZUJlaW5nRWRpdGVkSWRdLmxhYmVsfSxuPXRoaXMub3B0aW9ucy5lZGl0RWRnZTtpZigib2JqZWN0Ij09PSh2b2lkIDA9PT1uPyJ1bmRlZmluZWQiOigwLGQuZGVmYXVsdCkobikpJiYobj1uLmVkaXRXaXRob3V0RHJhZyksImZ1bmN0aW9uIj09dHlwZW9mIG4pe2lmKDIhPT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBmdW5jdGlvbiBmb3IgZWRpdCBkb2VzIG5vdCBzdXBwb3J0IHR3byBhcmd1bWVudHMgKGRhdGEsIGNhbGxiYWNrKSIpO24obyxmdW5jdGlvbih0KXtudWxsPT09dHx8dm9pZCAwPT09dHx8ImVkaXRFZGdlIiE9PWkuaW5Nb2RlPyhpLmJvZHkuZWRnZXNbby5pZF0udXBkYXRlRWRnZVR5cGUoKSxpLmJvZHkuZW1pdHRlci5lbWl0KCJfcmVkcmF3IiksaS5zaG93TWFuaXB1bGF0b3JUb29sYmFyKCkpOihpLmJvZHkuZGF0YS5lZGdlcy5nZXREYXRhU2V0KCkudXBkYXRlKHQpLGkuc2VsZWN0aW9uSGFuZGxlci51bnNlbGVjdEFsbCgpLGkuc2hvd01hbmlwdWxhdG9yVG9vbGJhcigpKX0pfWVsc2UgdGhpcy5ib2R5LmRhdGEuZWRnZXMuZ2V0RGF0YVNldCgpLnVwZGF0ZShvKSx0aGlzLnNlbGVjdGlvbkhhbmRsZXIudW5zZWxlY3RBbGwoKSx0aGlzLnNob3dNYW5pcHVsYXRvclRvb2xiYXIoKX19XSksdH0oKTtlLmRlZmF1bHQ9Z30sZnVuY3Rpb24odCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9InN0cmluZyIsbz0iYm9vbGVhbiIsbj0ibnVtYmVyIixzPSJvYmplY3QiLHI9e2NvbmZpZ3VyZTp7ZW5hYmxlZDp7Ym9vbGVhbjpvfSxmaWx0ZXI6e2Jvb2xlYW46byxzdHJpbmc6aSxhcnJheToiYXJyYXkiLGZ1bmN0aW9uOiJmdW5jdGlvbiJ9LGNvbnRhaW5lcjp7ZG9tOiJkb20ifSxzaG93QnV0dG9uOntib29sZWFuOm99LF9fdHlwZV9fOntvYmplY3Q6cyxib29sZWFuOm8sc3RyaW5nOmksYXJyYXk6ImFycmF5IixmdW5jdGlvbjoiZnVuY3Rpb24ifX0sZWRnZXM6e2Fycm93czp7dG86e2VuYWJsZWQ6e2Jvb2xlYW46b30sc2NhbGVGYWN0b3I6e251bWJlcjpufSx0eXBlOntzdHJpbmc6WyJhcnJvdyIsImNpcmNsZSJdfSxfX3R5cGVfXzp7b2JqZWN0OnMsYm9vbGVhbjpvfX0sbWlkZGxlOntlbmFibGVkOntib29sZWFuOm99LHNjYWxlRmFjdG9yOntudW1iZXI6bn0sdHlwZTp7c3RyaW5nOlsiYXJyb3ciLCJjaXJjbGUiXX0sX190eXBlX186e29iamVjdDpzLGJvb2xlYW46b319LGZyb206e2VuYWJsZWQ6e2Jvb2xlYW46b30sc2NhbGVGYWN0b3I6e251bWJlcjpufSx0eXBlOntzdHJpbmc6WyJhcnJvdyIsImNpcmNsZSJdfSxfX3R5cGVfXzp7b2JqZWN0OnMsYm9vbGVhbjpvfX0sX190eXBlX186e3N0cmluZzpbImZyb20iLCJ0byIsIm1pZGRsZSJdLG9iamVjdDpzfX0sYXJyb3dTdHJpa2V0aHJvdWdoOntib29sZWFuOm99LGNob3Nlbjp7bGFiZWw6e2Jvb2xlYW46byxmdW5jdGlvbjoiZnVuY3Rpb24ifSxlZGdlOntib29sZWFuOm8sZnVuY3Rpb246ImZ1bmN0aW9uIn0sX190eXBlX186e29iamVjdDpzLGJvb2xlYW46b319LGNvbG9yOntjb2xvcjp7c3RyaW5nOml9LGhpZ2hsaWdodDp7c3RyaW5nOml9LGhvdmVyOntzdHJpbmc6aX0saW5oZXJpdDp7c3RyaW5nOlsiZnJvbSIsInRvIiwiYm90aCJdLGJvb2xlYW46b30sb3BhY2l0eTp7bnVtYmVyOm59LF9fdHlwZV9fOntvYmplY3Q6cyxzdHJpbmc6aX19LGRhc2hlczp7Ym9vbGVhbjpvLGFycmF5OiJhcnJheSJ9LGZvbnQ6e2NvbG9yOntzdHJpbmc6aX0sc2l6ZTp7bnVtYmVyOm59LGZhY2U6e3N0cmluZzppfSxiYWNrZ3JvdW5kOntzdHJpbmc6aX0sc3Ryb2tlV2lkdGg6e251bWJlcjpufSxzdHJva2VDb2xvcjp7c3RyaW5nOml9LGFsaWduOntzdHJpbmc6WyJob3Jpem9udGFsIiwidG9wIiwibWlkZGxlIiwiYm90dG9tIl19LHZhZGp1c3Q6e251bWJlcjpufSxtdWx0aTp7Ym9vbGVhbjpvLHN0cmluZzppfSxib2xkOntjb2xvcjp7c3RyaW5nOml9LHNpemU6e251bWJlcjpufSxmYWNlOntzdHJpbmc6aX0sbW9kOntzdHJpbmc6aX0sdmFkanVzdDp7bnVtYmVyOm59LF9fdHlwZV9fOntvYmplY3Q6cyxzdHJpbmc6aX19LGJvbGRpdGFsOntjb2xvcjp7c3RyaW5nOml9LHNpemU6e251bWJlcjpufSxmYWNlOntzdHJpbmc6aX0sbW9kOntzdHJpbmc6aX0sdmFkanVzdDp7bnVtYmVyOm59LF9fdHlwZV9fOntvYmplY3Q6cyxzdHJpbmc6aX19LGl0YWw6e2NvbG9yOntzdHJpbmc6aX0sc2l6ZTp7bnVtYmVyOm59LGZhY2U6e3N0cmluZzppfSxtb2Q6e3N0cmluZzppfSx2YWRqdXN0OntudW1iZXI6bn0sX190eXBlX186e29iamVjdDpzLHN0cmluZzppfX0sbW9ubzp7Y29sb3I6e3N0cmluZzppfSxzaXplOntudW1iZXI6bn0sZmFjZTp7c3RyaW5nOml9LG1vZDp7c3RyaW5nOml9LHZhZGp1c3Q6e251bWJlcjpufSxfX3R5cGVfXzp7b2JqZWN0OnMsc3RyaW5nOml9fSxfX3R5cGVfXzp7b2JqZWN0OnMsc3RyaW5nOml9fSxoaWRkZW46e2Jvb2xlYW46b30saG92ZXJXaWR0aDp7ZnVuY3Rpb246ImZ1bmN0aW9uIixudW1iZXI6bn0sbGFiZWw6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sbGFiZWxIaWdobGlnaHRCb2xkOntib29sZWFuOm99LGxlbmd0aDp7bnVtYmVyOm4sdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxwaHlzaWNzOntib29sZWFuOm99LHNjYWxpbmc6e21pbjp7bnVtYmVyOm59LG1heDp7bnVtYmVyOm59LGxhYmVsOntlbmFibGVkOntib29sZWFuOm99LG1pbjp7bnVtYmVyOm59LG1heDp7bnVtYmVyOm59LG1heFZpc2libGU6e251bWJlcjpufSxkcmF3VGhyZXNob2xkOntudW1iZXI6bn0sX190eXBlX186e29iamVjdDpzLGJvb2xlYW46b319LGN1c3RvbVNjYWxpbmdGdW5jdGlvbjp7ZnVuY3Rpb246ImZ1bmN0aW9uIn0sX190eXBlX186e29iamVjdDpzfX0sc2VsZWN0aW9uV2lkdGg6e2Z1bmN0aW9uOiJmdW5jdGlvbiIsbnVtYmVyOm59LHNlbGZSZWZlcmVuY2VTaXplOntudW1iZXI6bn0sc2hhZG93OntlbmFibGVkOntib29sZWFuOm99LGNvbG9yOntzdHJpbmc6aX0sc2l6ZTp7bnVtYmVyOm59LHg6e251bWJlcjpufSx5OntudW1iZXI6bn0sX190eXBlX186e29iamVjdDpzLGJvb2xlYW46b319LHNtb290aDp7ZW5hYmxlZDp7Ym9vbGVhbjpvfSx0eXBlOntzdHJpbmc6WyJkeW5hbWljIiwiY29udGludW91cyIsImRpc2NyZXRlIiwiZGlhZ29uYWxDcm9zcyIsInN0cmFpZ2h0Q3Jvc3MiLCJob3Jpem9udGFsIiwidmVydGljYWwiLCJjdXJ2ZWRDVyIsImN1cnZlZENDVyIsImN1YmljQmV6aWVyIl19LHJvdW5kbmVzczp7bnVtYmVyOm59LGZvcmNlRGlyZWN0aW9uOntzdHJpbmc6WyJob3Jpem9udGFsIiwidmVydGljYWwiLCJub25lIl0sYm9vbGVhbjpvfSxfX3R5cGVfXzp7b2JqZWN0OnMsYm9vbGVhbjpvfX0sdGl0bGU6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sd2lkdGg6e251bWJlcjpufSx3aWR0aENvbnN0cmFpbnQ6e21heGltdW06e251bWJlcjpufSxfX3R5cGVfXzp7b2JqZWN0OnMsYm9vbGVhbjpvLG51bWJlcjpufX0sdmFsdWU6e251bWJlcjpuLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sX190eXBlX186e29iamVjdDpzfX0sZ3JvdXBzOnt1c2VEZWZhdWx0R3JvdXBzOntib29sZWFuOm99LF9fYW55X186ImdldCBmcm9tIG5vZGVzLCB3aWxsIGJlIG92ZXJ3cml0dGVuIGJlbG93IixfX3R5cGVfXzp7b2JqZWN0OnN9fSxpbnRlcmFjdGlvbjp7ZHJhZ05vZGVzOntib29sZWFuOm99LGRyYWdWaWV3Ontib29sZWFuOm99LGhpZGVFZGdlc09uRHJhZzp7Ym9vbGVhbjpvfSxoaWRlTm9kZXNPbkRyYWc6e2Jvb2xlYW46b30saG92ZXI6e2Jvb2xlYW46b30sa2V5Ym9hcmQ6e2VuYWJsZWQ6e2Jvb2xlYW46b30sc3BlZWQ6e3g6e251bWJlcjpufSx5OntudW1iZXI6bn0sem9vbTp7bnVtYmVyOm59LF9fdHlwZV9fOntvYmplY3Q6c319LGJpbmRUb1dpbmRvdzp7Ym9vbGVhbjpvfSxfX3R5cGVfXzp7b2JqZWN0OnMsYm9vbGVhbjpvfX0sbXVsdGlzZWxlY3Q6e2Jvb2xlYW46b30sbmF2aWdhdGlvbkJ1dHRvbnM6e2Jvb2xlYW46b30sc2VsZWN0YWJsZTp7Ym9vbGVhbjpvfSxzZWxlY3RDb25uZWN0ZWRFZGdlczp7Ym9vbGVhbjpvfSxob3ZlckNvbm5lY3RlZEVkZ2VzOntib29sZWFuOm99LHRvb2x0aXBEZWxheTp7bnVtYmVyOm59LHpvb21WaWV3Ontib29sZWFuOm99LF9fdHlwZV9fOntvYmplY3Q6c319LGxheW91dDp7cmFuZG9tU2VlZDp7dW5kZWZpbmVkOiJ1bmRlZmluZWQiLG51bWJlcjpufSxpbXByb3ZlZExheW91dDp7Ym9vbGVhbjpvfSxoaWVyYXJjaGljYWw6e2VuYWJsZWQ6e2Jvb2xlYW46b30sbGV2ZWxTZXBhcmF0aW9uOntudW1iZXI6bn0sbm9kZVNwYWNpbmc6e251bWJlcjpufSx0cmVlU3BhY2luZzp7bnVtYmVyOm59LGJsb2NrU2hpZnRpbmc6e2Jvb2xlYW46b30sZWRnZU1pbmltaXphdGlvbjp7Ym9vbGVhbjpvfSxwYXJlbnRDZW50cmFsaXphdGlvbjp7Ym9vbGVhbjpvfSxkaXJlY3Rpb246e3N0cmluZzpbIlVEIiwiRFUiLCJMUiIsIlJMIl19LHNvcnRNZXRob2Q6e3N0cmluZzpbImh1YnNpemUiLCJkaXJlY3RlZCJdfSxfX3R5cGVfXzp7b2JqZWN0OnMsYm9vbGVhbjpvfX0sX190eXBlX186e29iamVjdDpzfX0sbWFuaXB1bGF0aW9uOntlbmFibGVkOntib29sZWFuOm99LGluaXRpYWxseUFjdGl2ZTp7Ym9vbGVhbjpvfSxhZGROb2RlOntib29sZWFuOm8sZnVuY3Rpb246ImZ1bmN0aW9uIn0sYWRkRWRnZTp7Ym9vbGVhbjpvLGZ1bmN0aW9uOiJmdW5jdGlvbiJ9LGVkaXROb2RlOntmdW5jdGlvbjoiZnVuY3Rpb24ifSxlZGl0RWRnZTp7ZWRpdFdpdGhvdXREcmFnOntmdW5jdGlvbjoiZnVuY3Rpb24ifSxfX3R5cGVfXzp7b2JqZWN0OnMsYm9vbGVhbjpvLGZ1bmN0aW9uOiJmdW5jdGlvbiJ9fSxkZWxldGVOb2RlOntib29sZWFuOm8sZnVuY3Rpb246ImZ1bmN0aW9uIn0sZGVsZXRlRWRnZTp7Ym9vbGVhbjpvLGZ1bmN0aW9uOiJmdW5jdGlvbiJ9LGNvbnRyb2xOb2RlU3R5bGU6ImdldCBmcm9tIG5vZGVzLCB3aWxsIGJlIG92ZXJ3cml0dGVuIGJlbG93IixfX3R5cGVfXzp7b2JqZWN0OnMsYm9vbGVhbjpvfX0sbm9kZXM6e2JvcmRlcldpZHRoOntudW1iZXI6bn0sYm9yZGVyV2lkdGhTZWxlY3RlZDp7bnVtYmVyOm4sdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxicm9rZW5JbWFnZTp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxjaG9zZW46e2xhYmVsOntib29sZWFuOm8sZnVuY3Rpb246ImZ1bmN0aW9uIn0sbm9kZTp7Ym9vbGVhbjpvLGZ1bmN0aW9uOiJmdW5jdGlvbiJ9LF9fdHlwZV9fOntvYmplY3Q6cyxib29sZWFuOm99fSxjb2xvcjp7Ym9yZGVyOntzdHJpbmc6aX0sYmFja2dyb3VuZDp7c3RyaW5nOml9LGhpZ2hsaWdodDp7Ym9yZGVyOntzdHJpbmc6aX0sYmFja2dyb3VuZDp7c3RyaW5nOml9LF9fdHlwZV9fOntvYmplY3Q6cyxzdHJpbmc6aX19LGhvdmVyOntib3JkZXI6e3N0cmluZzppfSxiYWNrZ3JvdW5kOntzdHJpbmc6aX0sX190eXBlX186e29iamVjdDpzLHN0cmluZzppfX0sX190eXBlX186e29iamVjdDpzLHN0cmluZzppfX0sZml4ZWQ6e3g6e2Jvb2xlYW46b30seTp7Ym9vbGVhbjpvfSxfX3R5cGVfXzp7b2JqZWN0OnMsYm9vbGVhbjpvfX0sZm9udDp7YWxpZ246e3N0cmluZzppfSxjb2xvcjp7c3RyaW5nOml9LHNpemU6e251bWJlcjpufSxmYWNlOntzdHJpbmc6aX0sYmFja2dyb3VuZDp7c3RyaW5nOml9LHN0cm9rZVdpZHRoOntudW1iZXI6bn0sc3Ryb2tlQ29sb3I6e3N0cmluZzppfSx2YWRqdXN0OntudW1iZXI6bn0sbXVsdGk6e2Jvb2xlYW46byxzdHJpbmc6aX0sYm9sZDp7Y29sb3I6e3N0cmluZzppfSxzaXplOntudW1iZXI6bn0sZmFjZTp7c3RyaW5nOml9LG1vZDp7c3RyaW5nOml9LHZhZGp1c3Q6e251bWJlcjpufSxfX3R5cGVfXzp7b2JqZWN0OnMsc3RyaW5nOml9fSxib2xkaXRhbDp7Y29sb3I6e3N0cmluZzppfSxzaXplOntudW1iZXI6bn0sZmFjZTp7c3RyaW5nOml9LG1vZDp7c3RyaW5nOml9LHZhZGp1c3Q6e251bWJlcjpufSxfX3R5cGVfXzp7b2JqZWN0OnMsc3RyaW5nOml9fSxpdGFsOntjb2xvcjp7c3RyaW5nOml9LHNpemU6e251bWJlcjpufSxmYWNlOntzdHJpbmc6aX0sbW9kOntzdHJpbmc6aX0sdmFkanVzdDp7bnVtYmVyOm59LF9fdHlwZV9fOntvYmplY3Q6cyxzdHJpbmc6aX19LG1vbm86e2NvbG9yOntzdHJpbmc6aX0sc2l6ZTp7bnVtYmVyOm59LGZhY2U6e3N0cmluZzppfSxtb2Q6e3N0cmluZzppfSx2YWRqdXN0OntudW1iZXI6bn0sX190eXBlX186e29iamVjdDpzLHN0cmluZzppfX0sX190eXBlX186e29iamVjdDpzLHN0cmluZzppfX0sZ3JvdXA6e3N0cmluZzppLG51bWJlcjpuLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0saGVpZ2h0Q29uc3RyYWludDp7bWluaW11bTp7bnVtYmVyOm59LHZhbGlnbjp7c3RyaW5nOml9LF9fdHlwZV9fOntvYmplY3Q6cyxib29sZWFuOm8sbnVtYmVyOm59fSxoaWRkZW46e2Jvb2xlYW46b30saWNvbjp7ZmFjZTp7c3RyaW5nOml9LGNvZGU6e3N0cmluZzppfSxzaXplOntudW1iZXI6bn0sY29sb3I6e3N0cmluZzppfSxfX3R5cGVfXzp7b2JqZWN0OnN9fSxpZDp7c3RyaW5nOmksbnVtYmVyOm59LGltYWdlOntzZWxlY3RlZDp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSx1bnNlbGVjdGVkOntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LF9fdHlwZV9fOntvYmplY3Q6cyxzdHJpbmc6aX19LGxhYmVsOntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LGxhYmVsSGlnaGxpZ2h0Qm9sZDp7Ym9vbGVhbjpvfSxsZXZlbDp7bnVtYmVyOm4sdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxtYXJnaW46e3RvcDp7bnVtYmVyOm59LHJpZ2h0OntudW1iZXI6bn0sYm90dG9tOntudW1iZXI6bn0sbGVmdDp7bnVtYmVyOm59LF9fdHlwZV9fOntvYmplY3Q6cyxudW1iZXI6bn19LG1hc3M6e251bWJlcjpufSxwaHlzaWNzOntib29sZWFuOm99LHNjYWxpbmc6e21pbjp7bnVtYmVyOm59LG1heDp7bnVtYmVyOm59LGxhYmVsOntlbmFibGVkOntib29sZWFuOm99LG1pbjp7bnVtYmVyOm59LG1heDp7bnVtYmVyOm59LG1heFZpc2libGU6e251bWJlcjpufSxkcmF3VGhyZXNob2xkOntudW1iZXI6bn0sX190eXBlX186e29iamVjdDpzLGJvb2xlYW46b319LGN1c3RvbVNjYWxpbmdGdW5jdGlvbjp7ZnVuY3Rpb246ImZ1bmN0aW9uIn0sX190eXBlX186e29iamVjdDpzfX0sc2hhZG93OntlbmFibGVkOntib29sZWFuOm99LGNvbG9yOntzdHJpbmc6aX0sc2l6ZTp7bnVtYmVyOm59LHg6e251bWJlcjpufSx5OntudW1iZXI6bn0sX190eXBlX186e29iamVjdDpzLGJvb2xlYW46b319LHNoYXBlOntzdHJpbmc6WyJlbGxpcHNlIiwiY2lyY2xlIiwiZGF0YWJhc2UiLCJib3giLCJ0ZXh0IiwiaW1hZ2UiLCJjaXJjdWxhckltYWdlIiwiZGlhbW9uZCIsImRvdCIsInN0YXIiLCJ0cmlhbmdsZSIsInRyaWFuZ2xlRG93biIsInNxdWFyZSIsImljb24iXX0sc2hhcGVQcm9wZXJ0aWVzOntib3JkZXJEYXNoZXM6e2Jvb2xlYW46byxhcnJheToiYXJyYXkifSxib3JkZXJSYWRpdXM6e251bWJlcjpufSxpbnRlcnBvbGF0aW9uOntib29sZWFuOm99LHVzZUltYWdlU2l6ZTp7Ym9vbGVhbjpvfSx1c2VCb3JkZXJXaXRoSW1hZ2U6e2Jvb2xlYW46b30sX190eXBlX186e29iamVjdDpzfX0sc2l6ZTp7bnVtYmVyOm59LHRpdGxlOntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LHZhbHVlOntudW1iZXI6bix1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LHdpZHRoQ29uc3RyYWludDp7bWluaW11bTp7bnVtYmVyOm59LG1heGltdW06e251bWJlcjpufSxfX3R5cGVfXzp7b2JqZWN0OnMsYm9vbGVhbjpvLG51bWJlcjpufX0seDp7bnVtYmVyOm59LHk6e251bWJlcjpufSxfX3R5cGVfXzp7b2JqZWN0OnN9fSxwaHlzaWNzOntlbmFibGVkOntib29sZWFuOm99LGJhcm5lc0h1dDp7Z3Jhdml0YXRpb25hbENvbnN0YW50OntudW1iZXI6bn0sY2VudHJhbEdyYXZpdHk6e251bWJlcjpufSxzcHJpbmdMZW5ndGg6e251bWJlcjpufSxzcHJpbmdDb25zdGFudDp7bnVtYmVyOm59LGRhbXBpbmc6e251bWJlcjpufSxhdm9pZE92ZXJsYXA6e251bWJlcjpufSxfX3R5cGVfXzp7b2JqZWN0OnN9fSxmb3JjZUF0bGFzMkJhc2VkOntncmF2aXRhdGlvbmFsQ29uc3RhbnQ6e251bWJlcjpufSxjZW50cmFsR3Jhdml0eTp7bnVtYmVyOm59LHNwcmluZ0xlbmd0aDp7bnVtYmVyOm59LHNwcmluZ0NvbnN0YW50OntudW1iZXI6bn0sZGFtcGluZzp7bnVtYmVyOm59LGF2b2lkT3ZlcmxhcDp7bnVtYmVyOm59LF9fdHlwZV9fOntvYmplY3Q6c319LHJlcHVsc2lvbjp7Y2VudHJhbEdyYXZpdHk6e251bWJlcjpufSxzcHJpbmdMZW5ndGg6e251bWJlcjpufSxzcHJpbmdDb25zdGFudDp7bnVtYmVyOm59LG5vZGVEaXN0YW5jZTp7bnVtYmVyOm59LGRhbXBpbmc6e251bWJlcjpufSxfX3R5cGVfXzp7b2JqZWN0OnN9fSxoaWVyYXJjaGljYWxSZXB1bHNpb246e2NlbnRyYWxHcmF2aXR5OntudW1iZXI6bn0sc3ByaW5nTGVuZ3RoOntudW1iZXI6bn0sc3ByaW5nQ29uc3RhbnQ6e251bWJlcjpufSxub2RlRGlzdGFuY2U6e251bWJlcjpufSxkYW1waW5nOntudW1iZXI6bn0sX190eXBlX186e29iamVjdDpzfX0sbWF4VmVsb2NpdHk6e251bWJlcjpufSxtaW5WZWxvY2l0eTp7bnVtYmVyOm59LHNvbHZlcjp7c3RyaW5nOlsiYmFybmVzSHV0IiwicmVwdWxzaW9uIiwiaGllcmFyY2hpY2FsUmVwdWxzaW9uIiwiZm9yY2VBdGxhczJCYXNlZCJdfSxzdGFiaWxpemF0aW9uOntlbmFibGVkOntib29sZWFuOm99LGl0ZXJhdGlvbnM6e251bWJlcjpufSx1cGRhdGVJbnRlcnZhbDp7bnVtYmVyOm59LG9ubHlEeW5hbWljRWRnZXM6e2Jvb2xlYW46b30sZml0Ontib29sZWFuOm99LF9fdHlwZV9fOntvYmplY3Q6cyxib29sZWFuOm99fSx0aW1lc3RlcDp7bnVtYmVyOm59LGFkYXB0aXZlVGltZXN0ZXA6e2Jvb2xlYW46b30sX190eXBlX186e29iamVjdDpzLGJvb2xlYW46b319LGF1dG9SZXNpemU6e2Jvb2xlYW46b30sY2xpY2tUb1VzZTp7Ym9vbGVhbjpvfSxsb2NhbGU6e3N0cmluZzppfSxsb2NhbGVzOntfX2FueV9fOnthbnk6ImFueSJ9LF9fdHlwZV9fOntvYmplY3Q6c319LGhlaWdodDp7c3RyaW5nOml9LHdpZHRoOntzdHJpbmc6aX0sX190eXBlX186e29iamVjdDpzfX07ci5ncm91cHMuX19hbnlfXz1yLm5vZGVzLHIubWFuaXB1bGF0aW9uLmNvbnRyb2xOb2RlU3R5bGU9ci5ub2Rlczt2YXIgYT17bm9kZXM6e2JvcmRlcldpZHRoOlsxLDAsMTAsMV0sYm9yZGVyV2lkdGhTZWxlY3RlZDpbMiwwLDEwLDFdLGNvbG9yOntib3JkZXI6WyJjb2xvciIsIiMyQjdDRTkiXSxiYWNrZ3JvdW5kOlsiY29sb3IiLCIjOTdDMkZDIl0saGlnaGxpZ2h0Ontib3JkZXI6WyJjb2xvciIsIiMyQjdDRTkiXSxiYWNrZ3JvdW5kOlsiY29sb3IiLCIjRDJFNUZGIl19LGhvdmVyOntib3JkZXI6WyJjb2xvciIsIiMyQjdDRTkiXSxiYWNrZ3JvdW5kOlsiY29sb3IiLCIjRDJFNUZGIl19fSxmaXhlZDp7eDohMSx5OiExfSxmb250Ontjb2xvcjpbImNvbG9yIiwiIzM0MzQzNCJdLHNpemU6WzE0LDAsMTAwLDFdLGZhY2U6WyJhcmlhbCIsInZlcmRhbmEiLCJ0YWhvbWEiXSxiYWNrZ3JvdW5kOlsiY29sb3IiLCJub25lIl0sc3Ryb2tlV2lkdGg6WzAsMCw1MCwxXSxzdHJva2VDb2xvcjpbImNvbG9yIiwiI2ZmZmZmZiJdfSxoaWRkZW46ITEsbGFiZWxIaWdobGlnaHRCb2xkOiEwLHBoeXNpY3M6ITAsc2NhbGluZzp7bWluOlsxMCwwLDIwMCwxXSxtYXg6WzMwLDAsMjAwLDFdLGxhYmVsOntlbmFibGVkOiExLG1pbjpbMTQsMCwyMDAsMV0sbWF4OlszMCwwLDIwMCwxXSxtYXhWaXNpYmxlOlszMCwwLDIwMCwxXSxkcmF3VGhyZXNob2xkOls1LDAsMjAsMV19fSxzaGFkb3c6e2VuYWJsZWQ6ITEsY29sb3I6InJnYmEoMCwwLDAsMC41KSIsc2l6ZTpbMTAsMCwyMCwxXSx4Ols1LC0zMCwzMCwxXSx5Ols1LC0zMCwzMCwxXX0sc2hhcGU6WyJlbGxpcHNlIiwiYm94IiwiY2lyY2xlIiwiZGF0YWJhc2UiLCJkaWFtb25kIiwiZG90Iiwic3F1YXJlIiwic3RhciIsInRleHQiLCJ0cmlhbmdsZSIsInRyaWFuZ2xlRG93biJdLHNoYXBlUHJvcGVydGllczp7Ym9yZGVyRGFzaGVzOiExLGJvcmRlclJhZGl1czpbNiwwLDIwLDFdLGludGVycG9sYXRpb246ITAsdXNlSW1hZ2VTaXplOiExfSxzaXplOlsyNSwwLDIwMCwxXX0sZWRnZXM6e2Fycm93czp7dG86e2VuYWJsZWQ6ITEsc2NhbGVGYWN0b3I6WzEsMCwzLC4wNV0sdHlwZToiYXJyb3cifSxtaWRkbGU6e2VuYWJsZWQ6ITEsc2NhbGVGYWN0b3I6WzEsMCwzLC4wNV0sdHlwZToiYXJyb3cifSxmcm9tOntlbmFibGVkOiExLHNjYWxlRmFjdG9yOlsxLDAsMywuMDVdLHR5cGU6ImFycm93In19LGFycm93U3RyaWtldGhyb3VnaDohMCxjb2xvcjp7Y29sb3I6WyJjb2xvciIsIiM4NDg0ODQiXSxoaWdobGlnaHQ6WyJjb2xvciIsIiM4NDg0ODQiXSxob3ZlcjpbImNvbG9yIiwiIzg0ODQ4NCJdLGluaGVyaXQ6WyJmcm9tIiwidG8iLCJib3RoIiwhMCwhMV0sb3BhY2l0eTpbMSwwLDEsLjA1XX0sZGFzaGVzOiExLGZvbnQ6e2NvbG9yOlsiY29sb3IiLCIjMzQzNDM0Il0sc2l6ZTpbMTQsMCwxMDAsMV0sZmFjZTpbImFyaWFsIiwidmVyZGFuYSIsInRhaG9tYSJdLGJhY2tncm91bmQ6WyJjb2xvciIsIm5vbmUiXSxzdHJva2VXaWR0aDpbMiwwLDUwLDFdLHN0cm9rZUNvbG9yOlsiY29sb3IiLCIjZmZmZmZmIl0sYWxpZ246WyJob3Jpem9udGFsIiwidG9wIiwibWlkZGxlIiwiYm90dG9tIl19LGhpZGRlbjohMSxob3ZlcldpZHRoOlsxLjUsMCw1LC4xXSxsYWJlbEhpZ2hsaWdodEJvbGQ6ITAscGh5c2ljczohMCxzY2FsaW5nOnttaW46WzEsMCwxMDAsMV0sbWF4OlsxNSwwLDEwMCwxXSxsYWJlbDp7ZW5hYmxlZDohMCxtaW46WzE0LDAsMjAwLDFdLG1heDpbMzAsMCwyMDAsMV0sbWF4VmlzaWJsZTpbMzAsMCwyMDAsMV0sZHJhd1RocmVzaG9sZDpbNSwwLDIwLDFdfX0sc2VsZWN0aW9uV2lkdGg6WzEuNSwwLDUsLjFdLHNlbGZSZWZlcmVuY2VTaXplOlsyMCwwLDIwMCwxXSxzaGFkb3c6e2VuYWJsZWQ6ITEsY29sb3I6InJnYmEoMCwwLDAsMC41KSIsc2l6ZTpbMTAsMCwyMCwxXSx4Ols1LC0zMCwzMCwxXSx5Ols1LC0zMCwzMCwxXX0sc21vb3RoOntlbmFibGVkOiEwLHR5cGU6WyJkeW5hbWljIiwiY29udGludW91cyIsImRpc2NyZXRlIiwiZGlhZ29uYWxDcm9zcyIsInN0cmFpZ2h0Q3Jvc3MiLCJob3Jpem9udGFsIiwidmVydGljYWwiLCJjdXJ2ZWRDVyIsImN1cnZlZENDVyIsImN1YmljQmV6aWVyIl0sZm9yY2VEaXJlY3Rpb246WyJob3Jpem9udGFsIiwidmVydGljYWwiLCJub25lIl0scm91bmRuZXNzOlsuNSwwLDEsLjA1XX0sd2lkdGg6WzEsMCwzMCwxXX0sbGF5b3V0OntoaWVyYXJjaGljYWw6e2VuYWJsZWQ6ITEsbGV2ZWxTZXBhcmF0aW9uOlsxNTAsMjAsNTAwLDVdLG5vZGVTcGFjaW5nOlsxMDAsMjAsNTAwLDVdLHRyZWVTcGFjaW5nOlsyMDAsMjAsNTAwLDVdLGJsb2NrU2hpZnRpbmc6ITAsZWRnZU1pbmltaXphdGlvbjohMCxwYXJlbnRDZW50cmFsaXphdGlvbjohMCxkaXJlY3Rpb246WyJVRCIsIkRVIiwiTFIiLCJSTCJdLHNvcnRNZXRob2Q6WyJodWJzaXplIiwiZGlyZWN0ZWQiXX19LGludGVyYWN0aW9uOntkcmFnTm9kZXM6ITAsZHJhZ1ZpZXc6ITAsaGlkZUVkZ2VzT25EcmFnOiExLGhpZGVOb2Rlc09uRHJhZzohMSxob3ZlcjohMSxrZXlib2FyZDp7ZW5hYmxlZDohMSxzcGVlZDp7eDpbMTAsMCw0MCwxXSx5OlsxMCwwLDQwLDFdLHpvb206Wy4wMiwwLC4xLC4wMDVdfSxiaW5kVG9XaW5kb3c6ITB9LG11bHRpc2VsZWN0OiExLG5hdmlnYXRpb25CdXR0b25zOiExLHNlbGVjdGFibGU6ITAsc2VsZWN0Q29ubmVjdGVkRWRnZXM6ITAsaG92ZXJDb25uZWN0ZWRFZGdlczohMCx0b29sdGlwRGVsYXk6WzMwMCwwLDFlMywyNV0sem9vbVZpZXc6ITB9LG1hbmlwdWxhdGlvbjp7ZW5hYmxlZDohMSxpbml0aWFsbHlBY3RpdmU6ITF9LHBoeXNpY3M6e2VuYWJsZWQ6ITAsYmFybmVzSHV0OntncmF2aXRhdGlvbmFsQ29uc3RhbnQ6Wy0yZTMsLTNlNCwwLDUwXSxjZW50cmFsR3Jhdml0eTpbLjMsMCwxMCwuMDVdLHNwcmluZ0xlbmd0aDpbOTUsMCw1MDAsNV0sc3ByaW5nQ29uc3RhbnQ6Wy4wNCwwLDEuMiwuMDA1XSxkYW1waW5nOlsuMDksMCwxLC4wMV0sYXZvaWRPdmVybGFwOlswLDAsMSwuMDFdfSxmb3JjZUF0bGFzMkJhc2VkOntncmF2aXRhdGlvbmFsQ29uc3RhbnQ6Wy01MCwtNTAwLDAsMV0sY2VudHJhbEdyYXZpdHk6Wy4wMSwwLDEsLjAwNV0sc3ByaW5nTGVuZ3RoOls5NSwwLDUwMCw1XSxzcHJpbmdDb25zdGFudDpbLjA4LDAsMS4yLC4wMDVdLGRhbXBpbmc6Wy40LDAsMSwuMDFdLGF2b2lkT3ZlcmxhcDpbMCwwLDEsLjAxXX0scmVwdWxzaW9uOntjZW50cmFsR3Jhdml0eTpbLjIsMCwxMCwuMDVdLHNwcmluZ0xlbmd0aDpbMjAwLDAsNTAwLDVdLHNwcmluZ0NvbnN0YW50OlsuMDUsMCwxLjIsLjAwNV0sbm9kZURpc3RhbmNlOlsxMDAsMCw1MDAsNV0sZGFtcGluZzpbLjA5LDAsMSwuMDFdfSxoaWVyYXJjaGljYWxSZXB1bHNpb246e2NlbnRyYWxHcmF2aXR5OlsuMiwwLDEwLC4wNV0sc3ByaW5nTGVuZ3RoOlsxMDAsMCw1MDAsNV0sc3ByaW5nQ29uc3RhbnQ6Wy4wMSwwLDEuMiwuMDA1XSxub2RlRGlzdGFuY2U6WzEyMCwwLDUwMCw1XSxkYW1waW5nOlsuMDksMCwxLC4wMV19LG1heFZlbG9jaXR5Ols1MCwwLDE1MCwxXSxtaW5WZWxvY2l0eTpbLjEsLjAxLC41LC4wMV0sc29sdmVyOlsiYmFybmVzSHV0IiwiZm9yY2VBdGxhczJCYXNlZCIsInJlcHVsc2lvbiIsImhpZXJhcmNoaWNhbFJlcHVsc2lvbiJdLHRpbWVzdGVwOlsuNSwuMDEsMSwuMDFdfX07ZS5hbGxPcHRpb25zPXIsZS5jb25maWd1cmVPcHRpb25zPWF9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49aSgxNzEpLHM9byhuKSxyPWkoMTM1KSxhPW8ociksaD1pKDEzNiksZD1vKGgpLGw9aSgyMzIpLHU9byhsKSxjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGksbyl7KDAsYS5kZWZhdWx0KSh0aGlzLHQpLHRoaXMuYm9keT1lLHRoaXMuc3ByaW5nTGVuZ3RoPWksdGhpcy5zcHJpbmdDb25zdGFudD1vLHRoaXMuZGlzdGFuY2VTb2x2ZXI9bmV3IHUuZGVmYXVsdH1yZXR1cm4oMCxkLmRlZmF1bHQpKHQsW3trZXk6InNldE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe3QmJih0LnNwcmluZ0xlbmd0aCYmKHRoaXMuc3ByaW5nTGVuZ3RoPXQuc3ByaW5nTGVuZ3RoKSx0LnNwcmluZ0NvbnN0YW50JiYodGhpcy5zcHJpbmdDb25zdGFudD10LnNwcmluZ0NvbnN0YW50KSl9fSx7a2V5OiJzb2x2ZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLG89dGhpcy5kaXN0YW5jZVNvbHZlci5nZXREaXN0YW5jZXModGhpcy5ib2R5LHQsZSk7dGhpcy5fY3JlYXRlTF9tYXRyaXgobyksdGhpcy5fY3JlYXRlS19tYXRyaXgobyksdGhpcy5fY3JlYXRlRV9tYXRyaXgoKTtmb3IodmFyIG49MCxyPU1hdGgubWF4KDFlMyxNYXRoLm1pbigxMCp0aGlzLmJvZHkubm9kZUluZGljZXMubGVuZ3RoLDZlMykpLGE9MWU5LGg9MCxkPTAsbD0wLHU9MCxjPTA7YT4uMDEmJm48cjspe24rPTE7dmFyIHA9dGhpcy5fZ2V0SGlnaGVzdEVuZXJneU5vZGUoaSksZj0oMCxzLmRlZmF1bHQpKHAsNCk7Zm9yKGg9ZlswXSxhPWZbMV0sZD1mWzJdLGw9ZlszXSx1PWEsYz0wO3U+MSYmYzw1Oyl7Yys9MSx0aGlzLl9tb3ZlTm9kZShoLGQsbCk7dmFyIG09dGhpcy5fZ2V0RW5lcmd5KGgpLHY9KDAscy5kZWZhdWx0KShtLDMpO3U9dlswXSxkPXZbMV0sbD12WzJdfX19fSx7a2V5OiJfZ2V0SGlnaGVzdEVuZXJneU5vZGUiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLmJvZHkubm9kZUluZGljZXMsaT10aGlzLmJvZHkubm9kZXMsbz0wLG49ZVswXSxyPTAsYT0wLGg9MDtoPGUubGVuZ3RoO2grKyl7dmFyIGQ9ZVtoXTtpZighMT09PWlbZF0ucHJlZGVmaW5lZFBvc2l0aW9ufHwhMD09PWlbZF0uaXNDbHVzdGVyJiYhMD09PXR8fCEwPT09aVtkXS5vcHRpb25zLmZpeGVkLnh8fCEwPT09aVtkXS5vcHRpb25zLmZpeGVkLnkpe3ZhciBsPXRoaXMuX2dldEVuZXJneShkKSx1PSgwLHMuZGVmYXVsdCkobCwzKSxjPXVbMF0scD11WzFdLGY9dVsyXTtvPGMmJihvPWMsbj1kLHI9cCxhPWYpfX1yZXR1cm5bbixvLHIsYV19fSx7a2V5OiJfZ2V0RW5lcmd5Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0oMCxzLmRlZmF1bHQpKHRoaXMuRV9zdW1zW3RdLDIpLGk9ZVswXSxvPWVbMV07cmV0dXJuW01hdGguc3FydChNYXRoLnBvdyhpLDIpK01hdGgucG93KG8sMikpLGksb119fSx7a2V5OiJfbW92ZU5vZGUiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtmb3IodmFyIG89dGhpcy5ib2R5Lm5vZGVJbmRpY2VzLG49dGhpcy5ib2R5Lm5vZGVzLHM9MCxyPTAsYT0wLGg9blt0XS54LGQ9blt0XS55LGw9dGhpcy5LX21hdHJpeFt0XSx1PXRoaXMuTF9tYXRyaXhbdF0sYz0wO2M8by5sZW5ndGg7YysrKXt2YXIgcD1vW2NdO2lmKHAhPT10KXt2YXIgZj1uW3BdLngsbT1uW3BdLnksdj1sW3BdLGc9dVtwXSx5PTEvTWF0aC5wb3coTWF0aC5wb3coaC1mLDIpK01hdGgucG93KGQtbSwyKSwxLjUpO3MrPXYqKDEtZypNYXRoLnBvdyhkLW0sMikqeSkscis9diooZyooaC1mKSooZC1tKSp5KSxhKz12KigxLWcqTWF0aC5wb3coaC1mLDIpKnkpfX12YXIgYj1zLF89cix3PWUseD1hLGs9aSxEPSh3L2Iray9fKS8oXy9iLXgvXyksTT0tKF8qRCt3KS9iO25bdF0ueCs9TSxuW3RdLnkrPUQsdGhpcy5fdXBkYXRlRV9tYXRyaXgodCl9fSx7a2V5OiJfY3JlYXRlTF9tYXRyaXgiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYm9keS5ub2RlSW5kaWNlcyxpPXRoaXMuc3ByaW5nTGVuZ3RoO3RoaXMuTF9tYXRyaXg9W107Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDtvKyspe3RoaXMuTF9tYXRyaXhbZVtvXV09e307Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspdGhpcy5MX21hdHJpeFtlW29dXVtlW25dXT1pKnRbZVtvXV1bZVtuXV19fX0se2tleToiX2NyZWF0ZUtfbWF0cml4Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmJvZHkubm9kZUluZGljZXMsaT10aGlzLnNwcmluZ0NvbnN0YW50O3RoaXMuS19tYXRyaXg9W107Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDtvKyspe3RoaXMuS19tYXRyaXhbZVtvXV09e307Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspdGhpcy5LX21hdHJpeFtlW29dXVtlW25dXT1pKk1hdGgucG93KHRbZVtvXV1bZVtuXV0sLTIpfX19LHtrZXk6Il9jcmVhdGVFX21hdHJpeCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmJvZHkubm9kZUluZGljZXMsZT10aGlzLmJvZHkubm9kZXM7dGhpcy5FX21hdHJpeD17fSx0aGlzLkVfc3Vtcz17fTtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKyl0aGlzLkVfbWF0cml4W3RbaV1dPVtdO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXtmb3IodmFyIG49dFtvXSxzPWVbbl0ueCxyPWVbbl0ueSxhPTAsaD0wLGQ9bztkPHQubGVuZ3RoO2QrKyl7dmFyIGw9dFtkXTtpZihsIT09bil7dmFyIHU9ZVtsXS54LGM9ZVtsXS55LHA9MS9NYXRoLnNxcnQoTWF0aC5wb3cocy11LDIpK01hdGgucG93KHItYywyKSk7dGhpcy5FX21hdHJpeFtuXVtkXT1bdGhpcy5LX21hdHJpeFtuXVtsXSoocy11LXRoaXMuTF9tYXRyaXhbbl1bbF0qKHMtdSkqcCksdGhpcy5LX21hdHJpeFtuXVtsXSooci1jLXRoaXMuTF9tYXRyaXhbbl1bbF0qKHItYykqcCldLHRoaXMuRV9tYXRyaXhbbF1bb109dGhpcy5FX21hdHJpeFtuXVtkXSxhKz10aGlzLkVfbWF0cml4W25dW2RdWzBdLGgrPXRoaXMuRV9tYXRyaXhbbl1bZF1bMV19fXRoaXMuRV9zdW1zW25dPVthLGhdfX19LHtrZXk6Il91cGRhdGVFX21hdHJpeCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuYm9keS5ub2RlSW5kaWNlcyxpPXRoaXMuYm9keS5ub2RlcyxvPXRoaXMuRV9tYXRyaXhbdF0sbj10aGlzLktfbWF0cml4W3RdLHM9dGhpcy5MX21hdHJpeFt0XSxyPWlbdF0ueCxhPWlbdF0ueSxoPTAsZD0wLGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIHU9ZVtsXTtpZih1IT09dCl7dmFyIGM9b1tsXSxwPWNbMF0sZj1jWzFdLG09aVt1XS54LHY9aVt1XS55LGc9MS9NYXRoLnNxcnQoTWF0aC5wb3coci1tLDIpK01hdGgucG93KGEtdiwyKSkseT1uW3VdKihyLW0tc1t1XSooci1tKSpnKSxiPW5bdV0qKGEtdi1zW3VdKihhLXYpKmcpO29bbF09W3ksYl0saCs9eSxkKz1iO3ZhciBfPXRoaXMuRV9zdW1zW3VdO19bMF0rPXktcCxfWzFdKz1iLWZ9fXRoaXMuRV9zdW1zW3RdPVtoLGRdfX1dKSx0fSgpO2UuZGVmYXVsdD1jfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWkoMTM1KSxzPW8obikscj1pKDEzNiksYT1vKHIpLGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7KDAscy5kZWZhdWx0KSh0aGlzLHQpfXJldHVybigwLGEuZGVmYXVsdCkodCxbe2tleToiZ2V0RGlzdGFuY2VzIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7Zm9yKHZhciBvPXt9LG49dC5lZGdlcyxzPTA7czxlLmxlbmd0aDtzKyspe3ZhciByPWVbc10sYT17fTtvW3JdPWE7Zm9yKHZhciBoPTA7aDxlLmxlbmd0aDtoKyspYVtlW2hdXT1zPT1oPzA6MWU5fWZvcih2YXIgZD0wO2Q8aS5sZW5ndGg7ZCsrKXt2YXIgbD1uW2lbZF1dOyEwPT09bC5jb25uZWN0ZWQmJnZvaWQgMCE9PW9bbC5mcm9tSWRdJiZ2b2lkIDAhPT1vW2wudG9JZF0mJihvW2wuZnJvbUlkXVtsLnRvSWRdPTEsb1tsLnRvSWRdW2wuZnJvbUlkXT0xKX1mb3IodmFyIHU9ZS5sZW5ndGgsYz0wO2M8dTtjKyspZm9yKHZhciBwPWVbY10sZj1vW3BdLG09MDttPHUtMTttKyspZm9yKHZhciB2PWVbbV0sZz1vW3ZdLHk9bSsxO3k8dTt5Kyspe3ZhciBiPWVbeV0sXz1vW2JdLHc9TWF0aC5taW4oZ1tiXSxnW3BdK2ZbYl0pO2dbYl09dyxfW3ZdPXd9cmV0dXJuIG99fV0pLHR9KCk7ZS5kZWZhdWx0PWh9XSl9KTsNCi8vIyBzb3VyY2VNYXBwaW5nVVJMPXZpcy5tYXANCg=="></script>
<script src="data:application/javascript;base64,Ly8gUHJvZHVjdGlvbiBzdGVwcyBvZiBFQ01BLTI2MiwgRWRpdGlvbiA2LCAyMi4xLjIuMQ0KLy8gUsOpZsOpcmVuY2UgOiBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtYXJyYXkuZnJvbQ0KaWYgKCFBcnJheS5mcm9tKSB7DQogIEFycmF5LmZyb20gPSAoZnVuY3Rpb24gKCkgew0KICAgIHZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7DQogICAgdmFyIGlzQ2FsbGFibGUgPSBmdW5jdGlvbiAoZm4pIHsgDQogICAgICByZXR1cm4gdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nIHx8IHRvU3RyLmNhbGwoZm4pID09PSAnW29iamVjdCBGdW5jdGlvbl0nOw0KICAgIH07DQogICAgdmFyIHRvSW50ZWdlciA9IGZ1bmN0aW9uICh2YWx1ZSkgeyANCiAgICAgIHZhciBudW1iZXIgPSBOdW1iZXIodmFsdWUpOyANCiAgICAgIGlmIChpc05hTihudW1iZXIpKSB7IHJldHVybiAwOyB9DQogICAgICBpZiAobnVtYmVyID09PSAwIHx8ICFpc0Zpbml0ZShudW1iZXIpKSB7IHJldHVybiBudW1iZXI7IH0NCiAgICAgIHJldHVybiAobnVtYmVyID4gMCA/IDEgOiAtMSkgKiBNYXRoLmZsb29yKE1hdGguYWJzKG51bWJlcikpOyANCiAgICB9Ow0KICAgIHZhciBtYXhTYWZlSW50ZWdlciA9IE1hdGgucG93KDIsIDUzKSAtIDE7DQogICAgdmFyIHRvTGVuZ3RoID0gZnVuY3Rpb24gKHZhbHVlKSB7IA0KICAgICAgdmFyIGxlbiA9IHRvSW50ZWdlcih2YWx1ZSk7DQogICAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgobGVuLCAwKSwgbWF4U2FmZUludGVnZXIpOw0KICAgIH07IA0KICANCiAgICAvLyBMYSBwcm9wcmnDqXTDqSBsZW5ndGggZGUgbGEgbcOpdGhvZGUgdmF1dCAxLg0KICAgIHJldHVybiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZS8qLCBtYXBGbiwgdGhpc0FyZyAqLykgeyANCiAgICAgIC8vIDEuIFNvaXQgQywgbGEgdmFsZXVyIHRoaXMNCiAgICAgIHZhciBDID0gdGhpczsNCiAgICAgIA0KICAgICAgLy8gMi4gU29pdCBpdGVtcyBsZSBUb09iamVjdChhcnJheUxpa2UpLg0KICAgICAgdmFyIGl0ZW1zID0gT2JqZWN0KGFycmF5TGlrZSk7IA0KICAgICAgDQogICAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChpdGVtcykuDQogICAgICBpZiAoYXJyYXlMaWtlID09IG51bGwpIHsgDQogICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkFycmF5LmZyb20gZG9pdCB1dGlsaXNlciB1biBvYmpldCBzZW1ibGFibGUgw6AgdW4gdGFibGVhdSAtIG51bGwgb3UgdW5kZWZpbmVkIG5lIHBldXZlbnQgcGFzIMOqdHJlIHV0aWxpc8OpcyIpOw0KICAgICAgfQ0KICAgIA0KICAgICAgLy8gNC4gU2kgbWFwZm4gZXN0IHVuZGVmaW5lZCwgbGUgbWFwcGluZyBzZXJhIGZhbHNlLg0KICAgICAgdmFyIG1hcEZuID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB2b2lkIHVuZGVmaW5lZDsNCiAgICAgIHZhciBUOw0KICAgICAgaWYgKHR5cGVvZiBtYXBGbiAhPT0gJ3VuZGVmaW5lZCcpIHsgIA0KICAgICAgICAvLyA1LiBzaW5vbiAgICAgIA0KICAgICAgICAvLyA1LiBhLiBzaSBJc0NhbGxhYmxlKG1hcGZuKSBlc3QgZmFsc2UsIG9uIGzDqHZlIHVuZSBUeXBlRXJyb3IuDQogICAgICAgIGlmICghaXNDYWxsYWJsZShtYXBGbikpIHsgDQogICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJyYXkuZnJvbTogbG9yc3F1IGlsIGVzdCB1dGlsaXPDqSBsZSBkZXV4acOobWUgYXJndW1lbnQgZG9pdCDDqnRyZSB1bmUgZm9uY3Rpb24nKTsgDQogICAgICAgIH0NCiAgICAgDQogICAgICAgIC8vIDUuIGIuIHNpIHRoaXNBcmcgYSDDqXTDqSBmb3VybmksIFQgc2VyYSB0aGlzQXJnIDsgc2lub24gVCBzZXJhIHVuZGVmaW5lZC4NCiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7IA0KICAgICAgICAgIFQgPSBhcmd1bWVudHNbMl07DQogICAgICAgIH0NCiAgICAgIH0NCiAgICANCiAgICAgIC8vIDEwLiBTb2l0IGxlblZhbHVlIHBvdXIgR2V0KGl0ZW1zLCAibGVuZ3RoIikuDQogICAgICAvLyAxMS4gU29pdCBsZW4gcG91ciBUb0xlbmd0aChsZW5WYWx1ZSkuDQogICAgICB2YXIgbGVuID0gdG9MZW5ndGgoaXRlbXMubGVuZ3RoKTsgIA0KICAgICANCiAgICAgIC8vIDEzLiBTaSBJc0NvbnN0cnVjdG9yKEMpIHZhdXQgdHJ1ZSwgYWxvcnMNCiAgICAgIC8vIDEzLiBhLiBTb2l0IEEgbGUgcsOpc3VsdGF0IGRlIGwnYXBwZWwgw6AgbGEgbcOpdGhvZGUgaW50ZXJuZSBbW0NvbnN0cnVjdF1dIGF2ZWMgdW5lIGxpc3RlIGVuIGFyZ3VtZW50IHF1aSBjb250aWVudCBsJ8OpbMOpbWVudCBsZW4uDQogICAgICAvLyAxNC4gYS4gU2lub24sIHNvaXQgQSBsZSByw6lzdWx0YXQgZGUgQXJyYXlDcmVhdGUobGVuKS4NCiAgICAgIHZhciBBID0gaXNDYWxsYWJsZShDKSA/IE9iamVjdChuZXcgQyhsZW4pKSA6IG5ldyBBcnJheShsZW4pOw0KICAgDQogICAgICAvLyAxNi4gU29pdCBrIMOpZ2FsIMOgIDAuDQogICAgICB2YXIgayA9IDA7ICAvLyAxNy4gT24gcsOpcMOodGUgdGFudCBxdWUgayA8IGxlbuKApiANCiAgICAgIHZhciBrVmFsdWU7DQogICAgICB3aGlsZSAoayA8IGxlbikgew0KICAgICAgICBrVmFsdWUgPSBpdGVtc1trXTsgDQogICAgICAgIGlmIChtYXBGbikgew0KICAgICAgICAgIEFba10gPSB0eXBlb2YgVCA9PT0gJ3VuZGVmaW5lZCcgPyBtYXBGbihrVmFsdWUsIGspIDogbWFwRm4uY2FsbChULCBrVmFsdWUsIGspOyANCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICBBW2tdID0ga1ZhbHVlOw0KICAgICAgICB9DQogICAgICAgIGsgKz0gMTsNCiAgICAgIH0NCiAgICAgIC8vIDE4LiBTb2l0IHB1dFN0YXR1cyDDqWdhbCDDoCBQdXQoQSwgImxlbmd0aCIsIGxlbiwgdHJ1ZSkuDQogICAgICBBLmxlbmd0aCA9IGxlbjsgIC8vIDIwLiBPbiByZW52b2llIEEuDQogICAgICByZXR1cm4gQTsNCiAgICB9Ow0KICB9KCkpOw0KfTsNCg0KDQovLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXMNCmlmICghQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzKSB7DQogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICdpbmNsdWRlcycsIHsNCiAgICB2YWx1ZTogZnVuY3Rpb24oc2VhcmNoRWxlbWVudCwgZnJvbUluZGV4KSB7DQoNCiAgICAgIGlmICh0aGlzID09IG51bGwpIHsNCiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignInRoaXMiIGVzdCBudWwgb3Ugbm9uIGTDqWZpbmknKTsNCiAgICAgIH0NCg0KICAgICAgLy8gMS4gU29pdCBvIMOpZ2FsIMOgID8gT2JqZWN0KGNldHRlIHZhbGV1cikuDQogICAgICB2YXIgbyA9IE9iamVjdCh0aGlzKTsNCg0KICAgICAgLy8gMi4gU29pdCBsZW4gw6lnYWwgw6AgPyBMZW5ndGgoPyBHZXQobywgImxlbmd0aCIpKS4NCiAgICAgIHZhciBsZW4gPSBvLmxlbmd0aCA+Pj4gMDsNCg0KICAgICAgLy8gMy4gU2kgbGVuID0gMCwgcmVudm95ZXIgImZhbHNlIi4NCiAgICAgIGlmIChsZW4gPT09IDApIHsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgfQ0KDQogICAgICAvLyA0LiBTb2l0IG4gPSA/IFRvSW50ZWdlcihmcm9tSW5kZXgpLg0KICAgICAgLy8gUG91ciBsYSBjb2jDqXJlbmNlIGR1IGNvZGUsIG9uIGdhcmRlcmEgbGUgbm9tIGFuZ2xhaXMgImZyb21JbmRleCIgcG91ciBsYSB2YXJpYWJsZSBhdXBhcmF2YW50IGFwcGVsw6llICJpbmRpY2VEw6lwYXJ0Ig0KICAgICAgLy8gICAgKFNpIGZyb21JbmRleCBuJ2VzdCBwYXMgZMOpZmluaSwgY2V0dGUgw6l0YXBlIHByb2R1aXQgbGEgdmFsZXVyIDAuKQ0KICAgICAgdmFyIG4gPSBmcm9tSW5kZXggfCAwOw0KDQogICAgICAvLyA1LiBTaSBuIOKJpSAwLA0KICAgICAgLy8gIGEuIEFsb3JzIGsgPSBuLg0KICAgICAgLy8gNi4gU2lub24sIHNpIG4gPCAwLA0KICAgICAgLy8gIGEuIEFsb3JzIGsgPSBsZW4gKyBuLg0KICAgICAgLy8gIGIuIFNpIGsgPCAwLCBhbG9ycyBrID0gMC4NCiAgICAgIHZhciBrID0gTWF0aC5tYXgobiA+PSAwID8gbiA6IGxlbiAtIE1hdGguYWJzKG4pLCAwKTsNCg0KICAgICAgZnVuY3Rpb24gc2FtZVZhbHVlWmVybyh4LCB5KSB7DQogICAgICAgIHJldHVybiB4ID09PSB5IHx8ICh0eXBlb2YgeCA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHkgPT09ICdudW1iZXInICYmIGlzTmFOKHgpICYmIGlzTmFOKHkpKTsNCiAgICAgIH0NCg0KICAgICAgLy8gNy4gUsOpcMOpdGVyIHRhbnQgcXVlIGsgPCBsZW4NCiAgICAgIHdoaWxlIChrIDwgbGVuKSB7DQogICAgICAgIC8vIGEuIFNvaXQgZWxlbWVudEsgbGUgcsOpc3VsdGF0IGRlID8gR2V0KE8sICEgVG9TdHJpbmcoaykpLg0KICAgICAgICAvLyBiLiBTaSBTYW1lVmFsdWVaZXJvKHNlYXJjaEVsZW1lbnQsIGVsZW1lbnRLKSBlc3QgdnJhaSwgcmVudm95ZXIgInRydWUiLg0KICAgICAgICBpZiAoc2FtZVZhbHVlWmVybyhvW2tdLCBzZWFyY2hFbGVtZW50KSkgew0KICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQogICAgICAgIC8vIGMuIEF1Z21lbnRlciBsYSB2YWxldXIgZGUgayBkZSAxLiANCiAgICAgICAgaysrOw0KICAgICAgfQ0KDQogICAgICAvLyA4LiBSZW52b3llciAiZmFsc2UiDQogICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KICB9KTsNCn0NCg0KLy8gQWRkIHNoaW0gZm9yIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kKCkgZnJvbToNCi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRnVuY3Rpb24vYmluZCNDb21wYXRpYmlsaXR5DQovLyBmb3IgZml4IHNvbWUgUlN0dWRpbyB2aWV3ZXIgYnVnIChEZXNrdG9wIC8gd2luZG93cykNCmlmICghRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQpIHsNCiAgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAob1RoaXMpIHsNCiAgICBpZiAodHlwZW9mIHRoaXMgIT09ICJmdW5jdGlvbiIpIHsNCiAgICAgIC8vIGNsb3Nlc3QgdGhpbmcgcG9zc2libGUgdG8gdGhlIEVDTUFTY3JpcHQgNSBpbnRlcm5hbCBJc0NhbGxhYmxlIGZ1bmN0aW9uDQogICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbi5wcm90b3R5cGUuYmluZCAtIHdoYXQgaXMgdHJ5aW5nIHRvIGJlIGJvdW5kIGlzIG5vdCBjYWxsYWJsZSIpOw0KICAgIH0NCiAgICANCiAgICB2YXIgYUFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpLA0KICAgIGZUb0JpbmQgPSB0aGlzLA0KICAgIGZOT1AgPSBmdW5jdGlvbiAoKSB7fSwNCiAgICBmQm91bmQgPSBmdW5jdGlvbiAoKSB7DQogICAgICByZXR1cm4gZlRvQmluZC5hcHBseSh0aGlzIGluc3RhbmNlb2YgZk5PUCAmJiBvVGhpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzDQogICAgICAgICAgICAgICAgICAgICAgICAgICA6IG9UaGlzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgYUFyZ3MuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKTsNCiAgICB9Ow0KICAgIA0KICAgIGZOT1AucHJvdG90eXBlID0gdGhpcy5wcm90b3R5cGU7DQogICAgZkJvdW5kLnByb3RvdHlwZSA9IG5ldyBmTk9QKCk7DQogICAgDQogICAgcmV0dXJuIGZCb3VuZDsNCiAgfTsNCn0NCg0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gZnVuY3Rpb25zIHRvIHJlc2V0IGVkZ2VzIGFmdGVyIGhhcmQgdG8gcmVhZA0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQovLyBmb3IgZWRnZXMNCmZ1bmN0aW9uIGVkZ2VBc0hhcmRUb1JlYWQoZWRnZSwgaGlkZUNvbG9yMSwgaGlkZUNvbG9yMiwgbmV0d29yaywgdHlwZSl7DQogIC8vY29uc29sZS5pbmZvKCJlZGdlQXNIYXJkVG9SZWFkIikNCiAgDQogIGlmKHR5cGUgPT09ICJlZGdlIil7DQogICAgLy9jb25zb2xlLmluZm8oImVkZ2UiKQ0KICAgIC8vY29uc29sZS5pbmZvKGVkZ2UuaWQpDQogICAgDQogICAgLy8gc2F2aW5nIGNvbG9yIGluZm9ybWF0aW9uIChpZiB3ZSBoYXZlKQ0KICAgIGlmIChlZGdlLmhpZGRlbkNvbG9yID09PSB1bmRlZmluZWQgJiYgZWRnZS5jb2xvciAhPT0gaGlkZUNvbG9yMSAmJiBlZGdlLmNvbG9yICE9PSBoaWRlQ29sb3IyKSB7DQogICAgICBlZGdlLmhpZGRlbkNvbG9yID0gZWRnZS5jb2xvcjsNCiAgICB9DQogICAgLy8gc2V0ICJoYXJkIHRvIHJlYWQiIGNvbG9yDQogICAgZWRnZS5jb2xvciA9IGhpZGVDb2xvcjE7DQogICAgDQogICAgLy8gcmVzZXQgYW5kIHNhdmUgbGFiZWwNCiAgICBpZiAoZWRnZS5oaWRkZW5MYWJlbCA9PT0gdW5kZWZpbmVkKSB7DQogICAgICBlZGdlLmhpZGRlbkxhYmVsID0gZWRnZS5sYWJlbDsNCiAgICAgIGVkZ2UubGFiZWwgPSB1bmRlZmluZWQ7DQogICAgfQ0KICAgIGVkZ2UuaXNIYXJkVG9SZWFkID0gdHJ1ZTsNCiAgfSBlbHNlIHsNCiAgICAvL2NvbnNvbGUuaW5mbygiY2x1c3RlciIpDQogICAgLy9jb25zb2xlLmluZm8oZWRnZS5pZCkNCiAgICAvL2NvbnNvbGUuaW5mbyhlZGdlKQ0KICAgIC8vIHNhdmluZyBjb2xvciBpbmZvcm1hdGlvbiAoaWYgd2UgaGF2ZSkNCiAgICBpZiAoZWRnZS5oaWRkZW5Db2xvciA9PT0gdW5kZWZpbmVkICYmIGVkZ2UuY29sb3IgIT09IGhpZGVDb2xvcjEgJiYgZWRnZS5jb2xvciAhPT0gaGlkZUNvbG9yMikgew0KICAgICAgLy9uZXR3b3JrLmNsdXN0ZXJpbmcudXBkYXRlRWRnZShlZGdlLmlkLCB7aGlkZGVuQ29sb3IgOiBlZGdlLmNvbG9yfSk7DQogICAgICBlZGdlLmhpZGRlbkNvbG9yID0gZWRnZS5jb2xvcjsNCiAgICB9DQogICAgLy8gc2V0ICJoYXJkIHRvIHJlYWQiIGNvbG9yDQogICAgZWRnZS5jb2xvciA9IGhpZGVDb2xvcjE7DQogICAgLy9uZXR3b3JrLmNsdXN0ZXJpbmcudXBkYXRlRWRnZShlZGdlLmlkLCB7Y29sb3IgOiBoaWRlQ29sb3IxfSk7DQogICAgLy9lZGdlLmNvbG9yID0gaGlkZUNvbG9yMTsNCiAgICAvLyByZXNldCBhbmQgc2F2ZSBsYWJlbA0KICAgIGlmIChlZGdlLmhpZGRlbkxhYmVsID09PSB1bmRlZmluZWQpIHsNCiAgICAgIGVkZ2UuaGlkZGVuTGFiZWwgPSBlZGdlLmxhYmVsOw0KICAgICAgZWRnZS5sYWJlbCA9IHVuZGVmaW5lZDsNCiAgICB9DQogICAgZWRnZS5pc0hhcmRUb1JlYWQgPSB0cnVlOw0KICB9DQoNCn0NCg0KZnVuY3Rpb24gcmVzZXRPbmVFZGdlKGVkZ2UsIGhpZGVDb2xvcjEsIGhpZGVDb2xvcjIsIHR5cGUpew0KICANCiAgLypjb25zb2xlLmluZm8oInJlc2V0T25lRWRnZSIpDQogIGNvbnNvbGUuaW5mbyh0eXBlKQ0KICBjb25zb2xlLmluZm8oZWRnZS5pZCkgDQogIGNvbnNvbGUuaW5mbyhlZGdlKQ0KICBjb25zb2xlLmluZm8oImVkZ2UuaGlkZGVuQ29sb3IiKQ0KICBjb25zb2xlLmluZm8oZWRnZS5oaWRkZW5Db2xvcikqLw0KICANCiAgdmFyIHRyZWF0X2VnZGUgPSBmYWxzZTsNCiAgaWYodHlwZSA9PT0gImNsdXN0ZXIiKXsNCiAgICBpZihlZGdlLmlzSGFyZFRvUmVhZCAhPT0gdW5kZWZpbmVkKXsgLy8gd2UgaGF2ZSB0byByZXNldCB0aGlzIG5vZGUNCiAgICAgIGlmKGVkZ2UuaXNIYXJkVG9SZWFkKXsNCiAgICAgICAgdHJlYXRfZWdkZSA9IHRydWU7DQogICAgICB9IGVsc2UgaWYoZWRnZS5pc0hhcmRUb1JlYWQgPT09IGZhbHNlICYmIChlZGdlLmNvbG9yLmNvbG9yID09PSBoaWRlQ29sb3IxIHx8IGVkZ2UuY29sb3IuY29sb3IgPT09IGhpZGVDb2xvcjIpKXsNCiAgICAgICAgdHJlYXRfZWdkZSA9IHRydWU7DQogICAgICB9DQogICAgfSBlbHNlIGlmKGVkZ2UuY29sb3IuY29sb3IgPT09IGhpZGVDb2xvcjEgfHwgZWRnZS5jb2xvci5jb2xvciA9PT0gaGlkZUNvbG9yMil7DQogICAgICB0cmVhdF9lZ2RlID0gdHJ1ZTsNCiAgICB9DQogICAgDQogICAgaWYodHJlYXRfZWdkZSl7DQogICAgICAvLyBnZXQgYmFjayBjb2xvcg0KICAgICAgaWYgKGVkZ2UuaGlkZGVuQ29sb3IgIT09IHVuZGVmaW5lZCkgew0KICAgICAgICBlZGdlLmNvbG9yID0gZWRnZS5oaWRkZW5Db2xvcjsNCiAgICAgICAgZWRnZS5oaWRkZW5Db2xvciA9IHVuZGVmaW5lZDsNCiAgICAgIH1lbHNlew0KICAgICAgICBkZWxldGUgZWRnZS5jb2xvcjsNCiAgICAgIH0NCiAgICAgICAgDQogICAgICAvLyBmaW5hbGx5LCBnZXQgYmFjayBsYWJlbA0KICAgICAgaWYgKGVkZ2UuaGlkZGVuTGFiZWwgIT09IHVuZGVmaW5lZCkgew0KICAgICAgICBlZGdlLmxhYmVsID0gZWRnZS5oaWRkZW5MYWJlbDsNCiAgICAgICAgZWRnZS5oaWRkZW5MYWJlbCA9IHVuZGVmaW5lZDsNCiAgICAgIH0NCiAgICAgIGVkZ2UuaXNIYXJkVG9SZWFkID0gZmFsc2U7DQogICAgfQ0KICB9IGVsc2Ugew0KICAgIC8vIGdldCBiYWNrIGNvbG9yDQogICAgaWYgKGVkZ2UuaGlkZGVuQ29sb3IgIT09IHVuZGVmaW5lZCkgew0KICAgICAgZWRnZS5jb2xvciA9IGVkZ2UuaGlkZGVuQ29sb3I7DQogICAgICBlZGdlLmhpZGRlbkNvbG9yID0gdW5kZWZpbmVkOw0KICAgIH1lbHNlew0KICAgICAgZWRnZS5jb2xvciA9IG51bGw7DQogICAgfQ0KICAgIA0KICAgIC8vIGZpbmFsbHksIGdldCBiYWNrIGxhYmVsDQogICAgaWYgKGVkZ2UuaGlkZGVuTGFiZWwgIT09IHVuZGVmaW5lZCkgew0KICAgICAgZWRnZS5sYWJlbCA9IGVkZ2UuaGlkZGVuTGFiZWw7DQogICAgICBlZGdlLmhpZGRlbkxhYmVsID0gdW5kZWZpbmVkOw0KICAgIH0NCiAgICBlZGdlLmlzSGFyZFRvUmVhZCA9IGZhbHNlOw0KICB9DQp9DQoNCmZ1bmN0aW9uIHJlc2V0QWxsRWRnZXMoZWRnZXMsIGhpZGVDb2xvcjEsIGhpZGVDb2xvcjIsIG5ldHdvcmspew0KICANCiAgdmFyIGVkZ2VzVG9SZXNldCA9IGVkZ2VzLmdldCh7DQogICAgZmllbGRzOiBbJ2lkJywgJ2NvbG9yJywgJ2hpZGRlbkNvbG9yJywgJ2xhYmVsJywgJ2hpZGRlbkxhYmVsJ10sDQogICAgZmlsdGVyOiBmdW5jdGlvbiAoaXRlbSkgew0KICAgICAgcmV0dXJuIGl0ZW0uaXNIYXJkVG9SZWFkID09PSB0cnVlOw0KICAgIH0sDQogICAgcmV0dXJuVHlwZSA6J0FycmF5Jw0KICB9KTsNCg0KICB2YXIgaXNfY2x1c3Rlcl9lZGdlcyA9IGZhbHNlOw0KICB2YXIgZWRnZXNfaW5fY2x1c3RlcnM7DQogIGlmKG5ldHdvcmsgIT09IHVuZGVmaW5lZCl7DQogICAgZWRnZXNfaW5fY2x1c3RlcnMgPSBuZXR3b3JrLmJvZHkubW9kdWxlcy5jbHVzdGVyaW5nLmNsdXN0ZXJlZEVkZ2VzOw0KICAgIGlmKE9iamVjdC5rZXlzKGVkZ2VzX2luX2NsdXN0ZXJzKS5sZW5ndGggPiAwKXsNCiAgICAgIGlzX2NsdXN0ZXJfZWRnZXMgPSB0cnVlOw0KICAgICAgZWRnZXNfaW5fY2x1c3RlcnMgPSBPYmplY3Qua2V5cyhlZGdlc19pbl9jbHVzdGVycyk7DQogICAgfSBlbHNlIHsNCiAgICAgIGVkZ2VzX2luX2NsdXN0ZXJzID0gW107DQogICAgfQ0KICB9DQogIA0KICB2YXIgdHJlYXRfZWRnZXNfaW5fY2x1c3RlcnMgPSBbXTsNCiAgLy8gYWxsIGVkZ2VzIGdldCB0aGVpciBvd24gY29sb3IgYW5kIHRoZWlyIGxhYmVsIGJhY2sNCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlc1RvUmVzZXQubGVuZ3RoOyBpKyspIHsNCiAgICByZXNldE9uZUVkZ2UoZWRnZXNUb1Jlc2V0W2ldLCBoaWRlQ29sb3IxLCBoaWRlQ29sb3IyLHR5cGUgPSAiZWRnZSIpOw0KICAgIGlmKGlzX2NsdXN0ZXJfZWRnZXMpew0KICAgICAgaWYoaW5kZXhPZi5jYWxsKGVkZ2VzX2luX2NsdXN0ZXJzLCBlZGdlc1RvUmVzZXRbaV0uaWQsIHRydWUpID4gLTEpew0KICAgICAgICB2YXIgdG1wX2NsdXN0ZXJfaWQgPSBuZXR3b3JrLmNsdXN0ZXJpbmcuZ2V0Q2x1c3RlcmVkRWRnZXMoZWRnZXNUb1Jlc2V0W2ldLmlkKTsNCiAgICAgICAgaWYodG1wX2NsdXN0ZXJfaWQubGVuZ3RoID4gMSl7DQogICAgICAgICAgdG1wX2NsdXN0ZXJfaWQgPSB0bXBfY2x1c3Rlcl9pZFswXTsNCiAgICAgICAgICB0cmVhdF9lZGdlc19pbl9jbHVzdGVycy5wdXNoKHRtcF9jbHVzdGVyX2lkKTsNCiAgICAgICAgICByZXNldE9uZUVkZ2UobmV0d29yay5ib2R5LmVkZ2VzW3RtcF9jbHVzdGVyX2lkXS5vcHRpb25zLCBoaWRlQ29sb3IxLCBoaWRlQ29sb3IyLCB0eXBlID0gImNsdXN0ZXIiKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgfQ0KICANCiAgLy8gc29tZSBtaXN1bmRlcnN0b29kIGJ1ZyBvbiBzb21lIGNsdXN0ZXIgZWRnZXMuLi4gc28gaGF2ZSBhIChiYWQpIGZpeC4uLg0KICB2YXIgZWRnZXNfaW5fY2x1c3RlcnNfY3RybCA9IGVkZ2VzX2luX2NsdXN0ZXJzLmZpbHRlcihmdW5jdGlvbih3b3JkLGluZGV4KXsNCiAgICBpZih3b3JkLm1hdGNoKC9eY2x1c3RlckVkZ2UvaSkpew0KICAgICAgaWYoaW5kZXhPZi5jYWxsKHRyZWF0X2VkZ2VzX2luX2NsdXN0ZXJzLCB3b3JkLCB0cnVlKSA9PT0gLTEpew0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgIH0NCiAgICAgICAgDQogICAgfWVsc2V7DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQogIH0pOw0KICANCiAgaWYoaXNfY2x1c3Rlcl9lZGdlcyl7DQogICAgaWYoZWRnZXNfaW5fY2x1c3RlcnNfY3RybC5sZW5ndGggPiAwKXsNCiAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGVkZ2VzX2luX2NsdXN0ZXJzX2N0cmwubGVuZ3RoOyBqKyspIHsNCiAgICAgICAgIGlmKG5ldHdvcmsuYm9keS5lZGdlc1tlZGdlc19pbl9jbHVzdGVyc19jdHJsW2pdXSAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgcmVzZXRPbmVFZGdlKG5ldHdvcmsuYm9keS5lZGdlc1tlZGdlc19pbl9jbHVzdGVyc19jdHJsW2pdXS5vcHRpb25zLCBoaWRlQ29sb3IxLCBoaWRlQ29sb3IyLCB0eXBlID0gImNsdXN0ZXIiKTsNCiAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgfQ0KDQogIGVkZ2VzLnVwZGF0ZShlZGdlc1RvUmVzZXQpOw0KfQ0KDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBmdW5jdGlvbnMgdG8gcmVzZXQgbm9kZXMgYWZ0ZXIgaGFyZCB0byByZWFkDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCi8vIGZvciBjbGFzc2ljIG5vZGUNCmZ1bmN0aW9uIHNpbXBsZVJlc2V0Tm9kZShub2RlLCB0eXBlKXsNCiAgaWYodHlwZSA9PT0gIm5vZGUiKXsNCiAgICAvLyBnZXQgYmFjayBjb2xvcg0KICAgIGlmIChub2RlLmhpZGRlbkNvbG9yICE9PSB1bmRlZmluZWQpIHsNCiAgICAgIG5vZGUuY29sb3IgPSBub2RlLmhpZGRlbkNvbG9yOw0KICAgICAgbm9kZS5oaWRkZW5Db2xvciA9IHVuZGVmaW5lZDsNCiAgICB9ZWxzZXsNCiAgICAgIGlmKG5vZGUuZ3JvdXAgIT09IHVuZGVmaW5lZCl7DQogICAgICAgIG5vZGUuY29sb3IgPSB1bmRlZmluZWQ7DQogICAgICB9IGVsc2Ugew0KICAgICAgICBub2RlLmNvbG9yID0gbnVsbDsNCiAgICAgIH0NCiAgICB9DQogIH0gZWxzZSB7DQogICAgaWYgKE9iamVjdC5rZXlzKG5vZGUub3B0aW9ucy5oaWRkZW5Db2xvcikubGVuZ3RoID4gMil7DQogICAgICBub2RlLnNldE9wdGlvbnMoe2NvbG9yIDogbm9kZS5vcHRpb25zLmhpZGRlbkNvbG9yLCBoaWRkZW5Db2xvciA6IHVuZGVmaW5lZH0pOw0KICAgIH1lbHNlew0KICAgICAgaWYobm9kZS5vcHRpb25zLmdyb3VwICE9PSB1bmRlZmluZWQpew0KICAgICAgICBub2RlLnNldE9wdGlvbnMoe2NvbG9yIDogdW5kZWZpbmVkfSk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICBub2RlLnNldE9wdGlvbnMoe2NvbG9yIDogbnVsbH0pOw0KICAgICAgfQ0KICAgIH0NCiAgfQ0KfQ0KDQovLyBmb3IgaWNvbiBub2RlDQpmdW5jdGlvbiBzaW1wbGVJY29uUmVzZXROb2RlKG5vZGUsIHR5cGUpew0KICBpZih0eXBlID09PSAibm9kZSIpeyAgDQogICAgLy8gaWNvbiBjb2xvcg0KICAgIG5vZGUuaWNvbi5jb2xvciA9IG5vZGUuaGlkZGVuQ29sb3I7DQogICAgbm9kZS5oaWRkZW5Db2xvciA9IHVuZGVmaW5lZDsNCiAgICAvLyBnZXQgYmFjayBjb2xvcg0KICAgIGlmIChub2RlLmhpZGRlbkNvbG9yRm9yTGFiZWwgIT09IHVuZGVmaW5lZCkgew0KICAgICAgbm9kZS5jb2xvciA9IG5vZGUuaGlkZGVuQ29sb3JGb3JMYWJlbDsNCiAgICAgIG5vZGUuaGlkZGVuQ29sb3JGb3JMYWJlbCA9IHVuZGVmaW5lZDsNCiAgICB9ZWxzZXsNCiAgICAgIGlmKG5vZGUuZ3JvdXAgIT09IHVuZGVmaW5lZCl7DQogICAgICAgIG5vZGUuY29sb3IgPSB1bmRlZmluZWQ7DQogICAgICB9IGVsc2Ugew0KICAgICAgICBub2RlLmNvbG9yID0gbnVsbDsNCiAgICAgIH0NCiAgICB9DQogIH0gZWxzZSB7DQogICAgbm9kZS5zZXRPcHRpb25zKHtpY29uIDogeyBjb2xvciA6IG5vZGUub3B0aW9ucy5oaWRkZW5Db2xvcn0sIGhpZGRlbkNvbG9yIDogdW5kZWZpbmVkfSk7DQogICAgaWYgKG5vZGUub3B0aW9ucy5oaWRkZW5Db2xvckZvckxhYmVsICE9PSB1bmRlZmluZWQpIHsNCiAgICAgIG5vZGUuc2V0T3B0aW9ucyh7Y29sb3IgOiBub2RlLm9wdGlvbnMuaGlkZGVuQ29sb3JGb3JMYWJlbCwgaGlkZGVuQ29sb3JGb3JMYWJlbCA6IHVuZGVmaW5lZH0pOw0KICAgIH1lbHNlew0KICAgICAgaWYobm9kZS5vcHRpb25zLmdyb3VwICE9PSB1bmRlZmluZWQpew0KICAgICAgICBub2RlLnNldE9wdGlvbnMoe2NvbG9yIDogdW5kZWZpbmVkfSk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICBub2RlLnNldE9wdGlvbnMoe2NvbG9yIDogbnVsbH0pOw0KICAgICAgfQ0KICAgIH0NCiAgfQ0KfQ0KDQovLyBmb3IgaW1hZ2Ugbm9kZQ0KZnVuY3Rpb24gc2ltcGxlSW1hZ2VSZXNldE5vZGUobm9kZSwgaW1hZ2VUeXBlLCB0eXBlKXsNCiAgaWYodHlwZSA9PT0gIm5vZGUiKXsgIA0KICAgIC8vIGdldCBiYWNrIGNvbG9yDQogICAgaWYgKG5vZGUuaGlkZGVuQ29sb3IgIT09IHVuZGVmaW5lZCkgew0KICAgICAgbm9kZS5jb2xvciA9IG5vZGUuaGlkZGVuQ29sb3I7DQogICAgICBub2RlLmhpZGRlbkNvbG9yID0gdW5kZWZpbmVkOw0KICAgIH1lbHNlew0KICAgICAgaWYobm9kZS5ncm91cCAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgbm9kZS5jb2xvciA9IHVuZGVmaW5lZDsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIG5vZGUuY29sb3IgPSBudWxsOw0KICAgICAgfQ0KICAgIH0NCiAgICAvLyBhbmQgc2V0IHNoYXBlIGFzIGltYWdlL2NpcmN1bGFySW1hZ2UNCiAgICBub2RlLnNoYXBlID0gaW1hZ2VUeXBlOw0KICB9IGVsc2Ugew0KICAgIGlmIChPYmplY3Qua2V5cyhub2RlLm9wdGlvbnMuaGlkZGVuQ29sb3IpLmxlbmd0aCA+IDIpIHsNCiAgICAgIG5vZGUuc2V0T3B0aW9ucyh7Y29sb3IgOiBub2RlLm9wdGlvbnMuaGlkZGVuQ29sb3IsIGhpZGRlbkNvbG9yIDogdW5kZWZpbmVkfSk7DQogICAgfWVsc2V7DQogICAgICBpZihub2RlLm9wdGlvbnMuZ3JvdXAgIT09IHVuZGVmaW5lZCl7DQogICAgICAgIG5vZGUuc2V0T3B0aW9ucyh7Y29sb3IgOiB1bmRlZmluZWR9KTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIG5vZGUuc2V0T3B0aW9ucyh7Y29sb3IgOiBudWxsfSk7DQogICAgICB9DQogICAgfQ0KICAgIG5vZGUuc2V0T3B0aW9ucyh7c2hhcGUgOiBpbWFnZVR5cGV9KTsNCiAgfQ0KfQ0KDQovLyBHbG9iYWwgZnVuY3Rpb24gdG8gcmVzZXQgb25lIGNsdXN0ZXINCmZ1bmN0aW9uIHJlc2V0T25lQ2x1c3Rlcihub2RlLCBncm91cHMsIG9wdGlvbnMsIG5ldHdvcmspew0KICBpZihub2RlICE9PSB1bmRlZmluZWQpew0KICAgIGlmKG5vZGUub3B0aW9ucy5pc0hhcmRUb1JlYWQgIT09IHVuZGVmaW5lZCl7IC8vIHdlIGhhdmUgdG8gcmVzZXQgdGhpcyBub2RlDQogICAgICBpZihub2RlLm9wdGlvbnMuaXNIYXJkVG9SZWFkKXsNCiAgICAgICAgdmFyIGZpbmFsX3NoYXBlOw0KICAgICAgICB2YXIgc2hhcGVfZ3JvdXAgPSBmYWxzZTsNCiAgICAgICAgdmFyIGlzX2dyb3VwID0gZmFsc2U7DQogIAkgIC8vIGhhdmUgYSBncm91cCBpbmZvcm1hdGlvbiAmIGEgc2hhcGUgZGVmaW5lZCBpbiBncm91cCA/DQogICAgICAgIGlmKG5vZGUub3B0aW9ucy5ncm91cCAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICBpZihncm91cHMuZ3JvdXBzW25vZGUub3B0aW9ucy5ncm91cF0gIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICBpc19ncm91cCA9IHRydWU7DQogICAgICAgICAgICBpZihncm91cHMuZ3JvdXBzW25vZGUub3B0aW9ucy5ncm91cF0uc2hhcGUgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICAgIHNoYXBlX2dyb3VwID0gdHJ1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLy8gaGF2ZSBhIGdsb2JhbCBzaGFwZSBpbiBub2RlcyBvcHRpb25zID8NCiAgICAgICAgdmFyIHNoYXBlX29wdGlvbnMgPSBmYWxzZTsNCiAgICAgICAgaWYob3B0aW9ucy5ub2RlcyAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICBpZihvcHRpb25zLm5vZGVzLnNoYXBlICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgc2hhcGVfb3B0aW9ucyA9IHRydWU7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIC8vIHNldCBmaW5hbCBzaGFwZSAoaW5kaXZpZHVhbCA+IGdyb3VwID4gZ2xvYmFsKQ0KICAgICAgICBpZihub2RlLm9wdGlvbnMuaGlkZGVuSW1hZ2UgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgZmluYWxfc2hhcGUgPSBub2RlLm9wdGlvbnMuaGlkZGVuSW1hZ2U7DQogICAgICAgIH0gZWxzZSBpZihub2RlLm9wdGlvbnMuc2hhcGUgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgZmluYWxfc2hhcGUgPSBub2RlLm9wdGlvbnMuc2hhcGU7DQogICAgICAgIH0gZWxzZSBpZihzaGFwZV9ncm91cCl7DQogICAgICAgICAgZmluYWxfc2hhcGUgPSBncm91cHMuZ3JvdXBzW25vZGUub3B0aW9ucy5ncm91cF0uc2hhcGU7DQogICAgICAgIH0gZWxzZSBpZihzaGFwZV9vcHRpb25zKXsNCiAgICAgICAgICBmaW5hbF9zaGFwZSA9IG9wdGlvbnMubm9kZXMuc2hhcGU7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIG5vZGUuc2V0T3B0aW9ucyh7Ym9keUhpZGRlbkNvbG9yIDogbmV0d29yay5ib2R5Lm5vZGVzW25vZGUuaWRdLm9wdGlvbnMuY29sb3J9KTsNCiAgICAgICAgLy8gYW5kIGNhbGwgZ29vZCByZXNldCBmdW5jdGlvbg0KICAgICAgICBpZihmaW5hbF9zaGFwZSA9PT0gImljb24iKXsNCiAgICAgICAgICBzaW1wbGVJY29uUmVzZXROb2RlKG5vZGUsICJjbHVzdGVyIik7DQogICAgICAgIH0gZWxzZSBpZihmaW5hbF9zaGFwZSA9PT0gImltYWdlIil7DQogICAgICAgICAgc2ltcGxlSW1hZ2VSZXNldE5vZGUobm9kZSwgImltYWdlIiwgImNsdXN0ZXIiKTsNCiAgICAgICAgfSBlbHNlIGlmKGZpbmFsX3NoYXBlID09PSAiY2lyY3VsYXJJbWFnZSIpew0KICAgICAgICAgIHNpbXBsZUltYWdlUmVzZXROb2RlKG5vZGUsICJjaXJjdWxhckltYWdlIiwgImNsdXN0ZXIiKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICBzaW1wbGVSZXNldE5vZGUobm9kZSwgImNsdXN0ZXIiKTsNCiAgICAgICAgfQ0KICAgIAkgLy8gZmluYWxseSwgZ2V0IGJhY2sgbGFiZWwNCiAgICAgICAgaWYgKG5vZGUub3B0aW9ucy5oaWRkZW5MYWJlbCAhPT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgbm9kZS5zZXRPcHRpb25zKHtsYWJlbCA6IG5vZGUub3B0aW9ucy5oaWRkZW5MYWJlbCwgaGlkZGVuTGFiZWwgOiB1bmRlZmluZWR9KTsNCiAgICAgICAgfQ0KICAgICAgICBub2RlLm9wdGlvbnMuaXNIYXJkVG9SZWFkID0gZmFsc2U7DQogICAgICB9DQogICAgfQ0KICB9DQp9DQoNCi8vIEdsb2JhbCBmdW5jdGlvbiB0byByZXNldCBvbmUgbm9kZQ0KZnVuY3Rpb24gcmVzZXRPbmVOb2RlKG5vZGUsIGdyb3Vwcywgb3B0aW9ucywgbmV0d29yayl7DQogIGlmKG5vZGUgIT09IHVuZGVmaW5lZCl7DQogICAgaWYobm9kZS5pc0hhcmRUb1JlYWQgIT09IHVuZGVmaW5lZCl7IC8vIHdlIGhhdmUgdG8gcmVzZXQgdGhpcyBub2RlDQogICAgICBpZihub2RlLmlzSGFyZFRvUmVhZCl7DQogICAgICAgIHZhciBmaW5hbF9zaGFwZTsNCiAgICAgICAgdmFyIHNoYXBlX2dyb3VwID0gZmFsc2U7DQogICAgICAgIHZhciBpc19ncm91cCA9IGZhbHNlOw0KICAJICAvLyBoYXZlIGEgZ3JvdXAgaW5mb3JtYXRpb24gJiBhIHNoYXBlIGRlZmluZWQgaW4gZ3JvdXAgPw0KICAgICAgICBpZihub2RlLmdyb3VwICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgIGlmKGdyb3Vwcy5ncm91cHNbbm9kZS5ncm91cF0gIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICBpc19ncm91cCA9IHRydWU7DQogICAgICAgICAgICBpZihncm91cHMuZ3JvdXBzW25vZGUuZ3JvdXBdLnNoYXBlICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgICBzaGFwZV9ncm91cCA9IHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIC8vIGhhdmUgYSBnbG9iYWwgc2hhcGUgaW4gbm9kZXMgb3B0aW9ucyA/DQogICAgICAgIHZhciBzaGFwZV9vcHRpb25zID0gZmFsc2U7DQogICAgICAgIGlmKG9wdGlvbnMubm9kZXMgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgaWYob3B0aW9ucy5ub2Rlcy5zaGFwZSAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgIHNoYXBlX29wdGlvbnMgPSB0cnVlOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAvLyBzZXQgZmluYWwgc2hhcGUgKGluZGl2aWR1YWwgPiBncm91cCA+IGdsb2JhbCkNCiAgICAgICAgaWYobm9kZS5oaWRkZW5JbWFnZSAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICBmaW5hbF9zaGFwZSA9IG5vZGUuaGlkZGVuSW1hZ2U7DQogICAgICAgIH0gZWxzZSBpZihub2RlLnNoYXBlICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgIGZpbmFsX3NoYXBlID0gbm9kZS5zaGFwZTsNCiAgICAgICAgfSBlbHNlIGlmKHNoYXBlX2dyb3VwKXsNCiAgICAgICAgICBmaW5hbF9zaGFwZSA9IGdyb3Vwcy5ncm91cHNbbm9kZS5ncm91cF0uc2hhcGU7DQogICAgICAgIH0gZWxzZSBpZihzaGFwZV9vcHRpb25zKXsNCiAgICAgICAgICBmaW5hbF9zaGFwZSA9IG9wdGlvbnMubm9kZXMuc2hhcGU7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC8vIHJlc2V0IGJvZHkgaW5mb3JtYXRpb24NCiAgICAgICAgbmV0d29yay5ib2R5Lm5vZGVzW25vZGUuaWRdLm9wdGlvbnMuY29sb3IgPSBub2RlLmJvZHlIaWRkZW5Db2xvcjsNCg0KICAgICAgICAvLyBhbmQgY2FsbCBnb29kIHJlc2V0IGZ1bmN0aW9uDQogICAgICAgIGlmKGZpbmFsX3NoYXBlID09PSAiaWNvbiIpew0KICAgICAgICAgIHNpbXBsZUljb25SZXNldE5vZGUobm9kZSwgIm5vZGUiKTsNCiAgICAgICAgfSBlbHNlIGlmKGZpbmFsX3NoYXBlID09PSAiaW1hZ2UiKXsNCiAgICAgICAgICBzaW1wbGVJbWFnZVJlc2V0Tm9kZShub2RlLCAiaW1hZ2UiLCAibm9kZSIpOw0KICAgICAgICB9IGVsc2UgaWYoZmluYWxfc2hhcGUgPT09ICJjaXJjdWxhckltYWdlIil7DQogICAgICAgICAgc2ltcGxlSW1hZ2VSZXNldE5vZGUobm9kZSwgImNpcmN1bGFySW1hZ2UiLCAibm9kZSIpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHNpbXBsZVJlc2V0Tm9kZShub2RlLCAibm9kZSIpOw0KICAgICAgICB9DQogICAgCSAvLyBmaW5hbGx5LCBnZXQgYmFjayBsYWJlbA0KICAgIAkgIGlmIChub2RlLmhpZGRlbkxhYmVsICE9PSB1bmRlZmluZWQpIHsNCiAgICAgICAgICBub2RlLmxhYmVsID0gbm9kZS5oaWRkZW5MYWJlbDsNCiAgICAgICAgICBub2RlLmhpZGRlbkxhYmVsID0gdW5kZWZpbmVkOw0KICAgICAgICB9DQogICAgICAgIG5vZGUuaXNIYXJkVG9SZWFkID0gZmFsc2U7DQogICAgICB9DQogICAgfQ0KICB9DQp9DQoNCi8vIEdsb2JhbCBmdW5jdGlvbiB0byByZXNldCBhbGwgbm9kZQ0KZnVuY3Rpb24gcmVzZXRBbGxOb2Rlcyhub2RlcywgdXBkYXRlLCBncm91cHMsIG9wdGlvbnMsIG5ldHdvcmspew0KICB2YXIgbm9kZXNUb1Jlc2V0ID0gbm9kZXMuZ2V0KHsNCiAgICBmaWx0ZXI6IGZ1bmN0aW9uIChpdGVtKSB7DQogICAgICByZXR1cm4gaXRlbS5pc0hhcmRUb1JlYWQgPT09IHRydWU7DQogICAgfSwNCiAgICByZXR1cm5UeXBlIDonQXJyYXknDQogIH0pOw0KICANCiAgdmFyIGhhdmVfY2x1c3Rlcl9ub2RlcyA9IGZhbHNlOw0KICB2YXIgbm9kZXNfaW5fY2x1c3RlcnM7DQogIGlmKG5ldHdvcmsgIT09IHVuZGVmaW5lZCl7DQogICAgbm9kZXNfaW5fY2x1c3RlcnMgPSBuZXR3b3JrLmJvZHkubW9kdWxlcy5jbHVzdGVyaW5nLmNsdXN0ZXJlZE5vZGVzOw0KICAgIGlmKE9iamVjdC5rZXlzKG5vZGVzX2luX2NsdXN0ZXJzKS5sZW5ndGggPiAwKXsNCiAgICAgIGhhdmVfY2x1c3Rlcl9ub2RlcyA9IHRydWU7DQogICAgICBub2Rlc19pbl9jbHVzdGVycyA9IE9iamVjdC5rZXlzKG5vZGVzX2luX2NsdXN0ZXJzKTsNCiAgICB9IGVsc2Ugew0KICAgICAgbm9kZXNfaW5fY2x1c3RlcnMgPSBbXTsNCiAgICB9DQogIH0NCg0KICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzVG9SZXNldC5sZW5ndGg7IGkrKykgew0KICAgIHJlc2V0T25lTm9kZShub2Rlc1RvUmVzZXRbaV0sIGdyb3Vwcywgb3B0aW9ucywgbmV0d29yaywgdHlwZSA9ICJub2RlIik7DQoJLy8gcmVzZXQgY29vcmRpbmF0ZXMNCiAgICBub2Rlc1RvUmVzZXRbaV0ueCA9IHVuZGVmaW5lZDsNCiAgICBub2Rlc1RvUmVzZXRbaV0ueSA9IHVuZGVmaW5lZDsNCiAgICBpZihoYXZlX2NsdXN0ZXJfbm9kZXMpew0KICAgICAgaWYoaW5kZXhPZi5jYWxsKG5vZGVzX2luX2NsdXN0ZXJzLCBub2Rlc1RvUmVzZXRbaV0uaWQsIHRydWUpID4gLTEpew0KICAgICAgICB2YXIgdG1wX2NsdXN0ZXJfaWQgPSBuZXR3b3JrLmNsdXN0ZXJpbmcuZmluZE5vZGUobm9kZXNUb1Jlc2V0W2ldLmlkKTsNCiAgICAgICAgLy8gaW4gY2FzZSBvZiBtdWx0aXBsZSBjbHVzdGVyLi4uDQogICAgICAgIGZvcih2YXIgaiA9IDA7IGogPCAodG1wX2NsdXN0ZXJfaWQubGVuZ3RoLTEpOyBqKyspIHsNCiAgICAgICAgICByZXNldE9uZUNsdXN0ZXIobmV0d29yay5ib2R5Lm5vZGVzW3RtcF9jbHVzdGVyX2lkW2pdXSwgZ3JvdXBzLCBvcHRpb25zLCBuZXR3b3JrKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgfQ0KICBpZih1cGRhdGUpew0KICAgIG5vZGVzLnVwZGF0ZShub2Rlc1RvUmVzZXQpOw0KICB9DQp9DQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIGZ1bmN0aW9ucyB0byBzZXQgbm9kZXMgYXMgaGFyZCB0byByZWFkDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCi8vIGZvciBjbGFzc2ljIG5vZGUNCmZ1bmN0aW9uIHNpbXBsZU5vZGVBc0hhcmRUb1JlYWQobm9kZSwgaGlkZUNvbG9yMSwgaGlkZUNvbG9yMiwgdHlwZSl7DQoNCg0KICAvLyBjbGFzc2ljIG5vZGVzDQogIGlmKHR5cGUgPT09ICJub2RlIil7DQogICAgLy8gc2F2aW5nIGNvbG9yIGluZm9ybWF0aW9uIChpZiB3ZSBoYXZlKQ0KICAgIGlmIChub2RlLmhpZGRlbkNvbG9yID09PSB1bmRlZmluZWQgJiYgbm9kZS5jb2xvciAhPT0gaGlkZUNvbG9yMSAmJiBub2RlLmNvbG9yICE9PSBoaWRlQ29sb3IyKSB7DQogICAgICBub2RlLmhpZGRlbkNvbG9yID0gbm9kZS5jb2xvcjsNCiAgICB9DQogIA0KICAgIC8vIHNldCAiaGFyZCB0byByZWFkIiBjb2xvcg0KICAgIG5vZGUuY29sb3IgPSBoaWRlQ29sb3IxOw0KICAgIC8vIHJlc2V0IGFuZCBzYXZlIGxhYmVsDQogICAgaWYgKG5vZGUuaGlkZGVuTGFiZWwgPT09IHVuZGVmaW5lZCkgew0KICAgICAgbm9kZS5oaWRkZW5MYWJlbCA9IG5vZGUubGFiZWw7DQogICAgICBub2RlLmxhYmVsID0gdW5kZWZpbmVkOw0KICAgIH0NCiAgLy8gY2x1c3RlciAgDQogIH0gZWxzZSB7DQogICAgLy8gc2F2aW5nIGNvbG9yIGluZm9ybWF0aW9uIChpZiB3ZSBoYXZlKQ0KICAgIGlmIChub2RlLm9wdGlvbnMuaGlkZGVuQ29sb3IgPT09IHVuZGVmaW5lZCAmJiBub2RlLm9wdGlvbnMuY29sb3IgIT09IGhpZGVDb2xvcjEgJiYgbm9kZS5vcHRpb25zLmNvbG9yICE9PSBoaWRlQ29sb3IyKSB7DQogICAgICBub2RlLnNldE9wdGlvbnMoe2hpZGRlbkNvbG9yIDogbm9kZS5vcHRpb25zLmNvbG9yfSk7DQogICAgfQ0KICAgIC8vIHNldCAiaGFyZCB0byByZWFkIiBjb2xvcg0KICAgIG5vZGUuc2V0T3B0aW9ucyh7Y29sb3IgOiBoaWRlQ29sb3IxfSk7DQogICAgLy8gcmVzZXQgYW5kIHNhdmUgbGFiZWwNCiAgICBpZiAobm9kZS5vcHRpb25zLmhpZGRlbkxhYmVsID09PSB1bmRlZmluZWQpIHsNCiAgICAgIG5vZGUuc2V0T3B0aW9ucyh7aGlkZGVuTGFiZWwgOiBub2RlLm9wdGlvbnMubGFiZWx9KTsNCiAgICAgIG5vZGUuc2V0T3B0aW9ucyh7bGFiZWwgOiB1bmRlZmluZWR9KTsNCiAgICB9DQogIH0NCn0NCg0KLy8gZm9yIGljb24gbm9kZQ0KZnVuY3Rpb24gaWNvbnNOb2RlQXNIYXJkVG9SZWFkKG5vZGUsIGhpZGVDb2xvcjEsIGhpZGVDb2xvcjIsIGljb25fY29sb3IsIHR5cGUpew0KICAvLyBjbGFzc2ljIG5vZGVzDQogIGlmKHR5cGUgPT09ICJub2RlIil7DQogICAgLy8gaW5kaXZpZHVhbCBpbmZvcm1hdGlvbg0KICAgIGlmKG5vZGUuaWNvbiAhPT0gdW5kZWZpbmVkICYmIG5vZGUuaWNvbiAhPT0gbnVsbCAmJiBub2RlLmljb24gIT09IHt9KXsNCiAgICAgIG5vZGUuaWNvbkRlZmluZWQgPSB0cnVlOw0KICAgIH0gZWxzZSB7IC8vIGluZm9ybWF0aW9uIGluIGdyb3VwIDogaGF2ZSB0byBhcyBpbmRpdmlkdWFsDQogICAgICBub2RlLmljb24gPSB7fTsNCiAgICAgIG5vZGUuaWNvbkRlZmluZWQgPSBmYWxzZTsNCiAgICB9DQogICAgLy8gc2V0ICJoYXJkIHRvIHJlYWQiIGNvbG9yDQogICAgbm9kZS5pY29uLmNvbG9yID0gaGlkZUNvbG9yMTsNCiAgICBub2RlLmhpZGRlbkNvbG9yID0gaWNvbl9jb2xvcjsNCiAgICAvLyBmb3IgZWRnZXMuLi4uc2F2aW5nIGNvbG9yIGluZm9ybWF0aW9uIChpZiB3ZSBoYXZlKQ0KICAgIGlmIChub2RlLmhpZGRlbkNvbG9yRm9yTGFiZWwgPT09IHVuZGVmaW5lZCAmJiBub2RlLmNvbG9yICE9PSBoaWRlQ29sb3IxICYmIG5vZGUuY29sb3IgIT09IGhpZGVDb2xvcjIpIHsNCiAgICAgIG5vZGUuaGlkZGVuQ29sb3JGb3JMYWJlbCA9IG5vZGUuY29sb3I7DQogICAgfQ0KICAgIC8vIHNldCAiaGFyZCB0byByZWFkIiBjb2xvcg0KICAgIG5vZGUuY29sb3IgPSBoaWRlQ29sb3IxOw0KICAgIC8vIHJlc2V0IGFuZCBzYXZlIGxhYmVsDQogICAgaWYgKG5vZGUuaGlkZGVuTGFiZWwgPT09IHVuZGVmaW5lZCkgew0KICAgICAgbm9kZS5oaWRkZW5MYWJlbCA9IG5vZGUubGFiZWw7DQogICAgICBub2RlLmxhYmVsID0gdW5kZWZpbmVkOw0KICAgIH0NCiAgfSBlbHNlIHsNCiAgICAvLyBpbmRpdmlkdWFsIGluZm9ybWF0aW9uDQogICAgaWYobm9kZS5vcHRpb25zLmljb24gIT09IHVuZGVmaW5lZCAmJiBub2RlLm9wdGlvbnMuaWNvbiAhPT0gbnVsbCAmJiBub2RlLm9wdGlvbnMuaWNvbiAhPT0ge30pew0KICAgICAgbm9kZS5zZXRPcHRpb25zKHtpY29uRGVmaW5lZCA6IHRydWV9KTsNCiAgICB9IGVsc2UgeyAvLyBpbmZvcm1hdGlvbiBpbiBncm91cCA6IGhhdmUgdG8gYXMgaW5kaXZpZHVhbA0KICAgICAgbm9kZS5zZXRPcHRpb25zKHtpY29uRGVmaW5lZCA6IGZhbHNlLCBpY29uOnt9fSk7DQogICAgfQ0KICAgIC8vIHNldCAiaGFyZCB0byByZWFkIiBjb2xvcg0KICAgIG5vZGUuc2V0T3B0aW9ucyh7aGlkZGVuQ29sb3IgOiBpY29uX2NvbG9yLCBpY29uOntjb2xvciA6IGhpZGVDb2xvcjF9fSk7DQogICAgLy8gZm9yIGVkZ2VzLi4uLnNhdmluZyBjb2xvciBpbmZvcm1hdGlvbiAoaWYgd2UgaGF2ZSkNCiAgICBpZiAobm9kZS5vcHRpb25zLmhpZGRlbkNvbG9yRm9yTGFiZWwgPT09IHVuZGVmaW5lZCAmJiBub2RlLm9wdGlvbnMuY29sb3IgIT09IGhpZGVDb2xvcjEgJiYgbm9kZS5vcHRpb25zLmNvbG9yICE9PSBoaWRlQ29sb3IyKSB7DQogICAgICBub2RlLnNldE9wdGlvbnMoe2hpZGRlbkNvbG9yRm9yTGFiZWwgOiBub2RlLm9wdGlvbnMuY29sb3J9KTsNCiAgICB9DQogICAgLy8gc2V0ICJoYXJkIHRvIHJlYWQiIGNvbG9yDQogICAgbm9kZS5zZXRPcHRpb25zKHtjb2xvciA6IGhpZGVDb2xvcjF9KTsNCiAgICAvLyByZXNldCBhbmQgc2F2ZSBsYWJlbA0KICAgIGlmIChub2RlLm9wdGlvbnMuaGlkZGVuTGFiZWwgPT09IHVuZGVmaW5lZCkgew0KICAgICAgbm9kZS5zZXRPcHRpb25zKHtoaWRkZW5MYWJlbCA6IG5vZGUub3B0aW9ucy5sYWJlbCwgbGFiZWwgOiB1bmRlZmluZWR9KTsNCiAgICB9DQogIH0NCn0NCg0KLy8gZm9yIGltYWdlIG5vZGUNCmZ1bmN0aW9uIGltYWdlTm9kZUFzSGFyZFRvUmVhZChub2RlLCBpbWFnZVR5cGUsIGhpZGVDb2xvcjEsIGhpZGVDb2xvcjIsIHR5cGUpew0KICAvLyBjbGFzc2ljIG5vZGVzDQogIGlmKHR5cGUgPT09ICJub2RlIil7DQogICAgLy8gc2F2aW5nIGNvbG9yIGluZm9ybWF0aW9uIChpZiB3ZSBoYXZlKQ0KICAgIGlmIChub2RlLmhpZGRlbkNvbG9yID09PSB1bmRlZmluZWQgJiYgbm9kZS5jb2xvciAhPT0gaGlkZUNvbG9yMSAmJiBub2RlLmNvbG9yICE9PSBoaWRlQ29sb3IyKSB7DQogICAgICBub2RlLmhpZGRlbkNvbG9yID0gbm9kZS5jb2xvcjsNCiAgICB9DQogICAgLy8gc2V0ICJoYXJkIHRvIHJlYWQiIGNvbG9yDQogICAgbm9kZS5jb2xvciA9IGhpZGVDb2xvcjE7DQogICAgLy8gcmVzZXQgYW5kIHNhdmUgbGFiZWwNCiAgICBpZiAobm9kZS5oaWRkZW5MYWJlbCA9PT0gdW5kZWZpbmVkKSB7DQogICAgICBub2RlLmhpZGRlbkxhYmVsID0gbm9kZS5sYWJlbDsNCiAgICAgIG5vZGUubGFiZWwgPSB1bmRlZmluZWQ7DQogICAgfQ0KICAgIC8vIGtlZXAgc2hhcGUgaW5mb3JtYXRpb24sIGFuZCBzZXQgYSBuZXcNCiAgICBpZihpbWFnZVR5cGUgPT09ICJpbWFnZSIpew0KICAgICAgbm9kZS5oaWRkZW5JbWFnZSA9IGltYWdlVHlwZTsNCiAgICAgIG5vZGUuc2hhcGUgPSAic3F1YXJlIjsNCiAgICB9ZWxzZSBpZihpbWFnZVR5cGUgPT09ICJjaXJjdWxhckltYWdlIil7DQogICAgICBub2RlLmhpZGRlbkltYWdlID0gaW1hZ2VUeXBlOw0KICAgICAgbm9kZS5zaGFwZSA9ICJkb3QiOw0KICAgIH0NCiAgfSBlbHNlIHsNCiAgICAvLyBzYXZpbmcgY29sb3IgaW5mb3JtYXRpb24gKGlmIHdlIGhhdmUpDQogICAgaWYgKG5vZGUub3B0aW9ucy5oaWRkZW5Db2xvciA9PT0gdW5kZWZpbmVkICYmIG5vZGUub3B0aW9ucy5jb2xvciAhPT0gaGlkZUNvbG9yMSAmJiBub2RlLm9wdGlvbnMuY29sb3IgIT09IGhpZGVDb2xvcjIpIHsNCiAgICAgIG5vZGUuc2V0T3B0aW9ucyh7aGlkZGVuQ29sb3IgOiBub2RlLm9wdGlvbnMuY29sb3J9KTsNCiAgICB9DQogICAgLy8gc2V0ICJoYXJkIHRvIHJlYWQiIGNvbG9yDQogICAgbm9kZS5zZXRPcHRpb25zKHtjb2xvciA6IGhpZGVDb2xvcjF9KTsNCiAgICAvLyByZXNldCBhbmQgc2F2ZSBsYWJlbA0KICAgIGlmIChub2RlLm9wdGlvbnMuaGlkZGVuTGFiZWwgPT09IHVuZGVmaW5lZCkgew0KICAgICAgbm9kZS5zZXRPcHRpb25zKHtoaWRkZW5MYWJlbCA6IG5vZGUub3B0aW9ucy5sYWJlbCwgbGFiZWwgOiB1bmRlZmluZWR9KTsNCiAgICB9DQogICAgaWYoaW1hZ2VUeXBlID09PSAiaW1hZ2UiKXsNCiAgICAgIG5vZGUuc2V0T3B0aW9ucyh7aGlkZGVuSW1hZ2UgOiAiaW1hZ2UiLCBzaGFwZSA6ICJzcXVhcmUifSk7DQogICAgfSBlbHNlIGlmKGltYWdlVHlwZSA9PT0gImNpcmN1bGFySW1hZ2UiKXsNCiAgICAgIG5vZGUuc2V0T3B0aW9ucyh7aGlkZGVuSW1hZ2UgOiAiY2lyY3VsYXJJbWFnZSIsIHNoYXBlIDogImRvdCJ9KTsNCiAgICB9DQogICAgbm9kZS5oaWRkZW5JbWFnZSA9IGltYWdlVHlwZTsNCiAgfQ0KfQ0KDQovLyBHbG9iYWwgZnVuY3Rpb24gdG8gc2V0IG9uZSBub2RlIGFzIGhhcmQgdG8gcmVhZA0KZnVuY3Rpb24gbm9kZUFzSGFyZFRvUmVhZChub2RlLCBncm91cHMsIG9wdGlvbnMsIGhpZGVDb2xvcjEsIGhpZGVDb2xvcjIsIG5ldHdvcmssIHR5cGUpew0KICB2YXIgZmluYWxfc2hhcGU7DQogIHZhciBzaGFwZV9ncm91cCA9IGZhbHNlOw0KICB2YXIgaXNfZ3JvdXAgPSBmYWxzZTsNCg0KICBpZihub2RlLmlzSGFyZFRvUmVhZCA9PT0gZmFsc2UgfHwgbm9kZS5pc0hhcmRUb1JlYWQgPT09IHVuZGVmaW5lZCl7DQoNCiAgICAvLyBoYXZlIGEgZ3JvdXAgaW5mb3JtYXRpb24gJiBhIHNoYXBlIGRlZmluZWQgaW4gZ3JvdXAgPw0KICAgIGlmKG5vZGUuZ3JvdXAgIT09IHVuZGVmaW5lZCl7DQogICAgICBpZihncm91cHMuZ3JvdXBzW25vZGUuZ3JvdXBdICE9PSB1bmRlZmluZWQpew0KICAgICAgICBpc19ncm91cCA9IHRydWU7DQogICAgICAgIGlmKGdyb3Vwcy5ncm91cHNbbm9kZS5ncm91cF0uc2hhcGUgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgc2hhcGVfZ3JvdXAgPSB0cnVlOw0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICAgIC8vIGhhdmUgYSBncm91cCBpbmZvcm1hdGlvbiAmIGEgc2hhcGUgZGVmaW5lZCBpbiBncm91cCA/DQogICAgdmFyIHNoYXBlX29wdGlvbnMgPSBmYWxzZTsNCiAgICBpZihvcHRpb25zLm5vZGVzICE9PSB1bmRlZmluZWQpew0KICAgICAgaWYob3B0aW9ucy5ub2Rlcy5zaGFwZSAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgc2hhcGVfb3B0aW9ucyA9IHRydWU7DQogICAgICB9DQogICAgfQ0KICAgIC8vIHNldCBmaW5hbCBzaGFwZSAoaW5kaXZpZHVhbCA+IGdyb3VwID4gZ2xvYmFsKQ0KICAgIGlmKG5vZGUuc2hhcGUgIT09IHVuZGVmaW5lZCl7DQogICAgICBmaW5hbF9zaGFwZSA9IG5vZGUuc2hhcGU7DQogICAgfSBlbHNlIGlmKHNoYXBlX2dyb3VwKXsNCiAgICAgIGZpbmFsX3NoYXBlID0gZ3JvdXBzLmdyb3Vwc1tub2RlLmdyb3VwXS5zaGFwZTsNCiAgICB9IGVsc2UgaWYoc2hhcGVfb3B0aW9ucyl7DQogICAgICBmaW5hbF9zaGFwZSA9IG9wdGlvbnMubm9kZXMuc2hhcGU7DQogICAgfQ0KICAgIA0KICAgIC8vIGluZm9ybWF0aW9uIHNhdmUgaW4gYm9keSBub2Rlcw0KICAgIGlmKHR5cGUgPT09ICJub2RlIil7DQogICAgICBub2RlLmJvZHlIaWRkZW5Db2xvciA9IGNsb25lKG5ldHdvcmsuYm9keS5ub2Rlc1tub2RlLmlkXS5vcHRpb25zLmNvbG9yKTsNCiAgICB9IGVsc2Ugew0KICAgICAgbm9kZS5zZXRPcHRpb25zKHtib2R5SGlkZGVuQ29sb3IgOiBjbG9uZShuZXR3b3JrLmJvZHkubm9kZXNbbm9kZS5pZF0ub3B0aW9ucy5jb2xvcil9KTsNCiAgICB9DQogIA0KICAgIC8vIGFuZCBjYWxsIGdvb2QgZnVuY3Rpb24NCiAgICBpZihmaW5hbF9zaGFwZSA9PT0gImljb24iKXsNCiAgICAgIC8vIGZpbmQgY29sb3IgZm9yIGljb24NCiAgICAgIHZhciBpY29uX2NvbG9yID0gIiMyQjdDRTkiOw0KICAgICAgdmFyIGZpbmRfY29sb3IgPSBmYWxzZTsNCiAgICAgIC8vIGluIG5vZGVzID8NCiAgICAgIGlmKG5vZGUuaWNvbiAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgaWYobm9kZS5pY29uLmNvbG9yICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgIGljb25fY29sb3IgPSBub2RlLmljb24uY29sb3I7DQogICAgICAgICAgZmluZF9jb2xvciA9IHRydWU7DQogICAgICAgIH0NCiAgICAgIH0gDQogICAgICAvLyBvciBpbiBncm91cCA/DQogICAgICBpZihmaW5kX2NvbG9yID09PSBmYWxzZSAmJiBpc19ncm91cCAmJiBncm91cHMuZ3JvdXBzW25vZGUuZ3JvdXBdLmljb24gIT09IHVuZGVmaW5lZCl7DQogICAgICAgIGlmKGdyb3Vwcy5ncm91cHNbbm9kZS5ncm91cF0uaWNvbi5jb2xvciAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICBpY29uX2NvbG9yID0gZ3JvdXBzLmdyb3Vwc1tub2RlLmdyb3VwXS5pY29uLmNvbG9yOw0KICAgICAgICAgIGZpbmRfY29sb3IgPSB0cnVlOw0KICAgICAgICB9DQogICAgICB9DQogICAgICAvLyBpbiBnbG9iYWwgbm9kZSA/DQogICAgICBpZihmaW5kX2NvbG9yID09PSBmYWxzZSAmJiBvcHRpb25zLm5vZGVzLmljb24gIT09IHVuZGVmaW5lZCl7DQogICAgICAgIGlmKG9wdGlvbnMubm9kZXMuaWNvbi5jb2xvciAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICBpY29uX2NvbG9yID0gb3B0aW9ucy5ub2Rlcy5pY29uLmNvbG9yOw0KICAgICAgICB9DQogICAgICB9IA0KICAgICAgaWNvbnNOb2RlQXNIYXJkVG9SZWFkKG5vZGUsIGhpZGVDb2xvcjEsIGhpZGVDb2xvcjIsIGljb25fY29sb3IsIHR5cGUpOw0KICAgIH0gZWxzZSBpZihmaW5hbF9zaGFwZSA9PT0gImltYWdlIil7DQogICAgICBpbWFnZU5vZGVBc0hhcmRUb1JlYWQobm9kZSwgImltYWdlIiwgaGlkZUNvbG9yMSwgaGlkZUNvbG9yMiwgdHlwZSk7DQogICAgfSBlbHNlIGlmKGZpbmFsX3NoYXBlID09PSAiY2lyY3VsYXJJbWFnZSIpew0KICAgICAgaW1hZ2VOb2RlQXNIYXJkVG9SZWFkKG5vZGUsICJjaXJjdWxhckltYWdlIiwgaGlkZUNvbG9yMSwgaGlkZUNvbG9yMiwgdHlwZSk7DQogICAgfSBlbHNlIHsNCiAgICAgIHNpbXBsZU5vZGVBc0hhcmRUb1JlYWQobm9kZSwgaGlkZUNvbG9yMSwgaGlkZUNvbG9yMiwgdHlwZSk7DQogICAgfQ0KICAgIA0KICAgIC8vIGZpbmFsbHkgc2V0IGlzSGFyZFRvUmVhZA0KICAgIGlmKHR5cGUgPT09ICJub2RlIil7DQogICAgICBub2RlLmlzSGFyZFRvUmVhZCA9IHRydWU7DQogICAgfSBlbHNlIHsNCiAgICAgIG5vZGUuc2V0T3B0aW9ucyh7aXNIYXJkVG9SZWFkIDogdHJ1ZX0pOw0KICAgIH0NCiAgLy8gc3BlY2lhbCBjYXNlIG9mIGp1c3QgdG8gbGFiZWwgIA0KICB9IGVsc2UgaWYobm9kZS5pc0hhcmRUb1JlYWQgPT09IHRydWUgJiYgbm9kZS5sYWJlbCAhPT0gdW5kZWZpbmVkKXsNCiAgICBpZih0eXBlID09PSAibm9kZSIpew0KICAgICAgbm9kZS5oaWRkZW5MYWJlbCA9IG5vZGUubGFiZWw7DQogICAgICBub2RlLmxhYmVsID0gdW5kZWZpbmVkOw0KICAgIH0gZWxzZSB7DQogICAgICBub2RlLnNldE9wdGlvbnMoe2hpZGRlbkxhYmVsIDogbm9kZS5vcHRpb25zLmxhYmVsLCBsYWJlbCA6IHVuZGVmaW5lZH0pDQogICAgfQ0KICB9DQp9DQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gUmV2cml0ZSBIVE1MV2lkZ2V0cy5kYXRhZnJhbWVUb0QzKCkgZm9yIHBhc3NpbmcgY3VzdG9tDQovLyBwcm9wZXJ0aWVzIGRpcmVjdGx5IGluIGRhdGEuZnJhbWUgKGNvbG9yLmJhY2tncm91bmQpIGZvciBleGFtcGxlDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHZpc05ldHdvcmtkYXRhZnJhbWVUb0QzKGRmLCB0eXBlKSB7DQoNCiAgLy8gdmFyaWFibGVzIHdlIGhhdmUgc3BlY2lhbGx5IHRvIGNvbnRyb2wNCiAgdmFyIG5vZGVzY3RybCA9IFsiY29sb3IiLCAiZml4ZWQiLCAiZm9udCIsICJpY29uIiwgInNoYWRvdyIsICJzY2FsaW5nIiwgInNoYXBlUHJvcGVydGllcyIsICJjaG9zZW4iLCAiaGVpZ2h0Q29uc3RyYWludCIsICJpbWFnZSIsICJtYXJnaW4iLCAid2lkdGhDb25zdHJhaW50Il07DQogIHZhciBlZGdlc2N0cmwgPSBbImNvbG9yIiwgImZvbnQiLCAiYXJyb3dzIiwgInNoYWRvdyIsICJzbW9vdGgiLCAic2NhbGluZyIsICJjaG9zZW4iLCAid2lkdGhDb25zdHJhaW50Il07DQogIA0KICB2YXIgbmFtZXMgPSBbXTsNCiAgdmFyIGNvbG5hbWVzID0gW107DQogIHZhciBsZW5ndGg7DQogIHZhciB0b2N0cmw7DQogIHZhciBjdHJsbmFtZTsNCiAgDQogIGZvciAodmFyIG5hbWUgaW4gZGYpIHsNCiAgICBpZiAoZGYuaGFzT3duUHJvcGVydHkobmFtZSkpDQogICAgICBjb2xuYW1lcy5wdXNoKG5hbWUpOw0KICAgICAgY3RybG5hbWUgPSBuYW1lLnNwbGl0KCIuIik7DQogICAgICBpZihjdHJsbmFtZS5sZW5ndGggPT09IDEpew0KICAgICAgICBuYW1lcy5wdXNoKCBuZXcgQXJyYXkobmFtZSkpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgaWYodHlwZSA9PT0gIm5vZGVzIil7DQogICAgICAgICB0b2N0cmwgPSBpbmRleE9mLmNhbGwobm9kZXNjdHJsLCBjdHJsbmFtZVswXSwgdHJ1ZSk7DQogICAgICAgIH0gZWxzZSBpZih0eXBlID09PSAiZWRnZXMiKXsNCiAgICAgICAgIHRvY3RybCA9IGluZGV4T2YuY2FsbChlZGdlc2N0cmwsIGN0cmxuYW1lWzBdLCB0cnVlKTsNCiAgICAgICAgfQ0KICAgICAgICBpZih0b2N0cmwgPiAtMSl7DQogICAgICAgICAgbmFtZXMucHVzaChjdHJsbmFtZSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgbmFtZXMucHVzaChuZXcgQXJyYXkobmFtZSkpOw0KICAgICAgICB9DQogICAgICB9DQogICAgICBpZiAodHlwZW9mKGRmW25hbWVdKSAhPT0gIm9iamVjdCIgfHwgdHlwZW9mKGRmW25hbWVdLmxlbmd0aCkgPT09ICJ1bmRlZmluZWQiKSB7DQogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIik7DQogICAgICB9IGVsc2UgaWYgKHR5cGVvZihsZW5ndGgpICE9PSAidW5kZWZpbmVkIiAmJiBsZW5ndGggIT09IGRmW25hbWVdLmxlbmd0aCkgew0KICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQWxsIGZpZWxkcyBtdXN0IGJlIGFycmF5cyBvZiB0aGUgc2FtZSBsZW5ndGgiKTsNCiAgICAgIH0NCiAgICAgIGxlbmd0aCA9IGRmW25hbWVdLmxlbmd0aDsNCiAgfQ0KDQogIHZhciByZXN1bHRzID0gW107DQogIHZhciBpdGVtOw0KICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IGxlbmd0aDsgcm93KyspIHsNCiAgICAgIGl0ZW0gPSB7fTsNCiAgICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG5hbWVzLmxlbmd0aDsgY29sKyspIHsNCiAgICAgICAgaWYoZGZbY29sbmFtZXNbY29sXV1bcm93XSAhPT0gbnVsbCl7DQogICAgICAgICAgaWYobmFtZXNbY29sXS5sZW5ndGggPT09IDEpew0KICAgICAgICAgICAgaWYobmFtZXNbY29sXVswXSA9PT0gImRhc2hlcyIpew0KICAgICAgICAgICAgICBpdGVtW25hbWVzW2NvbF1dID0gZXZhbChkZltjb2xuYW1lc1tjb2xdXVtyb3ddKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgIGl0ZW1bbmFtZXNbY29sXV0gPSBkZltjb2xuYW1lc1tjb2xdXVtyb3ddOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0gZWxzZSBpZihuYW1lc1tjb2xdLmxlbmd0aCA9PT0gMil7DQogICAgICAgICAgICBpZihpdGVtW25hbWVzW2NvbF1bMF1dID09PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgICBpdGVtW25hbWVzW2NvbF1bMF1dID0ge307DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZihuYW1lc1tjb2xdWzBdID09PSAiaWNvbiIgJiYgbmFtZXNbY29sXVsxXSA9PT0gImNvZGUiKXsNCiAgICAgICAgICAgICAgaXRlbVtuYW1lc1tjb2xdWzBdXVtuYW1lc1tjb2xdWzFdXSA9IEpTT04ucGFyc2UoICciJysnXFx1JyArIGRmW2NvbG5hbWVzW2NvbF1dW3Jvd10gKyAnIicpOw0KICAgICAgICAgICAgfSBlbHNlIGlmKG5hbWVzW2NvbF1bMF0gPT09ICJpY29uIiAmJiBuYW1lc1tjb2xdWzFdID09PSAiY29sb3IiKXsNCiAgICAgICAgICAgICAgaXRlbS5jb2xvciA9IGRmW2NvbG5hbWVzW2NvbF1dW3Jvd107DQogICAgICAgICAgICAgIGl0ZW1bbmFtZXNbY29sXVswXV1bbmFtZXNbY29sXVsxXV0gPSBkZltjb2xuYW1lc1tjb2xdXVtyb3ddOw0KICAgICAgICAgICAgfSBlbHNlew0KICAgICAgICAgICAgICBpdGVtW25hbWVzW2NvbF1bMF1dW25hbWVzW2NvbF1bMV1dID0gZGZbY29sbmFtZXNbY29sXV1bcm93XTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9IGVsc2UgaWYobmFtZXNbY29sXS5sZW5ndGggPT09IDMpew0KICAgICAgICAgICAgaWYoaXRlbVtuYW1lc1tjb2xdWzBdXSA9PT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgICAgaXRlbVtuYW1lc1tjb2xdWzBdXSA9IHt9Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYoaXRlbVtuYW1lc1tjb2xdWzBdXVtuYW1lc1tjb2xdWzFdXSA9PT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgICAgaXRlbVtuYW1lc1tjb2xdWzBdXVtuYW1lc1tjb2xdWzFdXSA9IHt9Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaXRlbVtuYW1lc1tjb2xdWzBdXVtuYW1lc1tjb2xdWzFdXVtuYW1lc1tjb2xdWzJdXSA9IGRmW2NvbG5hbWVzW2NvbF1dW3Jvd107DQogICAgICAgICAgfSBlbHNlIGlmKG5hbWVzW2NvbF0ubGVuZ3RoID09PSA0KXsNCiAgICAgICAgICAgIGlmKGl0ZW1bbmFtZXNbY29sXVswXV0gPT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICAgIGl0ZW1bbmFtZXNbY29sXVswXV0gPSB7fTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmKGl0ZW1bbmFtZXNbY29sXVswXV1bbmFtZXNbY29sXVsxXV0gPT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICAgIGl0ZW1bbmFtZXNbY29sXVswXV1bbmFtZXNbY29sXVsxXV0gPSB7fTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmKGl0ZW1bbmFtZXNbY29sXVswXV1bbmFtZXNbY29sXVsxXV1bbmFtZXNbY29sXVsyXV0gPT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICAgIGl0ZW1bbmFtZXNbY29sXVswXV1bbmFtZXNbY29sXVsxXV1bbmFtZXNbY29sXVsyXV0gPSB7fTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGl0ZW1bbmFtZXNbY29sXVswXV1bbmFtZXNbY29sXVsxXV1bbmFtZXNbY29sXVsyXV1bbmFtZXNbY29sXVszXV0gPSBkZltjb2xuYW1lc1tjb2xdXVtyb3ddOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgcmVzdWx0cy5wdXNoKGl0ZW0pOw0KICAgIH0NCiAgcmV0dXJuIHJlc3VsdHM7DQp9DQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gU29tZSB1dGlscyBmdW5jdGlvbnMNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSANCg0KLy91bmlxdWUgZWxlbWVudCBpbiBhcnJheQ0KZnVuY3Rpb24gdW5pcXVlQXJyYXkoYXJyLCBleGNsdWRlX2NsdXN0ZXIsIG5ldHdvcmspIHsNCiAgdmFyIGEgPSBbXTsNCiAgZm9yICh2YXIgaT0wLCBsPWFyci5sZW5ndGg7IGk8bDsgaSsrKXsNCiAgICBpZiAoYS5pbmRleE9mKGFycltpXSkgPT09IC0xICYmIGFycltpXSAhPT0gJycpew0KICAgICAgaWYoZXhjbHVkZV9jbHVzdGVyID09PSBmYWxzZSl7DQogICAgICAgIGEucHVzaChhcnJbaV0pOw0KICAgICAgfSBlbHNlIGlmKG5ldHdvcmsuaXNDbHVzdGVyKGFycltpXSkgPT09IGZhbHNlKXsNCiAgICAgICAgYS5wdXNoKGFycltpXSk7DQogICAgICB9DQogICAgfQ0KICB9DQoNCiAgcmV0dXJuIGE7DQp9DQoNCmZ1bmN0aW9uIHVuaXF1ZVNoaW55KGFycikgew0KICByZXR1cm4gYXJyLmZpbHRlcihmdW5jdGlvbiAodmFsdWUsIGluZGV4LCBzZWxmKSB7IA0KICAgIHJldHVybiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleDsNCiAgfSk7DQp9Ow0KLy8gY2xvbmUgYW4gb2JqZWN0DQpmdW5jdGlvbiBjbG9uZShvYmopIHsNCiAgICBpZihvYmogPT09IG51bGwgfHwgdHlwZW9mKG9iaikgIT0gJ29iamVjdCcpDQogICAgICAgIHJldHVybiBvYmo7ICAgIA0KICAgIHZhciB0ZW1wID0gbmV3IG9iai5jb25zdHJ1Y3RvcigpOyANCiAgICBmb3IodmFyIGtleSBpbiBvYmopDQogICAgICAgIHRlbXBba2V5XSA9IGNsb25lKG9ialtrZXldKTsgICAgDQogICAgcmV0dXJuIHRlbXA7DQp9DQovLyB1cGRhdGUgYSBsaXN0DQpmdW5jdGlvbiB1cGRhdGUoc291cmNlLCB0YXJnZXQpIHsNCglPYmplY3Qua2V5cyh0YXJnZXQpLmZvckVhY2goZnVuY3Rpb24gKGspIHsNCgkJaWYgKHR5cGVvZiB0YXJnZXRba10gPT09ICdvYmplY3QnICYmIGsgIT09ICJjb250YWluZXIiKSB7DQoJCQlzb3VyY2Vba10gPSBzb3VyY2Vba10gfHwge307DQoJCQl1cGRhdGUoc291cmNlW2tdLCB0YXJnZXRba10pOw0KCQl9IGVsc2Ugew0KCQkJc291cmNlW2tdID0gdGFyZ2V0W2tdOw0KCQl9DQoJfSk7DQp9DQovLyBmb3IgZmluZCBlbGVtZW50DQpmdW5jdGlvbiBpbmRleE9mKG5lZWRsZSwgc3RyKSB7DQogICAgICAgIGluZGV4T2YgPSBmdW5jdGlvbihuZWVkbGUsIHN0cikgew0KICAgICAgICAgICAgdmFyIGkgPSAtMSwgaW5kZXggPSAtMTsNCiAgICAgICAgICAgIGlmKHN0cil7DQogICAgICAgICAgICAgICAgICBuZWVkbGUgPSAnJytuZWVkbGU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgdmFyIHZhbCA9IHRoaXNbaV07DQogICAgICAgICAgICAgICAgaWYoc3RyKXsNCiAgICAgICAgICAgICAgICAgIHZhbCA9ICcnK3ZhbDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYodmFsID09PSBuZWVkbGUpIHsNCiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpOw0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gaW5kZXg7DQogICAgICAgIH07DQogICAgcmV0dXJuIGluZGV4T2YuY2FsbCh0aGlzLCBuZWVkbGUsIHN0cik7DQp9Ow0KLy8gcmVzZXQgYSBodG1sIGxpc3QNCmZ1bmN0aW9uIHJlc2V0TGlzdChsaXN0X25hbWUsIGlkLCBzaGlueV9pbnB1dF9uYW1lKSB7DQogIHZhciBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobGlzdF9uYW1lICsgaWQpOw0KICBsaXN0LnZhbHVlID0gIiI7DQogIGlmICh3aW5kb3cuU2hpbnkpew0KICAgIFNoaW55Lm9uSW5wdXRDaGFuZ2UoaWQgKyAnXycgKyBzaGlueV9pbnB1dF9uYW1lLCAiIik7DQogIH0NCn0NCi8vIGlkIG5vZGUgbGlzdCBzZWxlY3Rpb24gaW5pdA0KZnVuY3Rpb24gc2V0Tm9kZUlkTGlzdChzZWxlY3RMaXN0LCBwYXJhbXMsIG5vZGVzKXsNCiAgaWYocGFyYW1zLnN0eWxlICE9PSB1bmRlZmluZWQpew0KICAgIHNlbGVjdExpc3Quc2V0QXR0cmlidXRlKCdzdHlsZScsIHBhcmFtcy5zdHlsZSk7DQogIH0NCiAgc2VsZWN0TGlzdC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7DQogICAgICANCiAgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7DQogIG9wdGlvbi52YWx1ZSA9ICIiOw0KICBpZihwYXJhbXMubWFpbiA9PT0gdW5kZWZpbmVkKXsNCiAgICBvcHRpb24udGV4dCA9ICJTZWxlY3QgYnkgaWQiOw0KICB9IGVsc2Ugew0KICAgIG9wdGlvbi50ZXh0ID0gcGFyYW1zLm1haW47DQogIH0NCiAgDQogIHNlbGVjdExpc3QuYXBwZW5kQ2hpbGQob3B0aW9uKTsNCiAgICAgIA0KICAvLyBoYXZlIHRvIHNldCBmb3IgYWxsIG5vZGVzID8NCiAgaWYocGFyYW1zLnZhbHVlcyA9PT0gdW5kZWZpbmVkKXsNCiAgICB2YXIgaW5mb19ub2RlX2xpc3QgPSBub2Rlcy5nZXQoew0KICAgICAgZmllbGRzOiBbJ2lkJywgJ2xhYmVsJ10sDQogICAgICByZXR1cm5UeXBlIDonQXJyYXknDQogICAgfSk7DQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmZvX25vZGVfbGlzdC5sZW5ndGg7IGkrKykgew0KICAgICAgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7DQogICAgICBvcHRpb24udmFsdWUgPSBpbmZvX25vZGVfbGlzdFtpXS5pZDsNCiAgICAgIGlmKGluZm9fbm9kZV9saXN0W2ldLmxhYmVsICYmIHBhcmFtcy51c2VMYWJlbHMpew0KICAgICAgICBvcHRpb24udGV4dCA9IGluZm9fbm9kZV9saXN0W2ldLmxhYmVsOw0KICAgICAgfWVsc2V7DQogICAgICAgIG9wdGlvbi50ZXh0ID0gaW5mb19ub2RlX2xpc3RbaV0uaWQ7DQogICAgICB9DQogICAgICBzZWxlY3RMaXN0LmFwcGVuZENoaWxkKG9wdGlvbik7DQogICAgfQ0KICB9IGVsc2Ugew0KICAgIHZhciB0bXBfbm9kZTsNCiAgICBmb3IodmFyIHRtcF9pZCA9IDAgOyB0bXBfaWQgPCBwYXJhbXMudmFsdWVzLmxlbmd0aDsgdG1wX2lkKyspew0KICAgICAgdG1wX25vZGUgPSBub2Rlcy5nZXQoew0KICAgICAgICBmaWVsZHM6IFsnaWQnLCAnbGFiZWwnXSwNCiAgICAgICAgZmlsdGVyOiBmdW5jdGlvbiAoaXRlbSkgew0KICAgICAgICAgIHJldHVybiAoaXRlbS5pZCA9PT0gcGFyYW1zLnZhbHVlc1t0bXBfaWRdKSA7DQogICAgICAgIH0sDQogICAgICAgIHJldHVyblR5cGUgOidBcnJheScNCiAgICAgIH0pOw0KICAgICAgaWYodG1wX25vZGUgIT09IHVuZGVmaW5lZCl7DQogICAgICAgIG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOw0KICAgICAgICBvcHRpb24udmFsdWUgPSB0bXBfbm9kZVswXS5pZDsNCiAgICAgICAgaWYodG1wX25vZGVbMF0ubGFiZWwgJiYgcGFyYW1zLnVzZUxhYmVscyl7DQogICAgICAgICAgb3B0aW9uLnRleHQgPSB0bXBfbm9kZVswXS5sYWJlbDsNCiAgICAgICAgfWVsc2V7DQogICAgICAgICAgb3B0aW9uLnRleHQgPSB0bXBfbm9kZVswXS5pZDsNCiAgICAgICAgfQ0KICAgICAgICBzZWxlY3RMaXN0LmFwcGVuZENoaWxkKG9wdGlvbik7DQogICAgICB9DQogICAgfQ0KICB9DQp9DQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gQ29sbGFwc2VkIGZ1bmN0aW9uDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gDQoNCmZ1bmN0aW9uIG5ldHdvcmtPcGVuQ2x1c3RlcihwYXJhbXMpew0KICBpZiAocGFyYW1zLm5vZGVzLmxlbmd0aCA9PT0gMSkgew0KICAgIGlmICh0aGlzLmlzQ2x1c3RlcihwYXJhbXMubm9kZXNbMF0pID09PSB0cnVlKSB7DQogICAgICB2YXIgZWxpZCA9IHRoaXMuYm9keS5jb250YWluZXIuaWQuc3Vic3RyaW5nKDUpOw0KICAgICAgdmFyIGZpdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsaWQpLmNvbGxhcHNlRml0Ow0KICAgICAgdmFyIHJlc2V0SGlnaGxpZ2h0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxpZCkuY29sbGFwc2VSZXNldEhpZ2hsaWdodDsNCiAgICAgIA0KICAgICAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxpZCkuY29sbGFwc2VLZWVwQ29vcmQpew0KICAgICAgICB0aGlzLm9wZW5DbHVzdGVyKHBhcmFtcy5ub2Rlc1swXSwgDQogICAgICAgIHtyZWxlYXNlRnVuY3Rpb24gOiBmdW5jdGlvbihjbHVzdGVyUG9zaXRpb24sIGNvbnRhaW5lZE5vZGVzUG9zaXRpb25zKSB7DQogICAgICAgICAgICAgIHJldHVybiBjb250YWluZWROb2Rlc1Bvc2l0aW9uczsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLm9wZW5DbHVzdGVyKHBhcmFtcy5ub2Rlc1swXSk7DQogICAgICB9DQoNCiAgICAgIA0KICAgICAgaWYocmVzZXRIaWdobGlnaHQpew0KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm9kZVNlbGVjdCIrZWxpZCkudmFsdWUgPSAiIjsNCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vZGVTZWxlY3QiK2VsaWQpLm9uY2hhbmdlKCk7DQogICAgICB9DQogICAgICBpZihmaXQpew0KICAgICAgICB0aGlzLmZpdCgpOw0KICAgICAgfQ0KICAgIH0NCiAgfQ0KfQ0KDQpmdW5jdGlvbiBjb2xsYXBzZWROZXR3b3JrKG5vZGVzLCBmaXQsIHJlc2V0SGlnaGxpZ2h0LCBjbHVzdGVyUGFyYW1zLCBsYWJlbFN1ZmZpeCwgdHJlZVBhcmFtcywgbmV0d29yaywgZWxpZCkgew0KICANCiAgdmFyIHNldF9wb3NpdGlvbiA9IHRydWU7DQogIHZhciBzZWxlY3RlZE5vZGU7DQogIHZhciBqOw0KICANCiAgaWYobm9kZXNbMF0gIT09IHVuZGVmaW5lZCl7DQogICAgDQogICAgZm9yICh2YXIgaW5vZGVzID0gMDsgaW5vZGVzIDwgbm9kZXMubGVuZ3RoOyBpbm9kZXMrKykgew0KICAgICAgDQogICAgICBzZWxlY3RlZE5vZGUgPSBub2Rlc1tpbm9kZXNdOw0KICAgICAgaWYoc2VsZWN0ZWROb2RlICE9PSB1bmRlZmluZWQpew0KICAgICAgICBpZihuZXR3b3JrLmlzQ2x1c3RlcihzZWxlY3RlZE5vZGUpKXsNCiAgICAgICAgICAvL25ldHdvcmsub3BlbkNsdXN0ZXIoc2VsZWN0ZWROb2RlKQ0KICAgICAgICAgIC8qaW5zdGFuY2UubmV0d29yay5vcGVuQ2x1c3RlcihzZWxlY3RlZE5vZGUsIA0KICAgICAgICAgIHtyZWxlYXNlRnVuY3Rpb24gOiBmdW5jdGlvbihjbHVzdGVyUG9zaXRpb24sIGNvbnRhaW5lZE5vZGVzUG9zaXRpb25zKSB7DQogICAgICAgICAgICByZXR1cm4gdG1wX3Bvc2l0aW9uOw0KICAgICAgICAgIH19KSovDQogICAgICAgICAgLy9uZXR3b3JrT3BlbkNsdXN0ZXIoc2VsZWN0ZWROb2RlKQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHZhciBmaXJzdExldmVsTm9kZXMgPSBbXTsNCiAgICAgICAgICB2YXIgb3RoZXJMZXZlbE5vZGVzID0gW107DQogICAgICAgICAgdmFyIGNvbm5lY3RlZFRvTm9kZXMgPSBbXTsNCiAgICAgIA0KICAgICAgICAgIGl0ZW0gPSBuZXR3b3JrLmJvZHkuZGF0YS5ub2Rlcy5nZXQoew0KICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbiAoaXRlbSkgew0KICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pZCA9PSBzZWxlY3RlZE5vZGU7DQogICAgICAgICAgICB9DQogICAgICAgICAgfSk7DQogICAgICAgICAgICANCiAgICAgICAgICBjb25uZWN0ZWRUb05vZGVzID0gbmV0d29yay5ib2R5LmRhdGEuZWRnZXMuZ2V0KHsNCiAgICAgICAgICBmaWVsZHM6IFsnaWQnLCd0byddLA0KICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbiAoaXRlbSkgew0KICAgICAgICAgICAgICByZXR1cm4gaXRlbS5mcm9tID09IHNlbGVjdGVkTm9kZTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICByZXR1cm5UeXBlIDonQXJyYXknDQogICAgICAgICAgfSk7DQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvbm5lY3RlZFRvTm9kZXMubGVuZ3RoOyBqKyspIHsNCiAgICAgICAgICAgIGZpcnN0TGV2ZWxOb2RlcyA9IGZpcnN0TGV2ZWxOb2Rlcy5jb25jYXQoY29ubmVjdGVkVG9Ob2Rlc1tqXS50byk7DQogICAgICAgICAgfQ0KICAgIA0KICAgICAgICAgIHZhciBjdXJyZW50Q29ubmVjdGVkVG9Ob2RlcyA9IGZpcnN0TGV2ZWxOb2RlczsNCiAgICAgICAgICB3aGlsZShjdXJyZW50Q29ubmVjdGVkVG9Ob2Rlcy5sZW5ndGggIT09IDApew0KICAgICAgICAgICAgY29ubmVjdGVkVG9Ob2RlcyA9IG5ldHdvcmsuYm9keS5kYXRhLmVkZ2VzLmdldCh7DQogICAgICAgICAgICAgIGZpZWxkczogWydpZCcsICd0byddLA0KICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKGl0ZW0pIHsNCiAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleE9mLmNhbGwoY3VycmVudENvbm5lY3RlZFRvTm9kZXMsIGl0ZW0uZnJvbSwgdHJ1ZSkgPiAtMTsNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHJldHVyblR5cGUgOidBcnJheScNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgY3VycmVudENvbm5lY3RlZFRvTm9kZXMgPSBbXTsNCiAgICAgICAgICAgIHZhciBjdXJyZW50bGVuZ3RoID0gb3RoZXJMZXZlbE5vZGVzLmxlbmd0aDsNCiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBjb25uZWN0ZWRUb05vZGVzLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICAgIG90aGVyTGV2ZWxOb2RlcyA9IHVuaXF1ZUFycmF5KG90aGVyTGV2ZWxOb2Rlcy5jb25jYXQoY29ubmVjdGVkVG9Ob2Rlc1tqXS50byksIGZhbHNlLCBuZXR3b3JrKTsNCiAgICAgICAgICAgICAgY3VycmVudENvbm5lY3RlZFRvTm9kZXMgPSB1bmlxdWVBcnJheShjdXJyZW50Q29ubmVjdGVkVG9Ob2Rlcy5jb25jYXQoY29ubmVjdGVkVG9Ob2Rlc1tqXS50byksIGZhbHNlLCBuZXR3b3JrKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChvdGhlckxldmVsTm9kZXMubGVuZ3RoID09PSBjdXJyZW50bGVuZ3RoKSB7IGJyZWFrOyB9DQogICAgICAgICAgfQ0KICAgICAgICAgICAgICANCiAgICAgICAgICB2YXIgZmluYWxGaXJzdExldmVsTm9kZXMgPSBbXTsNCiAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgZmlyc3RMZXZlbE5vZGVzLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICB2YXIgZmluZG5vZGUgPSBuZXR3b3JrLmNsdXN0ZXJpbmcuZmluZE5vZGUoZmlyc3RMZXZlbE5vZGVzW2pdKQ0KICAgICAgICAgICAgaWYoZmluZG5vZGUubGVuZ3RoID09PSAxKXsNCiAgICAgICAgICAgICAgZmluYWxGaXJzdExldmVsTm9kZXMgPSBmaW5hbEZpcnN0TGV2ZWxOb2Rlcy5jb25jYXQoZmlyc3RMZXZlbE5vZGVzW2pdKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgIGZpbmFsRmlyc3RMZXZlbE5vZGVzID0gZmluYWxGaXJzdExldmVsTm9kZXMuY29uY2F0KGZpbmRub2RlWzBdKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgDQogICAgICAgICAgdmFyIGZpbmFsQ2x1c3Rlck5vZGVzID0gW107DQogICAgICAgICAgZm9yIChqID0gMDsgaiA8IG90aGVyTGV2ZWxOb2Rlcy5sZW5ndGg7IGorKykgew0KICAgICAgICAgICAgdmFyIGZpbmRub2RlID0gbmV0d29yay5jbHVzdGVyaW5nLmZpbmROb2RlKG90aGVyTGV2ZWxOb2Rlc1tqXSkNCiAgICAgICAgICAgIGlmKGZpbmRub2RlLmxlbmd0aCA9PT0gMSl7DQogICAgICAgICAgICAgIGZpbmFsQ2x1c3Rlck5vZGVzID0gZmluYWxDbHVzdGVyTm9kZXMuY29uY2F0KG90aGVyTGV2ZWxOb2Rlc1tqXSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICBmaW5hbENsdXN0ZXJOb2RlcyA9IGZpbmFsQ2x1c3Rlck5vZGVzLmNvbmNhdChmaW5kbm9kZVswXSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KDQogICAgICAgICAgaWYoc2V0X3Bvc2l0aW9uKXsgDQogICAgICAgICAgICBuZXR3b3JrLnN0b3JlUG9zaXRpb25zKCk7DQogICAgICAgICAgfQ0KICAgIA0KICAgICAgICAgIHZhciBjbHVzdGVyT3B0aW9ucyA9IHsNCiAgICAgICAgICAgIGpvaW5Db25kaXRpb246IGZ1bmN0aW9uIChub2Rlc09wdGlvbnMpIHsNCiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzT3B0aW9ucy5pZCA9PT0gc2VsZWN0ZWROb2RlIHx8IGluZGV4T2YuY2FsbChmaW5hbEZpcnN0TGV2ZWxOb2Rlcywgbm9kZXNPcHRpb25zLmlkLCB0cnVlKSA+IC0xIHx8IA0KICAgICAgICAgICAgICAgICAgaW5kZXhPZi5jYWxsKGZpbmFsQ2x1c3Rlck5vZGVzLCBub2Rlc09wdGlvbnMuaWQsIHRydWUpID4gLTE7IA0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICBwcm9jZXNzUHJvcGVydGllczogZnVuY3Rpb24oY2x1c3Rlck9wdGlvbnMsIGNoaWxkTm9kZXMpIHsNCiAgICAgICAgICAgICAgICB2YXIgY2xpY2tfbm9kZSA9IG5ldHdvcmsuYm9keS5kYXRhLm5vZGVzLmdldCh7DQogICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uIChpdGVtKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmlkID09IHNlbGVjdGVkTm9kZTsNCiAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICByZXR1cm5UeXBlIDonQXJyYXknDQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgdmFyIGlzX2hhcmRfdG9fcmVhZCA9IGZhbHNlOw0KICAgICAgICAgICAgICAgIGlmKGNsaWNrX25vZGVbMF0uaXNIYXJkVG9SZWFkICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgICAgICAgaXNfaGFyZF90b19yZWFkID0gY2xpY2tfbm9kZVswXS5pc0hhcmRUb1JlYWQ7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gY2xpY2tfbm9kZVswXSkgew0KICAgICAgICAgICAgICAgICAgaWYoaSAhPT0gImlkIiAmJiBpICE9PSAiaXNIYXJkVG9SZWFkIil7DQogICAgICAgICAgICAgICAgICAgIGlmKGkgPT09ICJsYWJlbCIgJiYgaXNfaGFyZF90b19yZWFkKXsNCiAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyT3B0aW9uc1tpXT0gIGNsaWNrX25vZGVbMF1bImhpZGRlbkxhYmVsIl07DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZihpID09PSAiY29sb3IiICYmIGlzX2hhcmRfdG9fcmVhZCkgew0KICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJPcHRpb25zW2ldPSAgY2xpY2tfbm9kZVswXVsiaGlkZGVuQ29sb3IiXTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnNbaV09ICBjbGlja19ub2RlWzBdW2ldOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgLy8gZ2VzdGlvbiBkZXMgdHJlZQ0KICAgICAgICAgICAgICAgIGlmKHRyZWVQYXJhbXMgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICAgICAgICBpZih0cmVlUGFyYW1zLnVwZGF0ZVNoYXBlKXsNCiAgICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMubGFiZWwgPSBjbHVzdGVyT3B0aW9ucy5sYWJlbENsdXN0DQogICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJPcHRpb25zLmNvbG9yID0gY2x1c3Rlck9wdGlvbnMuY29sb3JDbHVzdA0KICAgICAgICAgICAgICAgICAgICBjbHVzdGVyT3B0aW9ucy5zaGFwZSA9IHRyZWVQYXJhbXMuc2hhcGVZDQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYoY2x1c3Rlck9wdGlvbnMubGFiZWwgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICAgICAgICBjbHVzdGVyT3B0aW9ucy5sYWJlbCA9IGNsdXN0ZXJPcHRpb25zLmxhYmVsICsgIiAiICsgbGFiZWxTdWZmaXg7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgIGNsdXN0ZXJPcHRpb25zLmxhYmVsID0gIGxhYmVsU3VmZml4Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGlmKGNsdXN0ZXJPcHRpb25zLmJvcmRlcldpZHRoICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMuYm9yZGVyV2lkdGggPSBjbHVzdGVyT3B0aW9ucy5ib3JkZXJXaWR0aCAqIDM7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgIGNsdXN0ZXJPcHRpb25zLmJvcmRlcldpZHRoID0gIDM7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYoc2V0X3Bvc2l0aW9uKXsNCiAgICAgICAgICAgICAgICAgIGlmKGNsaWNrX25vZGVbMF0ueCAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMueCA9IGNsaWNrX25vZGVbMF0ueDsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIGlmKGNsaWNrX25vZGVbMF0ueSAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMueSA9IGNsaWNrX25vZGVbMF0ueTsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYoY2x1c3RlclBhcmFtcyAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4gY2x1c3RlclBhcmFtcykgew0KICAgICAgICAgICAgICAgICAgICBjbHVzdGVyT3B0aW9uc1tqXT0gIGNsdXN0ZXJQYXJhbXNbal07DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgcmV0dXJuIGNsdXN0ZXJPcHRpb25zOw0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGNsdXN0ZXJOb2RlUHJvcGVydGllczogew0KICAgICAgICAgICAgICBhbGxvd1NpbmdsZU5vZGVDbHVzdGVyOiBmYWxzZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgICBuZXR3b3JrLmNsdXN0ZXIoY2x1c3Rlck9wdGlvbnMpOw0KICAgICAgICB9DQogICAgICB9DQogICAgICANCiAgICB9DQogICAgaWYocmVzZXRIaWdobGlnaHQpew0KICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vZGVTZWxlY3QiK2VsaWQpLnZhbHVlID0gIiI7DQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm9kZVNlbGVjdCIrZWxpZCkub25jaGFuZ2UoKTsNCiAgICB9DQogICAgaWYoZml0KXsNCiAgICAgIG5ldHdvcmsuZml0KCk7DQogICAgfQ0KICB9DQp9Ow0KDQpmdW5jdGlvbiB1bmNvbGxhcHNlZE5ldHdvcmsobm9kZXMsIGZpdCwgcmVzZXRIaWdobGlnaHQsIGtlZXBDb29yZCwgbmV0d29yaywgZWxpZCkgew0KICB2YXIgc2VsZWN0ZWROb2RlOw0KICB2YXIgajsNCiAgdmFyIGFycl9ub2RlcyA9IFtdOw0KICB2YXIgY2x1c3Rlcl9ub2RlOw0KICANCiAgdmFyIG5vZGVzX2luX2NsdXN0ZXJzID0gbmV0d29yay5ib2R5Lm1vZHVsZXMuY2x1c3RlcmluZy5jbHVzdGVyZWROb2RlczsNCiAgaWYoT2JqZWN0LmtleXMobm9kZXNfaW5fY2x1c3RlcnMpLmxlbmd0aCA+IDApew0KICAgIG5vZGVzX2luX2NsdXN0ZXJzID0gT2JqZWN0LmtleXMobm9kZXNfaW5fY2x1c3RlcnMpOw0KICB9IGVsc2Ugew0KICAgIG5vZGVzX2luX2NsdXN0ZXJzID0gW10NCiAgfQ0KICAgIA0KICBpZihub2RlcyAhPT0gdW5kZWZpbmVkICYmIG5vZGVzICE9PSBudWxsKXsNCiAgICBhcnJfbm9kZXMgPSBub2Rlcw0KICB9IGVsc2Ugew0KICAgIGFycl9ub2RlcyA9IG5vZGVzX2luX2NsdXN0ZXJzOw0KICB9DQoNCiAgZm9yICh2YXIgaW5vZGVzID0gMDsgaW5vZGVzIDwgYXJyX25vZGVzLmxlbmd0aDsgaW5vZGVzKyspIHsNCiAgICBzZWxlY3RlZE5vZGUgPSAnJyArIGFycl9ub2Rlc1tpbm9kZXNdOw0KICAgIGlmKHNlbGVjdGVkTm9kZSAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgaWYobmV0d29yay5pc0NsdXN0ZXIoc2VsZWN0ZWROb2RlKSl7DQogICAgICAgICAgaWYoa2VlcENvb3JkKXsNCiAgICAgICAgICAgIG5ldHdvcmsub3BlbkNsdXN0ZXIoc2VsZWN0ZWROb2RlLCANCiAgICAgICAgICAgICAge3JlbGVhc2VGdW5jdGlvbiA6IGZ1bmN0aW9uKGNsdXN0ZXJQb3NpdGlvbiwgY29udGFpbmVkTm9kZXNQb3NpdGlvbnMpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lZE5vZGVzUG9zaXRpb25zOw0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgbmV0d29yay5vcGVuQ2x1c3RlcihzZWxlY3RlZE5vZGUpDQogICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIGlmKGluZGV4T2YuY2FsbChub2Rlc19pbl9jbHVzdGVycywgc2VsZWN0ZWROb2RlLCB0cnVlKSA+IC0xKXsNCiAgICAgICAgICAgIC8vIG5vdCBhIGNsdXN0ZXIgaW50byBhIGNsdXN0ZXIuLi4NCiAgICAgICAgICAgIGlmKHNlbGVjdGVkTm9kZS5zZWFyY2goL15jbHVzdGVyL2kpID09PSAtMSl7DQogICAgICAgICAgICAgIGNsdXN0ZXJfbm9kZSA9IG5ldHdvcmsuY2x1c3RlcmluZy5maW5kTm9kZShzZWxlY3RlZE5vZGUpWzBdOw0KICAgICAgICAgICAgICBpZihuZXR3b3JrLmlzQ2x1c3RlcihjbHVzdGVyX25vZGUpKXsNCiAgICAgICAgICAgICAgICBpZihrZWVwQ29vcmQpew0KICAgICAgICAgICAgICAgICAgbmV0d29yay5vcGVuQ2x1c3RlcihjbHVzdGVyX25vZGUsIA0KICAgICAgICAgICAgICAgICAgICB7cmVsZWFzZUZ1bmN0aW9uIDogZnVuY3Rpb24oY2x1c3RlclBvc2l0aW9uLCBjb250YWluZWROb2Rlc1Bvc2l0aW9ucykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGFpbmVkTm9kZXNQb3NpdGlvbnM7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICBuZXR3b3JrLm9wZW5DbHVzdGVyKGNsdXN0ZXJfbm9kZSkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0gDQogICAgICB9DQogICAgfQ0KICBpZihyZXNldEhpZ2hsaWdodCl7DQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vZGVTZWxlY3QiK2VsaWQpLnZhbHVlID0gIiI7DQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vZGVTZWxlY3QiK2VsaWQpLm9uY2hhbmdlKCk7DQogIH0NCiAgaWYoZml0KXsNCiAgICBuZXR3b3JrLmZpdCgpOw0KICB9DQp9Ow0KDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIEFsbCBhdmFpbGFibGUgZnVuY3Rpb25zL21ldGhvZHMgd2l0aCB2aXNOZXR3b3JrUHJveHkNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIA0KaWYgKEhUTUxXaWRnZXRzLnNoaW55TW9kZSl7DQogIA0KICAvLyBjb2xsYXBzZWQgbWV0aG9kDQogIFNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCd2aXNTaGlueUNvbGxhcHNlJywgZnVuY3Rpb24oZGF0YSl7DQogICAgICAvLyBnZXQgY29udGFpbmVyIGlkDQogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2RhdGEuaWQpOw0KICAgICAgaWYoZWwpew0KICAgICAgICBjb2xsYXBzZWROZXR3b3JrKGRhdGEubm9kZXMsIGRhdGEuZml0LCBkYXRhLnJlc2V0SGlnaGxpZ2h0LCBkYXRhLmNsdXN0ZXJPcHRpb25zLCBkYXRhLmxhYmVsU3VmZml4LCB1bmRlZmluZWQsIGVsLmNoYXJ0LCBkYXRhLmlkKQ0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIHVuY29sbGFwc2VkIG1ldGhvZA0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlVbmNvbGxhcHNlJywgZnVuY3Rpb24oZGF0YSl7DQogICAgICAvLyBnZXQgY29udGFpbmVyIGlkDQogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2RhdGEuaWQpOw0KICAgICAgaWYoZWwpew0KICAgICAgICB1bmNvbGxhcHNlZE5ldHdvcmsoZGF0YS5ub2RlcywgZGF0YS5maXQsIGRhdGEucmVzZXRIaWdobGlnaHQsIGRhdGEua2VlcENvb3JkLCBlbC5jaGFydCwgZGF0YS5pZCkNCiAgICAgIH0NCiAgfSk7DQoNCiAgLy8gZXZlbnQgbWV0aG9kDQogIFNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCd2aXNTaGlueUV2ZW50cycsIGZ1bmN0aW9uKGRhdGEpew0KICAgICAgLy8gZ2V0IGNvbnRhaW5lciBpZA0KICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYXBoIitkYXRhLmlkKTsNCiAgICAgIGlmKGVsKXsNCiAgICAgICAgdmFyIG5ldHdvcmsgPSBlbC5jaGFydDsNCiAgICAgICAgDQogICAgICAgIGlmKGRhdGEudHlwZSA9PT0gIm9uY2UiKXsNCiAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGF0YS5ldmVudHMpIHsNCiAgICAgICAgICAgIGV2YWwoJ25ldHdvcmsub25jZSgiJyArIGtleSArICciLCcgKyBkYXRhLmV2ZW50c1trZXldICsgJyknKTsNCiAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSBpZihkYXRhLnR5cGUgPT09ICJvbiIpew0KICAgICAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhLmV2ZW50cykgew0KICAgICAgICAgICAgZXZhbCgnbmV0d29yay5vbigiJyArIGtleSArICciLCcgKyBkYXRhLmV2ZW50c1trZXldICsgJyknKTsNCiAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSBpZihkYXRhLnR5cGUgPT09ICJvZmYiKXsNCiAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGF0YS5ldmVudHMpIHsNCiAgICAgICAgICAgIGV2YWwoJ25ldHdvcmsub2ZmKCInICsga2V5ICsgJyIsJyArIGRhdGEuZXZlbnRzW2tleV0gKyAnKScpOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIG1vdmVOb2RlIG1ldGhvZA0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlNb3ZlTm9kZScsIGZ1bmN0aW9uKGRhdGEpew0KICAgICAgLy8gZ2V0IGNvbnRhaW5lciBpZA0KICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYXBoIitkYXRhLmlkKTsNCiAgICAgIGlmKGVsKXsNCiAgICAgICAgdmFyIG5ldHdvcmsgPSBlbC5jaGFydDsNCiAgICAgICAgbmV0d29yay5tb3ZlTm9kZShkYXRhLm5vZGVJZCwgZGF0YS54LCBkYXRhLnkpOw0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIHVuc2VsZWN0QWxsIG1ldGhvZA0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlVbnNlbGVjdEFsbCcsIGZ1bmN0aW9uKGRhdGEpew0KICAgICAgLy8gZ2V0IGNvbnRhaW5lciBpZA0KICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYXBoIitkYXRhLmlkKTsNCiAgICAgIGlmKGVsKXsNCiAgICAgICAgdmFyIG5ldHdvcmsgPSBlbC5jaGFydDsNCiAgICAgICAgDQogICAgICAgIC8vIHJlc2V0IHNlbGVjdGlvbg0KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm9kZVNlbGVjdCIrZGF0YS5pZCkudmFsdWUgPSAiIjsNCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vZGVTZWxlY3QiK2RhdGEuaWQpLm9uY2hhbmdlKCk7DQogICAgICAgIA0KICAgICAgICBpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkYXRhLmlkKS5zZWxlY3RBY3RpdmUgPT09IHRydWUpew0KICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlbGVjdGVkQnkiK2RhdGEuaWQpLnZhbHVlID0gIiI7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VsZWN0ZWRCeSIrZGF0YS5pZCkub25jaGFuZ2UoKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgbmV0d29yay51bnNlbGVjdEFsbCgpOw0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIHVwZGF0ZU9wdGlvbnMgaW4gdGhlIG5ldHdvcmsNCiAgU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoJ3Zpc1NoaW55T3B0aW9ucycsIGZ1bmN0aW9uKGRhdGEpew0KICAgICAgLy8gZ2V0IGNvbnRhaW5lciBpZA0KICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYXBoIitkYXRhLmlkKTsNCiAgICAgIA0KICAgICAgaWYoZWwpew0KICAgICAgICB2YXIgbmV0d29yayA9IGVsLmNoYXJ0Ow0KICAgICAgICB2YXIgb3B0aW9ucyA9IGVsLm9wdGlvbnM7DQogICAgICAgIC8vIGNvbmZpZ3VyZQ0KICAgICAgICBpZihkYXRhLm9wdGlvbnMuY29uZmlndXJlICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgIGlmKGRhdGEub3B0aW9ucy5jb25maWd1cmUuY29udGFpbmVyICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgdmFyIGRvbV9jb25mID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGF0YS5vcHRpb25zLmNvbmZpZ3VyZS5jb250YWluZXIpOw0KICAgICAgICAgICAgaWYoZG9tX2NvbmYgIT09IG51bGwpew0KICAgICAgICAgICAgICBkYXRhLm9wdGlvbnMuY29uZmlndXJlLmNvbnRhaW5lciA9IGRvbV9jb25mOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgZGF0YS5vcHRpb25zLmNvbmZpZ3VyZS5jb250YWluZXIgPSB1bmRlZmluZWQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgDQogICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgICAgICAvLyBwcmUtdHJlYXRtZW50IGZvciBpY29ucyAodW5pY29kZSkNCiAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgICAgIGlmKGRhdGEub3B0aW9ucy5ncm91cHMpew0KICAgICAgICAgIGZvciAodmFyIGdyIGluIGRhdGEub3B0aW9ucy5ncm91cHMpew0KICAgICAgICAgICAgaWYoZGF0YS5vcHRpb25zLmdyb3Vwc1tncl0uaWNvbil7DQogICAgICAgICAgICAgIGlmKGRhdGEub3B0aW9ucy5ncm91cHNbZ3JdLmljb24uY29kZSl7DQogICAgICAgICAgICAgICAgZGF0YS5vcHRpb25zLmdyb3Vwc1tncl0uaWNvbi5jb2RlID0gSlNPTi5wYXJzZSggJyInKydcXHUnICsgZGF0YS5vcHRpb25zLmdyb3Vwc1tncl0uaWNvbi5jb2RlICsgJyInKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBpZihkYXRhLm9wdGlvbnMuZ3JvdXBzW2dyXS5pY29uLmNvbG9yKXsNCiAgICAgICAgICAgICAgICBkYXRhLm9wdGlvbnMuZ3JvdXBzW2dyXS5jb2xvciA9IGRhdGEub3B0aW9ucy5ncm91cHNbZ3JdLmljb24uY29sb3I7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIGlmKGRhdGEub3B0aW9ucy5ub2Rlcyl7DQogICAgICAgICAgaWYoZGF0YS5vcHRpb25zLm5vZGVzLmljb24pew0KICAgICAgICAgICAgaWYoZGF0YS5vcHRpb25zLm5vZGVzLmljb24uY29kZSl7DQogICAgICAgICAgICAgIGRhdGEub3B0aW9ucy5ub2Rlcy5pY29uLmNvZGUgPSBKU09OLnBhcnNlKCAnIicrJ1xcdScgKyBkYXRhLm9wdGlvbnMubm9kZXMuaWNvbi5jb2RlICsgJyInKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmKGRhdGEub3B0aW9ucy5ub2Rlcy5pY29uLmNvbG9yKXsNCiAgICAgICAgICAgICAgZGF0YS5vcHRpb25zLm5vZGVzLmNvbG9yID0gZGF0YS5vcHRpb25zLm5vZGVzLmljb24uY29sb3I7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgDQogICAgICAgIHVwZGF0ZShvcHRpb25zLCBkYXRhLm9wdGlvbnMpOw0KICAgICAgICBuZXR3b3JrLnNldE9wdGlvbnMob3B0aW9ucyk7DQogICAgICB9DQogIH0pOw0KICANCiAgLy8gc2V0RGF0YSB0aGUgbmV0d29yaw0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlTZXREYXRhJywgZnVuY3Rpb24oZGF0YSl7DQogICAgICAvLyBnZXQgY29udGFpbmVyIGlkDQogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2RhdGEuaWQpOw0KICAgICAgaWYoZWwpew0KICAgICAgICB2YXIgbmV0d29yayA9IGVsLmNoYXJ0Ow0KICAgICAgICB2YXIgbmV3bm9kZXMgPSBuZXcgdmlzLkRhdGFTZXQoKTsNCiAgICAgICAgdmFyIG5ld2VkZ2VzID0gbmV3IHZpcy5EYXRhU2V0KCk7DQoJCQ0KICAgICAgICBuZXdub2Rlcy5hZGQodmlzTmV0d29ya2RhdGFmcmFtZVRvRDMoZGF0YS5ub2RlcywgIm5vZGVzIikpOw0KICAgICAgICBuZXdlZGdlcy5hZGQodmlzTmV0d29ya2RhdGFmcmFtZVRvRDMoZGF0YS5lZGdlcywgImVkZ2VzIikpOw0KICAgICAgICB2YXIgbmV3ZGF0YSA9IHsNCiAgICAgICAgICBub2RlczogbmV3bm9kZXMsDQogICAgICAgICAgZWRnZXM6IG5ld2VkZ2VzDQogICAgICAgIH07DQogICAgICAgIG5ldHdvcmsuc2V0RGF0YShuZXdkYXRhKTsNCiAgICAgIH0NCiAgfSk7DQogIA0KICAvLyBmaXQgdG8gYSBzcGVjaWZpYyBub2RlDQogIFNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCd2aXNTaGlueUZpdCcsIGZ1bmN0aW9uKGRhdGEpew0KICAgIC8vIGdldCBjb250YWluZXIgaWQNCiAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2RhdGEuaWQpOw0KICAgIGlmKGVsKXsNCiAgICAgICAgdmFyIG5ldHdvcmsgPSBlbC5jaGFydDsNCiAgICAgICAgbmV0d29yay5maXQoZGF0YS5vcHRpb25zKTsNCiAgICAgIH0NCiAgfSk7DQogIA0KICAvLyBmb2N1cyBvbiBhIG5vZGUgaW4gdGhlIG5ldHdvcmsNCiAgU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoJ3Zpc1NoaW55Rm9jdXMnLCBmdW5jdGlvbihkYXRhKXsNCiAgICAgIC8vIGdldCBjb250YWluZXIgaWQNCiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmFwaCIrZGF0YS5pZCk7DQogICAgICBpZihlbCl7DQogICAgICAgIHZhciBuZXR3b3JrID0gZWwuY2hhcnQ7DQogICAgICAgIG5ldHdvcmsuZm9jdXMoZGF0YS5mb2N1c0lkLCBkYXRhLm9wdGlvbnMpOw0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIHN0YWJpbGl6ZSB0aGUgbmV0d29yaw0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlTdGFiaWxpemUnLCBmdW5jdGlvbihkYXRhKXsNCiAgICAgIC8vIGdldCBjb250YWluZXIgaWQNCiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmFwaCIrZGF0YS5pZCk7DQogICAgICBpZihlbCl7DQogICAgICAgIHZhciBuZXR3b3JrID0gZWwuY2hhcnQ7DQogICAgICAgIG5ldHdvcmsuc3RhYmlsaXplKGRhdGEub3B0aW9ucyk7DQogICAgICB9DQogIH0pOw0KDQogIC8vIHN0YXJ0U2ltdWxhdGlvbiBvbiBuZXR3b3JrDQogIFNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCd2aXNTaGlueVN0YXJ0U2ltdWxhdGlvbicsIGZ1bmN0aW9uKGRhdGEpew0KICAgICAgLy8gZ2V0IGNvbnRhaW5lciBpZA0KICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYXBoIitkYXRhLmlkKTsNCiAgICAgIGlmKGVsKXsNCiAgICAgICAgdmFyIG5ldHdvcmsgPSBlbC5jaGFydDsNCiAgICAgICAgbmV0d29yay5zdGFydFNpbXVsYXRpb24oKTsNCiAgICAgIH0NCiAgfSk7DQogIA0KICAvLyBzdG9wU2ltdWxhdGlvbiBvbiBuZXR3b3JrDQogIFNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCd2aXNTaGlueVN0b3BTaW11bGF0aW9uJywgZnVuY3Rpb24oZGF0YSl7DQogICAgICAvLyBnZXQgY29udGFpbmVyIGlkDQogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2RhdGEuaWQpOw0KICAgICAgaWYoZWwpew0KICAgICAgICB2YXIgbmV0d29yayA9IGVsLmNoYXJ0Ow0KICAgICAgICBuZXR3b3JrLnN0b3BTaW11bGF0aW9uKCk7DQogICAgICB9DQogIH0pOw0KICANCiAgLy8gZ2V0IHBvc2l0aW9ucyBvZiB0aGUgbmV0d29yaw0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlHZXRQb3NpdGlvbnMnLCBmdW5jdGlvbihkYXRhKXsNCiAgICAgIC8vIGdldCBjb250YWluZXIgaWQNCiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmFwaCIrZGF0YS5pZCk7DQogICAgICBpZihlbCl7DQogICAgICAgIHZhciBuZXR3b3JrID0gZWwuY2hhcnQ7DQogICAgICAgIHZhciBwb3M7DQogICAgICAgIA0KICAgICAgICBpZihkYXRhLm5vZGVzICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgIHBvcyA9IG5ldHdvcmsuZ2V0UG9zaXRpb25zKGRhdGEubm9kZXMpOw0KICAgICAgICB9ZWxzZXsNCiAgICAgICAgICBwb3MgPSBuZXR3b3JrLmdldFBvc2l0aW9ucygpOw0KICAgICAgICB9DQoJCS8vIHJldHVybiBwb3NpdGlvbnMgaW4gc2hpbnkNCiAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZShkYXRhLmlucHV0LCBwb3MpOw0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIGdldCBlZGdlcyBkYXRhDQogIFNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCd2aXNTaGlueUdldEVkZ2VzJywgZnVuY3Rpb24oZGF0YSl7DQogICAgICAvLyBnZXQgY29udGFpbmVyIGlkDQogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2RhdGEuaWQpOw0KICAgICAgaWYoZWwpew0KICAgICAgICB2YXIgY3VycmVudF9lZGdlcyA9IGVsLmVkZ2VzLmdldERhdGFTZXQoKTsNCiAgICAgICAgLy8gcmV0dXJuIGRhdGEgaW4gc2hpbnkNCiAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZShkYXRhLmlucHV0LCBjdXJyZW50X2VkZ2VzLl9kYXRhKTsNCiAgICAgIH0NCiAgfSk7DQogIA0KICAvLyBnZXQgbm9kZXMgZGF0YQ0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlHZXROb2RlcycsIGZ1bmN0aW9uKGRhdGEpew0KICAgICAgLy8gZ2V0IGNvbnRhaW5lciBpZA0KICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYXBoIitkYXRhLmlkKTsNCiAgICAgIGlmKGVsKXsNCiAgICAgICAgaWYoZGF0YS5hZGRDb29yZGluYXRlcyl7DQogICAgICAgICAgZWwuY2hhcnQuc3RvcmVQb3NpdGlvbnMoKTsNCiAgICAgICAgfQ0KICAgICAgICB2YXIgY3VycmVudF9ub2RlcyA9IGVsLm5vZGVzLmdldERhdGFTZXQoKTsNCiAgICAgICAgLy8gcmV0dXJuIGRhdGEgaW4gc2hpbnkNCiAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZShkYXRhLmlucHV0LCBjdXJyZW50X25vZGVzLl9kYXRhKTsNCiAgICAgIH0NCiAgfSk7DQogIA0KICAvLyBnZXQgc2VsZWN0ZWQgZWRnZXMNCiAgU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoJ3Zpc1NoaW55R2V0U2VsZWN0ZWRFZGdlcycsIGZ1bmN0aW9uKGRhdGEpew0KICAgICAgLy8gZ2V0IGNvbnRhaW5lciBpZA0KICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYXBoIitkYXRhLmlkKTsNCiAgICAgIGlmKGVsKXsNCiAgICAgICAgdmFyIG5ldHdvcmsgPSBlbC5jaGFydDsNCiAgICAgICAgdmFyIHBvcyA9IG5ldHdvcmsuZ2V0U2VsZWN0ZWRFZGdlcygpOw0KCQkgICAgLy8gcmV0dXJuICBpbiBzaGlueQ0KICAgICAgICBTaGlueS5vbklucHV0Q2hhbmdlKGRhdGEuaW5wdXQsIHBvcyk7DQogICAgICB9DQogIH0pOw0KICANCiAgLy8gZ2V0IHNlbGVjdGVkIG5vZGVzDQogIFNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCd2aXNTaGlueUdldFNlbGVjdGVkTm9kZXMnLCBmdW5jdGlvbihkYXRhKXsNCiAgICAgIC8vIGdldCBjb250YWluZXIgaWQNCiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmFwaCIrZGF0YS5pZCk7DQogICAgICBpZihlbCl7DQogICAgICAgIHZhciBuZXR3b3JrID0gZWwuY2hhcnQ7DQogICAgICAgIHZhciBwb3MgPSBuZXR3b3JrLmdldFNlbGVjdGVkTm9kZXMoKTsNCgkJICAgIC8vIHJldHVybiAgaW4gc2hpbnkNCiAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZShkYXRhLmlucHV0LCBwb3MpOw0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIGdldENvbm5lY3RlZEVkZ2VzDQogIFNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCd2aXNTaGlueUdldENvbm5lY3RlZEVkZ2VzJywgZnVuY3Rpb24oZGF0YSl7DQogICAgICAvLyBnZXQgY29udGFpbmVyIGlkDQogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2RhdGEuaWQpOw0KICAgICAgaWYoZWwpew0KICAgICAgICB2YXIgbmV0d29yayA9IGVsLmNoYXJ0Ow0KICAgICAgICB2YXIgcG9zID0gbmV0d29yay5nZXRDb25uZWN0ZWRFZGdlcyhkYXRhLm5vZGVJZCk7DQogICAgICAgIC8vIHJldHVybiAgaW4gc2hpbnkNCiAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZShkYXRhLmlucHV0LCBwb3MpOw0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIGdldENvbm5lY3RlZE5vZGVzDQogIFNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCd2aXNTaGlueUdldENvbm5lY3RlZE5vZGVzJywgZnVuY3Rpb24oZGF0YSl7DQogICAgICAvLyBnZXQgY29udGFpbmVyIGlkDQogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2RhdGEuaWQpOw0KICAgICAgaWYoZWwpew0KICAgICAgICB2YXIgbmV0d29yayA9IGVsLmNoYXJ0Ow0KICAgICAgICB2YXIgcG9zID0gbmV0d29yay5nZXRDb25uZWN0ZWROb2RlcyhkYXRhLm5vZGVJZCk7DQogICAgICAgIC8vIHJldHVybiAgaW4gc2hpbnkNCiAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZShkYXRhLmlucHV0LCBwb3MpOw0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIGdldEJvdW5kaW5nQm94DQogIFNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCd2aXNTaGlueUdldEJvdW5kaW5nQm94JywgZnVuY3Rpb24oZGF0YSl7DQogICAgICAvLyBnZXQgY29udGFpbmVyIGlkDQogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2RhdGEuaWQpOw0KICAgICAgaWYoZWwpew0KICAgICAgICB2YXIgbmV0d29yayA9IGVsLmNoYXJ0Ow0KICAgICAgICB2YXIgcG9zID0gbmV0d29yay5nZXRCb3VuZGluZ0JveChkYXRhLm5vZGVJZCk7DQogICAgICAgIC8vIHJldHVybiAgaW4gc2hpbnkNCiAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZShkYXRhLmlucHV0LCBwb3MpOw0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIGdldCBzZWxlY3Rpb24NCiAgU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoJ3Zpc1NoaW55R2V0U2VsZWN0aW9uJywgZnVuY3Rpb24oZGF0YSl7DQogICAgICAvLyBnZXQgY29udGFpbmVyIGlkDQogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2RhdGEuaWQpOw0KICAgICAgaWYoZWwpew0KICAgICAgICB2YXIgbmV0d29yayA9IGVsLmNoYXJ0Ow0KICAgICAgICB2YXIgcG9zOw0KICAgICAgICANCiAgICAgICAgcG9zID0gbmV0d29yay5nZXRTZWxlY3Rpb24oKTsNCg0KCQkgICAgLy8gcmV0dXJuICBpbiBzaGlueQ0KICAgICAgICBTaGlueS5vbklucHV0Q2hhbmdlKGRhdGEuaW5wdXQsIHBvcyk7DQogICAgICB9DQogIH0pOw0KICANCiAgLy8gZ2V0IHNjYWxlDQogIFNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCd2aXNTaGlueUdldFNjYWxlJywgZnVuY3Rpb24oZGF0YSl7DQogICAgICAvLyBnZXQgY29udGFpbmVyIGlkDQogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2RhdGEuaWQpOw0KICAgICAgaWYoZWwpew0KICAgICAgICB2YXIgbmV0d29yayA9IGVsLmNoYXJ0Ow0KICAgICAgICB2YXIgcG9zOw0KICAgICAgICANCiAgICAgICAgcG9zID0gbmV0d29yay5nZXRTY2FsZSgpOw0KDQoJCSAgICAvLyByZXR1cm4gIGluIHNoaW55DQogICAgICAgIFNoaW55Lm9uSW5wdXRDaGFuZ2UoZGF0YS5pbnB1dCwgcG9zKTsNCiAgICAgIH0NCiAgfSk7DQogIA0KICAvLyBzdG9yZSBwb3NpdGlvbnMNCiAgU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoJ3Zpc1NoaW55U3RvcmVQb3NpdGlvbnMnLCBmdW5jdGlvbihkYXRhKXsNCiAgICAgIC8vIGdldCBjb250YWluZXIgaWQNCiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmFwaCIrZGF0YS5pZCk7DQogICAgICBpZihlbCl7DQogICAgICAgIHZhciBuZXR3b3JrID0gZWwuY2hhcnQ7DQogICAgICAgIG5ldHdvcmsuc3RvcmVQb3NpdGlvbnMoKTsNCiAgICAgIH0NCiAgfSk7DQogIA0KICAvLyBnZXQgdmlldyBwb3NpdGlvbg0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlHZXRWaWV3UG9zaXRpb24nLCBmdW5jdGlvbihkYXRhKXsNCiAgICAgIC8vIGdldCBjb250YWluZXIgaWQNCiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmFwaCIrZGF0YS5pZCk7DQogICAgICBpZihlbCl7DQogICAgICAgIHZhciBuZXR3b3JrID0gZWwuY2hhcnQ7DQogICAgICAgIHZhciBwb3M7DQogICAgICAgIA0KICAgICAgICBwb3MgPSBuZXR3b3JrLmdldFZpZXdQb3NpdGlvbigpOw0KDQoJCSAgICAvLyByZXR1cm4gIGluIHNoaW55DQogICAgICAgIFNoaW55Lm9uSW5wdXRDaGFuZ2UoZGF0YS5pbnB1dCwgcG9zKTsNCiAgICAgIH0NCiAgfSk7DQogIA0KICAvLyBnZXQgdmlldyBwb3NpdGlvbg0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlHZXRPcHRpb25zRnJvbUNvbmZpZ3VyYXRvcicsIGZ1bmN0aW9uKGRhdGEpew0KICAgICAgLy8gZ2V0IGNvbnRhaW5lciBpZA0KICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYXBoIitkYXRhLmlkKTsNCiAgICAgIGlmKGVsKXsNCiAgICAgICAgdmFyIG5ldHdvcmsgPSBlbC5jaGFydDsNCgkJICAgIC8vIHJldHVybiAgaW4gc2hpbnkNCiAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZShkYXRhLmlucHV0LCBuZXR3b3JrLmdldE9wdGlvbnNGcm9tQ29uZmlndXJhdG9yKCkpOw0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIFJlZHJhdyB0aGUgbmV0d29yaw0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlSZWRyYXcnLCBmdW5jdGlvbihkYXRhKXsNCiAgICAgIC8vIGdldCBjb250YWluZXIgaWQNCiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmFwaCIrZGF0YS5pZCk7DQogICAgICBpZihlbCl7DQogICAgICAgIGVsLmNoYXJ0LnJlZHJhdygpOw0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIHNlbGVjdCBub2Rlcw0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlTZWxlY3ROb2RlcycsIGZ1bmN0aW9uKGRhdGEpew0KICAgICAgLy8gZ2V0IGNvbnRhaW5lciBpZA0KICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYXBoIitkYXRhLmlkKTsNCiAgICAgIGlmKGVsKXsNCiAgICAgICAgdmFyIG5ldHdvcmsgPSBlbC5jaGFydDsNCiAgICAgICAgaWYoZGF0YS5zZWxpZCAhPT0gbnVsbCl7DQogICAgICAgICAgbmV0d29yay5zZWxlY3ROb2RlcyhkYXRhLnNlbGlkLCBkYXRhLmhpZ2hsaWdodEVkZ2VzKTsNCiAgICAgICAgICBpZihkYXRhLmNsaWNrRXZlbnQpew0KICAgICAgICAgICAgZWwubXljbGljayh7bm9kZXMgOiBkYXRhLnNlbGlkfSk7DQogICAgICAgICAgfQ0KICAgICAgICB9ZWxzZXsNCiAgICAgICAgICBpZihkYXRhLmNsaWNrRXZlbnQpew0KICAgICAgICAgICAgZWwubXljbGljayh7bm9kZXMgOiBbXX0pOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIHNlbGVjdCBlZGdlcw0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlTZWxlY3RFZGdlcycsIGZ1bmN0aW9uKGRhdGEpew0KICAgICAgLy8gZ2V0IGNvbnRhaW5lciBpZA0KICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYXBoIitkYXRhLmlkKTsNCiAgICAgIGlmKGVsKXsNCiAgICAgICAgdmFyIG5ldHdvcmsgPSBlbC5jaGFydDsNCiAgICAgICAgaWYoZGF0YS5zZWxpZCAhPT0gbnVsbCl7DQogICAgICAgICAgbmV0d29yay5zZWxlY3RFZGdlcyhkYXRhLnNlbGlkKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIHNldCBzZWxlY3Rpb24NCiAgU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoJ3Zpc1NoaW55U2V0U2VsZWN0aW9uJywgZnVuY3Rpb24oZGF0YSl7DQogICAgICAvLyBnZXQgY29udGFpbmVyIGlkDQogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2RhdGEuaWQpOw0KICAgICAgaWYoZWwpew0KICAgICAgICB2YXIgbmV0d29yayA9IGVsLmNoYXJ0Ow0KICAgICAgICBpZihkYXRhLnNlbGVjdGlvbi5ub2RlcyAhPT0gbnVsbCB8fCBkYXRhLnNlbGVjdGlvbi5lZGdlcyAhPT0gbnVsbCl7DQogICAgICAgICAgbmV0d29yay5zZXRTZWxlY3Rpb24oZGF0YS5zZWxlY3Rpb24sIGRhdGEub3B0aW9ucyk7DQogICAgICAgIH0NCiAgICAgICAgaWYoZGF0YS5jbGlja0V2ZW50KXsNCiAgICAgICAgICBpZihkYXRhLnNlbGVjdGlvbi5ub2RlcyAhPT0gbnVsbCl7DQogICAgICAgICAgICBlbC5teWNsaWNrKHtub2RlcyA6IGRhdGEuc2VsZWN0aW9uLm5vZGVzfSk7DQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgZWwubXljbGljayh7bm9kZXMgOiBbXX0pOyANCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0NCiAgfSk7DQogIA0KICBmdW5jdGlvbiB1cGRhdGVWaXNPcHRpb25zKGRhdGEpew0KICAgICAgICAvLyBnZXQgY29udGFpbmVyIGlkDQogICAgICAgIHZhciBncmFwaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmFwaCIrZGF0YS5pZCk7DQogICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRhdGEuaWQpOw0KICAgICAgICB2YXIgZG9fbG9vcF9ieSA9IGZhbHNlOw0KICAgICAgICB2YXIgb3B0aW9uMjsNCiAgICAgICAgdmFyIHNlbGVjdExpc3QyOw0KICAgICAgICB2YXIgc2VsZWN0TGlzdDsNCiAgICAgICAgdmFyIHJlc2V0ID0gZmFsc2U7DQogICAgICAgIA0KICAgICAgICBpZihncmFwaCl7DQogICAgICAgICAgLy8gcmVzZXQgbm9kZXMgYmVmb3JlID8NCiAgICAgICAgICBpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbC5pZCkuaGlnaGxpZ2h0KXsNCiAgICAgICAgICAgIC8vIG5lZWQgcmVzZXQgbm9kZXMNCiAgICAgICAgICAgIGlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsLmlkKS5oaWdobGlnaHRBY3RpdmUgPT09IHRydWUpew0KICAgICAgICAgICAgICByZXNldCA9IHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmKHJlc2V0KXsNCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJub2RlU2VsZWN0IitkYXRhLmlkKS52YWx1ZSA9ICIiOw0KICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vZGVTZWxlY3QiK2RhdGEuaWQpLm9uY2hhbmdlKCk7DQogICAgICAgICAgfQ0KICAgICAgICAgIA0KICAgICAgICAgIC8vIGNvbGxhcHNlIGluaXQNCiAgICAgICAgICBpZihkYXRhLm9wdGlvbnMuY29sbGFwc2UgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICBlbC5jb2xsYXBzZSA9IGRhdGEub3B0aW9ucy5jb2xsYXBzZS5lbmFibGVkOw0KICAgICAgICAgICAgZWwuY29sbGFwc2VGaXQgPSBkYXRhLm9wdGlvbnMuY29sbGFwc2UuZml0Ow0KICAgICAgICAgICAgZWwuY29sbGFwc2VSZXNldEhpZ2hsaWdodCA9IGRhdGEub3B0aW9ucy5jb2xsYXBzZS5yZXNldEhpZ2hsaWdodDsNCiAgICAgICAgICAgIGVsLmNvbGxhcHNlS2VlcENvb3JkID0gZGF0YS5vcHRpb25zLmNvbGxhcHNlLmtlZXBDb29yZDsNCiAgICAgICAgICAgIGVsLmNvbGxhcHNlTGFiZWxTdWZmaXggPSBkYXRhLm9wdGlvbnMuY29sbGFwc2UubGFiZWxTdWZmaXg7DQogICAgICAgICAgICBlbC5jbHVzdGVyT3B0aW9ucyA9IGRhdGEub3B0aW9ucy5jb2xsYXBzZS5jbHVzdGVyT3B0aW9uczsNCiAgICAgICAgICB9DQogICAgICAgICAgDQogICAgICAgICAgLy8gaGlnaGxpZ2h0IGluaXQNCiAgICAgICAgICBpZihkYXRhLm9wdGlvbnMuaGlnaGxpZ2h0ICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgZWwuaGlnaGxpZ2h0ID0gZGF0YS5vcHRpb25zLmhpZ2hsaWdodC5lbmFibGVkOw0KICAgICAgICAgICAgZWwuZGVncmVlID0gZGF0YS5vcHRpb25zLmhpZ2hsaWdodC5kZWdyZWU7DQogICAgICAgICAgICBlbC5ob3Zlck5lYXJlc3QgPSBkYXRhLm9wdGlvbnMuaGlnaGxpZ2h0LmhvdmVyTmVhcmVzdDsNCiAgICAgICAgICAgIGVsLmhpZ2hsaWdodENvbG9yID0gZGF0YS5vcHRpb25zLmhpZ2hsaWdodC5oaWRlQ29sb3I7DQogICAgICAgICAgICBlbC5oaWdobGlnaHRBbGdvcml0aG0gPSBkYXRhLm9wdGlvbnMuaGlnaGxpZ2h0LmFsZ29yaXRobTsNCiAgICAgICAgICAgIGVsLmhpZ2hsaWdodExhYmVsT25seSA9IGRhdGEub3B0aW9ucy5sYWJlbE9ubHk7DQogICAgICAgICAgfQ0KDQogICAgICAgICAgLy8gYnlzZWxlY3Rpb24gaW5pdA0KICAgICAgICAgIGlmKGRhdGEub3B0aW9ucy5ieXNlbGVjdGlvbiAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgIGlmKGRhdGEub3B0aW9ucy5ieXNlbGVjdGlvbi5zZWxlY3RlZCAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlbGVjdGVkQnkiK2RhdGEuaWQpLnZhbHVlID0gZGF0YS5vcHRpb25zLmJ5c2VsZWN0aW9uLnNlbGVjdGVkOw0KICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VsZWN0ZWRCeSIrZGF0YS5pZCkub25jaGFuZ2UoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmKGRhdGEub3B0aW9ucy5ieXNlbGVjdGlvbi5oaWRlQ29sb3Ipew0KICAgICAgICAgICAgICBlbC5ieXNlbGVjdGlvbkNvbG9yID0gZGF0YS5vcHRpb25zLmJ5c2VsZWN0aW9uLmhpZGVDb2xvcjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmKGRhdGEub3B0aW9ucy5ieXNlbGVjdGlvbi5oaWdobGlnaHQgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICAgIGVsLmJ5c2VsZWN0aW9uSGlnaGxpZ2h0ID0gZGF0YS5vcHRpb25zLmJ5c2VsZWN0aW9uLmhpZ2hsaWdodDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgDQogICAgICAgICAgaWYoZGF0YS5vcHRpb25zLmJ5c2VsZWN0aW9uICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgc2VsZWN0TGlzdDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VsZWN0ZWRCeSIrZGF0YS5pZCkNCiAgICAgICAgICAgIHNlbGVjdExpc3QyLm9wdGlvbnMubGVuZ3RoID0gMDsNCiAgICAgICAgICAgIGlmKGRhdGEub3B0aW9ucy5ieXNlbGVjdGlvbi5lbmFibGVkID09PSB0cnVlKXsNCiAgICAgICAgICAgICAgb3B0aW9uMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOw0KICAgICAgICAgICAgICBvcHRpb24yLnZhbHVlID0gIiI7DQogICAgICAgICAgICAgIGlmKGRhdGEub3B0aW9ucy5ieXNlbGVjdGlvbi5tYWluID09PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgICAgIG9wdGlvbjIudGV4dCA9ICJTZWxlY3QgYnkgIiArIGRhdGEub3B0aW9ucy5ieXNlbGVjdGlvbi52YXJpYWJsZTsNCiAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBvcHRpb24yLnRleHQgPSBkYXRhLm9wdGlvbnMuYnlzZWxlY3Rpb24ubWFpbjsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgc2VsZWN0TGlzdDIuYXBwZW5kQ2hpbGQob3B0aW9uMik7DQogICAgICANCiAgICAgICAgICAgICAgaWYoZGF0YS5vcHRpb25zLmJ5c2VsZWN0aW9uLnZhbHVlcyAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEub3B0aW9ucy5ieXNlbGVjdGlvbi52YWx1ZXMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICAgIG9wdGlvbjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsNCiAgICAgICAgICAgICAgICAgIG9wdGlvbjIudmFsdWUgPSBkYXRhLm9wdGlvbnMuYnlzZWxlY3Rpb24udmFsdWVzW2ldOw0KICAgICAgICAgICAgICAgICAgb3B0aW9uMi50ZXh0ID0gZGF0YS5vcHRpb25zLmJ5c2VsZWN0aW9uLnZhbHVlc1tpXTsNCiAgICAgICAgICAgICAgICAgIHNlbGVjdExpc3QyLmFwcGVuZENoaWxkKG9wdGlvbjIpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAgICAgZG9fbG9vcF9ieSA9IHRydWU7DQogICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICBlbC5ieXNlbGVjdGlvbl92YXJpYWJsZSA9IGRhdGEub3B0aW9ucy5ieXNlbGVjdGlvbi52YXJpYWJsZTsNCiAgICAgICAgICAgICAgZWwuYnlzZWxlY3Rpb25fbXVsdGlwbGUgPSBkYXRhLm9wdGlvbnMuYnlzZWxlY3Rpb24ubXVsdGlwbGU7DQogICAgICAgICAgICAgIHNlbGVjdExpc3QyLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJzsNCiAgICAgICAgICAgICAgaWYoZGF0YS5vcHRpb25zLmJ5c2VsZWN0aW9uLnN0eWxlICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgICAgIHNlbGVjdExpc3QyLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBkYXRhLm9wdGlvbnMuYnlzZWxlY3Rpb24uc3R5bGUpOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIGVsLmJ5c2VsZWN0aW9uID0gdHJ1ZTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgIHNlbGVjdExpc3QyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAgICAgICAgICAgIGVsLmJ5c2VsZWN0aW9uID0gZmFsc2U7DQogICAgICAgICAgICAgIC8vIHJlc2V0IHNlbGVjdGlvbg0KICAgICAgICAgICAgICBpZihlbC5zZWxlY3RBY3RpdmUgPT09IHRydWUpew0KICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWxlY3RlZEJ5IitkYXRhLmlkKS52YWx1ZSA9ICIiOw0KICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWxlY3RlZEJ5IitkYXRhLmlkKS5vbmNoYW5nZSgpOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAvLyByZXNldCBzZWxlY3Rpb24NCiAgICAgICAgICAgIGlmKGVsLnNlbGVjdEFjdGl2ZSA9PT0gdHJ1ZSl7DQogICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWxlY3RlZEJ5IitkYXRhLmlkKS52YWx1ZSA9ICIiOw0KICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VsZWN0ZWRCeSIrZGF0YS5pZCkub25jaGFuZ2UoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgDQogICAgICAgICAgaWYoZG9fbG9vcF9ieSl7DQogICAgICAgICAgICAgIHZhciBhbGxOb2RlcyA9IGdyYXBoLm5vZGVzLmdldCh7cmV0dXJuVHlwZToiT2JqZWN0In0pOw0KICAgICAgICAgICAgICB2YXIgYnlzZWxlY3Rpb25fdmFsdWVzID0gW107DQogICAgICAgICAgICAgIGZvciAodmFyIG5vZGVJZCBpbiBhbGxOb2Rlcykgew0KICAgICAgICAgICAgICAgIGlmKGRvX2xvb3BfYnkpew0KICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRfc2VsX3ZhbHVlID0gYWxsTm9kZXNbbm9kZUlkXVtkYXRhLm9wdGlvbnMuYnlzZWxlY3Rpb24udmFyaWFibGVdOw0KICAgICAgICAgICAgICAgICAgaWYoZGF0YS5vcHRpb25zLmJ5c2VsZWN0aW9uLm11bHRpcGxlKXsNCiAgICAgICAgICAgICAgICAgICAgY3VycmVudF9zZWxfdmFsdWUgPSBjdXJyZW50X3NlbF92YWx1ZS5zcGxpdCgiLCIpLm1hcChGdW5jdGlvbi5wcm90b3R5cGUuY2FsbCwgU3RyaW5nLnByb3RvdHlwZS50cmltKTsNCiAgICAgICAgICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3NlbF92YWx1ZSA9IFtjdXJyZW50X3NlbF92YWx1ZV07DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICBmb3IodmFyIGluZF9jIGluIGN1cnJlbnRfc2VsX3ZhbHVlKXsNCiAgICAgICAgICAgICAgICAgICAgaWYoaW5kZXhPZi5jYWxsKGJ5c2VsZWN0aW9uX3ZhbHVlcywgY3VycmVudF9zZWxfdmFsdWVbaW5kX2NdLCBmYWxzZSkgPT09IC0xKXsNCiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7DQogICAgICAgICAgICAgICAgICAgICAgb3B0aW9uMi52YWx1ZSA9IGN1cnJlbnRfc2VsX3ZhbHVlW2luZF9jXTsNCiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24yLnRleHQgPSBjdXJyZW50X3NlbF92YWx1ZVtpbmRfY107DQogICAgICAgICAgICAgICAgICAgICAgc2VsZWN0TGlzdDIuYXBwZW5kQ2hpbGQob3B0aW9uMik7DQogICAgICAgICAgICAgICAgICAgICAgYnlzZWxlY3Rpb25fdmFsdWVzLnB1c2goY3VycmVudF9zZWxfdmFsdWVbaW5kX2NdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfSANCiAgICAgICAgICB9DQogICAgICAgICAgDQogICAgICAgICAgLy8gbm9kZSBpZCBzZWxlY3Rpb24gaW5pdA0KICAgICAgICAgIGlmKGRhdGEub3B0aW9ucy5pZHNlbGVjdGlvbiAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgIHNlbGVjdExpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm9kZVNlbGVjdCIrZGF0YS5pZCkNCiAgICAgICAgICAgIHNlbGVjdExpc3Qub3B0aW9ucy5sZW5ndGggPSAwOw0KICAgICAgICAgICAgaWYoZGF0YS5vcHRpb25zLmlkc2VsZWN0aW9uLmVuYWJsZWQgPT09IHRydWUpew0KICAgICAgICAgICAgICBzZXROb2RlSWRMaXN0KHNlbGVjdExpc3QsIGRhdGEub3B0aW9ucy5pZHNlbGVjdGlvbiwgZ3JhcGgubm9kZXMpDQogICAgICAgICAgICAgIGVsLmlkc2VsZWN0aW9uID0gdHJ1ZTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgIHNlbGVjdExpc3Quc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCiAgICAgICAgICAgICAgZWwuaWRzZWxlY3Rpb24gPSBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmKGRhdGEub3B0aW9ucy5pZHNlbGVjdGlvbi51c2VMYWJlbHMgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICAgIGVsLmlkc2VsZWN0aW9uX3VzZUxhYmVscyA9IGRhdGEub3B0aW9ucy5pZHNlbGVjdGlvbi51c2VMYWJlbHMNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgDQogICAgICAgICAgaWYoZGF0YS5vcHRpb25zLmlkc2VsZWN0aW9uICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgaWYoZGF0YS5vcHRpb25zLmlkc2VsZWN0aW9uLmVuYWJsZWQgPT09IHRydWUgJiYgZGF0YS5vcHRpb25zLmlkc2VsZWN0aW9uLnNlbGVjdGVkICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm9kZVNlbGVjdCIrZGF0YS5pZCkudmFsdWUgPSBkYXRhLm9wdGlvbnMuaWRzZWxlY3Rpb24uc2VsZWN0ZWQ7DQogICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJub2RlU2VsZWN0IitkYXRhLmlkKS5vbmNoYW5nZSgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICB9Ow0KICAgICAgDQogIFNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCd2aXNTaGlueUN1c3RvbU9wdGlvbnMnLCB1cGRhdGVWaXNPcHRpb25zKTsNCiAgDQogIC8vIHVkcGF0ZSBub2RlcyBkYXRhDQogIFNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCd2aXNTaGlueVVwZGF0ZU5vZGVzJywgZnVuY3Rpb24oZGF0YSl7DQogICAgICAvLyBnZXQgY29udGFpbmVyIGlkDQogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2RhdGEuaWQpOw0KICAgICAgdmFyIG1haW5fZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkYXRhLmlkKTsNCiAgICAgIA0KICAgICAgaWYoZGF0YS5sZWdlbmQgPT09IGZhbHNlKXsNCiAgICAgICAgaWYoZWwpew0KICAgICAgICAgIC8vIGdldCAmIHRyYW5zZm9ybSBub2RlcyBvYmplY3QNCiAgICAgICAgICB2YXIgdG1wbm9kZXMgPSB2aXNOZXR3b3JrZGF0YWZyYW1lVG9EMyhkYXRhLm5vZGVzLCAibm9kZXMiKTsNCiAgICAgICAgICANCiAgICAgICAgICAvLyByZXNldCBzb21lIHBhcmFtZXRlcnMgLyBkYXRhIGJlZm9yZQ0KICAgICAgICAgIGlmIChtYWluX2VsLnNlbGVjdEFjdGl2ZSA9PT0gdHJ1ZSB8IG1haW5fZWwuaGlnaGxpZ2h0QWN0aXZlID09PSB0cnVlKSB7DQoNCiAgICAgICAgICAgIC8vcmVzZXQgbm9kZXMNCiAgICAgICAgICAgIHJlc2V0QWxsRWRnZXMoZWwuZWRnZXMsIGVsLmhpZ2hsaWdodENvbG9yLCBlbC5ieXNlbGVjdGlvbkNvbG9yLCBlbC5jaGFydCk7DQogICAgICAgICAgICByZXNldEFsbE5vZGVzKGVsLm5vZGVzLCB0cnVlLCBlbC5jaGFydC5ncm91cHMsIGVsLm9wdGlvbnMsIGVsLmNoYXJ0KTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYgKG1haW5fZWwuc2VsZWN0QWN0aXZlID09PSB0cnVlKXsNCiAgICAgICAgICAgICAgbWFpbl9lbC5zZWxlY3RBY3RpdmUgPSBmYWxzZTsNCiAgICAgICAgICAgICAgcmVzZXRMaXN0KCdzZWxlY3RlZEJ5JywgZGF0YS5pZCwgJ3NlbGVjdGVkQnknKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChtYWluX2VsLmhpZ2hsaWdodEFjdGl2ZSA9PT0gdHJ1ZSl7DQogICAgICAgICAgICAgIG1haW5fZWwuaGlnaGxpZ2h0QWN0aXZlID0gZmFsc2U7DQogICAgICAgICAgICAgIHJlc2V0TGlzdCgnbm9kZVNlbGVjdCcsIGRhdGEuaWQsICdzZWxlY3RlZCcpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgICAvLyB1cGRhdGUgbm9kZXMNCiAgICAgICAgICBlbC5ub2Rlcy51cGRhdGUodG1wbm9kZXMpOw0KICAgICAgICAgIA0KICAgICAgICAgIC8vIHVwZGF0ZSBvcHRpb25zID8NCiAgICAgICAgICBpZihkYXRhLnVwZGF0ZU9wdGlvbnMpew0KICAgICAgICAgICAgdmFyIGRhdGFPcHRpb25zID0ge307DQogICAgICAgICAgICBkYXRhT3B0aW9ucy5vcHRpb25zID0ge307DQogICAgICAgICAgDQogICAgICAgICAgICB2YXIgdXBkYXRlT3B0cyA9IGZhbHNlOw0KICAgICAgICAgICAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vZGVTZWxlY3QiK2RhdGEuaWQpLnN0eWxlLmRpc3BsYXkgPT09ICdpbmxpbmUnKXsNCiAgICAgICAgICAgICAgdXBkYXRlT3B0cyA9IHRydWU7DQogICAgICAgICAgICAgIGRhdGFPcHRpb25zLmlkICA9IGRhdGEuaWQ7DQogICAgICAgICAgICAgIGRhdGFPcHRpb25zLm9wdGlvbnMuaWRzZWxlY3Rpb24gPSB7ZW5hYmxlZCA6IHRydWUsIHVzZUxhYmVscyA6IG1haW5fZWwuaWRzZWxlY3Rpb25fdXNlTGFiZWxzfTsNCiAgICAgICAgICAgIH0NCiAgICAgIA0KICAgICAgICAgICAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlbGVjdGVkQnkiK2RhdGEuaWQpLnN0eWxlLmRpc3BsYXkgPT09ICdpbmxpbmUnKXsNCiAgICAgICAgICAgICAgdXBkYXRlT3B0cyA9IHRydWU7DQogICAgICAgICAgICAgIGRhdGFPcHRpb25zLmlkICA9IGRhdGEuaWQ7DQogICAgICAgICAgICAgIGRhdGFPcHRpb25zLm9wdGlvbnMuYnlzZWxlY3Rpb24gPSB7ZW5hYmxlZCA6IHRydWUsIHZhcmlhYmxlIDogbWFpbl9lbC5ieXNlbGVjdGlvbl92YXJpYWJsZSwgbXVsdGlwbGUgOiBtYWluX2VsLmJ5c2VsZWN0aW9uX211bHRpcGxlfTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICANCiAgICAgICAgICAgIGlmKHVwZGF0ZU9wdHMpew0KICAgICAgICAgICAgICB1cGRhdGVWaXNPcHRpb25zKGRhdGFPcHRpb25zKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0gZWxzZSBpZihkYXRhLmxlZ2VuZCA9PT0gdHJ1ZSl7DQogICAgICAgIHZhciBsZWdlbmRfbmV0d29yayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsZWdlbmQiK2RhdGEuaWQpOw0KICAgICAgICBpZihsZWdlbmRfbmV0d29yayl7DQogICAgICAgICAgLy8gZ2V0ICYgdHJhbnNmb3JtIG5vZGVzIG9iamVjdA0KICAgICAgICAgIHZhciB0bXBub2RlcyA9IHZpc05ldHdvcmtkYXRhZnJhbWVUb0QzKGRhdGEubm9kZXMsICJub2RlcyIpOw0KICAgICAgICAgIC8vIHVwZGF0ZSBub2Rlcw0KICAgICAgICAgIGxlZ2VuZF9uZXR3b3JrLm5ldHdvcmsuYm9keS5kYXRhLm5vZGVzLnVwZGF0ZSh0bXBub2Rlcyk7DQogICAgICAgICAgLy8gZml0DQogICAgICAgICAgbGVnZW5kX25ldHdvcmsubmV0d29yay5maXQoKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICB9KTsNCg0KICAvLyB1ZHBhdGUgZWRnZXMgZGF0YQ0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlVcGRhdGVFZGdlcycsIGZ1bmN0aW9uKGRhdGEpew0KICAgICAgLy8gZ2V0IGNvbnRhaW5lciBpZA0KICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYXBoIitkYXRhLmlkKTsNCiAgICAgIGlmKGRhdGEubGVnZW5kID09PSBmYWxzZSl7DQogICAgICAgIGlmKGVsKXsNCiAgICAgICAgICAvLyBnZXQgZWRnZXMgb2JqZWN0DQogICAgICAgICAgdmFyIHRtcGVkZ2VzID0gdmlzTmV0d29ya2RhdGFmcmFtZVRvRDMoZGF0YS5lZGdlcywgImVkZ2VzIik7DQogICAgICAgICAgLy8gcmVzZXQgZWRnZXMNCiAgICAgICAgICByZXNldEFsbEVkZ2VzKGVsLmVkZ2VzLCBlbC5oaWdobGlnaHRDb2xvciwgIGVsLmJ5c2VsZWN0aW9uQ29sb3IsIGVsLmNoYXJ0KQ0KICAgICAgICAgIGVsLmVkZ2VzLnVwZGF0ZSh0bXBlZGdlcyk7DQogICAgICAgIH0NCiAgICAgIH0gZWxzZSBpZihkYXRhLmxlZ2VuZCA9PT0gdHJ1ZSl7DQogICAgICAgIHZhciBsZWdlbmRfbmV0d29yayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsZWdlbmQiK2RhdGEuaWQpOw0KICAgICAgICBpZihsZWdlbmRfbmV0d29yayl7DQogICAgICAgICAgLy8gZ2V0ICYgdHJhbnNmb3JtIG5vZGVzIG9iamVjdA0KICAgICAgICAgIHZhciB0bXBlZGdlcyA9IHZpc05ldHdvcmtkYXRhZnJhbWVUb0QzKGRhdGEuZWRnZXMsICJlZGdlcyIpOw0KICAgICAgICAgIC8vIHVwZGF0ZSBlZGdlcw0KICAgICAgICAgIGxlZ2VuZF9uZXR3b3JrLm5ldHdvcmsuYm9keS5kYXRhLmVkZ2VzLnVwZGF0ZSh0bXBlZGdlcyk7DQogICAgICAgICAgLy8gZml0DQogICAgICAgICAgbGVnZW5kX25ldHdvcmsubmV0d29yay5maXQoKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIHJlbW92ZSBub2Rlcw0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlSZW1vdmVOb2RlcycsIGZ1bmN0aW9uKGRhdGEpew0KICAgICAgLy8gZ2V0IGNvbnRhaW5lciBpZA0KICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYXBoIitkYXRhLmlkKTsNCiAgICAgIHZhciBtYWluX2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGF0YS5pZCk7DQogICAgICBpZihkYXRhLmxlZ2VuZCA9PT0gZmFsc2Upew0KICAgICAgICBpZihlbCl7DQogICAgICAgICAgLy8gcmVzZXQgc29tZSBwYXJhbWV0ZXJzIC8gZGF0ZSBiZWZvcmUNCiAgICAgICAgICBpZiAobWFpbl9lbC5zZWxlY3RBY3RpdmUgPT09IHRydWUgfCBtYWluX2VsLmhpZ2hsaWdodEFjdGl2ZSA9PT0gdHJ1ZSkgew0KICAgICAgICAgICAgLy9yZXNldCBub2Rlcw0KICAgICAgICAgICAgcmVzZXRBbGxOb2RlcyhlbC5ub2RlcywgdHJ1ZSwgZWwuY2hhcnQuZ3JvdXBzLCBlbC5vcHRpb25zLCBlbC5jaGFydCk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmIChtYWluX2VsLnNlbGVjdEFjdGl2ZSA9PT0gdHJ1ZSl7DQogICAgICAgICAgICAgIG1haW5fZWwuc2VsZWN0QWN0aXZlID0gZmFsc2U7DQogICAgICAgICAgICAgIHJlc2V0TGlzdCgnc2VsZWN0ZWRCeScsIGRhdGEuaWQsICdzZWxlY3RlZEJ5Jyk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAobWFpbl9lbC5oaWdobGlnaHRBY3RpdmUgPT09IHRydWUpew0KICAgICAgICAgICAgICBtYWluX2VsLmhpZ2hsaWdodEFjdGl2ZSA9IGZhbHNlOw0KICAgICAgICAgICAgICByZXNldExpc3QoJ25vZGVTZWxlY3QnLCBkYXRhLmlkLCAnc2VsZWN0ZWQnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgLy8gcmVtb3ZlIG5vZGVzDQogICAgICAgICAgZWwubm9kZXMucmVtb3ZlKGRhdGEucm1pZCk7DQogIA0KICAgICAgICAgIC8vIHVwZGF0ZSBvcHRpb25zID8NCiAgICAgICAgICBpZihkYXRhLnVwZGF0ZU9wdGlvbnMpew0KICAgICAgICAgICAgdmFyIGRhdGFPcHRpb25zID0ge307DQogICAgICAgICAgICBkYXRhT3B0aW9ucy5vcHRpb25zID0ge307DQogICAgICAgICAgDQogICAgICAgICAgICB2YXIgdXBkYXRlT3B0cyA9IGZhbHNlOw0KICAgICAgICAgICAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vZGVTZWxlY3QiK2RhdGEuaWQpLnN0eWxlLmRpc3BsYXkgPT09ICdpbmxpbmUnKXsNCiAgICAgICAgICAgICAgdXBkYXRlT3B0cyA9IHRydWU7DQogICAgICAgICAgICAgIGRhdGFPcHRpb25zLmlkICA9IGRhdGEuaWQ7DQogICAgICAgICAgICAgIGRhdGFPcHRpb25zLm9wdGlvbnMuaWRzZWxlY3Rpb24gPSB7ZW5hYmxlZCA6IHRydWUsIHVzZUxhYmVscyA6IG1haW5fZWwuaWRzZWxlY3Rpb25fdXNlTGFiZWxzfTsNCiAgICAgICAgICAgIH0NCiAgICAgIA0KICAgICAgICAgICAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlbGVjdGVkQnkiK2RhdGEuaWQpLnN0eWxlLmRpc3BsYXkgPT09ICdpbmxpbmUnKXsNCiAgICAgICAgICAgICAgdXBkYXRlT3B0cyA9IHRydWU7DQogICAgICAgICAgICAgIGRhdGFPcHRpb25zLmlkICA9IGRhdGEuaWQ7DQogICAgICAgICAgICAgIGRhdGFPcHRpb25zLm9wdGlvbnMuYnlzZWxlY3Rpb24gPSB7ZW5hYmxlZCA6IHRydWUsIHZhcmlhYmxlIDogbWFpbl9lbC5ieXNlbGVjdGlvbl92YXJpYWJsZSwgbXVsdGlwbGUgOiBtYWluX2VsLmJ5c2VsZWN0aW9uX211bHRpcGxlfTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICANCiAgICAgICAgICAgIGlmKHVwZGF0ZU9wdHMpew0KICAgICAgICAgICAgICB1cGRhdGVWaXNPcHRpb25zKGRhdGFPcHRpb25zKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0gZWxzZSBpZihkYXRhLmxlZ2VuZCA9PT0gdHJ1ZSl7DQogICAgICAgIHZhciBsZWdlbmRfbmV0d29yayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsZWdlbmQiK2RhdGEuaWQpOw0KICAgICAgICBpZihsZWdlbmRfbmV0d29yayl7DQogICAgICAgICAgLy8gcmVtb3ZlIG5vZGVzDQogICAgICAgICAgbGVnZW5kX25ldHdvcmsubmV0d29yay5ib2R5LmRhdGEubm9kZXMucmVtb3ZlKGRhdGEucm1pZCk7DQogICAgICAgICAgLy8gZml0DQogICAgICAgICAgbGVnZW5kX25ldHdvcmsubmV0d29yay5maXQoKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIHJlbW92ZSBlZGdlcw0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlSZW1vdmVFZGdlcycsIGZ1bmN0aW9uKGRhdGEpew0KICAgICAgLy8gZ2V0IGNvbnRhaW5lciBpZA0KICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYXBoIitkYXRhLmlkKTsNCiAgICAgIGlmKGRhdGEubGVnZW5kID09PSBmYWxzZSl7DQogICAgICAgIGlmKGVsKXsNCiAgICAgICAgICAvLyByZXNldCBlZGdlcw0KICAgICAgICAgIHJlc2V0QWxsRWRnZXMoZWwuZWRnZXMsIGVsLmhpZ2hsaWdodENvbG9yLCAgZWwuYnlzZWxlY3Rpb25Db2xvciwgZWwuY2hhcnQpDQogICAgICAgICAgZWwuZWRnZXMucmVtb3ZlKGRhdGEucm1pZCk7DQogICAgICAgIH0NCiAgICAgIH0gZWxzZSBpZihkYXRhLmxlZ2VuZCA9PT0gdHJ1ZSl7DQogICAgICAgIHZhciBsZWdlbmRfbmV0d29yayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsZWdlbmQiK2RhdGEuaWQpOw0KICAgICAgICBpZihsZWdlbmRfbmV0d29yayl7DQogICAgICAgICAgLy8gcmVtb3ZlIGVkZ2VzDQogICAgICAgICAgbGVnZW5kX25ldHdvcmsubmV0d29yay5ib2R5LmRhdGEuZWRnZXMucmVtb3ZlKGRhdGEucm1pZCk7DQogICAgICAgICAgLy8gZml0DQogICAgICAgICAgbGVnZW5kX25ldHdvcmsubmV0d29yay5maXQoKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICB9KTsNCiAgDQogIC8vIHJlbW92ZSBlZGdlcw0KICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcigndmlzU2hpbnlTZXRUaXRsZScsIGZ1bmN0aW9uKGRhdGEpew0KICAgIGlmKGRhdGEubWFpbiAhPT0gbnVsbCl7DQogICAgICB2YXIgZGl2X3RpdGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRpdGxlIiArIGRhdGEuaWQpOw0KICAgICAgaWYoZGl2X3RpdGxlICE9PSBudWxsKXsNCiAgICAgICAgaWYoZGF0YS5tYWluLmhpZGRlbiA9PT0gdHJ1ZSl7DQogICAgICAgICAgZGl2X3RpdGxlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgaWYoZGF0YS5tYWluLnRleHQgIT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICBpZihkYXRhLm1haW4udGV4dCAhPT0gbnVsbCl7DQogICAgICAgICAgICAgIGlmKGRhdGEubWFpbi50ZXh0Lmxlbmd0aCA+IDApew0KICAgICAgICAgICAgICAgIGRpdl90aXRsZS5pbm5lckhUTUwgPSBkYXRhLm1haW4udGV4dDsNCiAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBkaXZfdGl0bGUuaW5uZXJIVE1MID0gIiI7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgaWYoZGF0YS5tYWluLnN0eWxlICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgaWYoZGF0YS5tYWluLnN0eWxlICE9PSBudWxsKXsNCiAgICAgICAgICAgICAgaWYoZGF0YS5tYWluLnN0eWxlLmxlbmd0aCA+IDApew0KICAgICAgICAgICAgICAgIGRpdl90aXRsZS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgIGRhdGEubWFpbi5zdHlsZSk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgZGl2X3RpdGxlLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOw0KICAgICAgICB9IA0KICAgICAgfQ0KICAgIH0NCiAgICBpZihkYXRhLnN1Ym1haW4gIT09IG51bGwpew0KICAgICAgdmFyIGRpdl9zdWJ0aXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdWJ0aXRsZSIgKyBkYXRhLmlkKTsNCiAgICAgIGlmKGRpdl9zdWJ0aXRsZSAhPT0gbnVsbCl7DQogICAgICAgIGlmKGRhdGEuc3VibWFpbi5oaWRkZW4gPT09IHRydWUpew0KICAgICAgICAgIGRpdl9zdWJ0aXRsZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIGlmKGRhdGEuc3VibWFpbi50ZXh0ICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgaWYoZGF0YS5zdWJtYWluLnRleHQgIT09IG51bGwpew0KICAgICAgICAgICAgICBpZihkYXRhLnN1Ym1haW4udGV4dC5sZW5ndGggPiAwKXsNCiAgICAgICAgICAgICAgICBkaXZfc3VidGl0bGUuaW5uZXJIVE1MID0gZGF0YS5zdWJtYWluLnRleHQ7DQogICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgZGl2X3N1YnRpdGxlLmlubmVySFRNTCA9ICIiOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmKGRhdGEuc3VibWFpbi5zdHlsZSAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgIGlmKGRhdGEuc3VibWFpbi5zdHlsZSAhPT0gbnVsbCl7DQogICAgICAgICAgICAgIGlmKGRhdGEuc3VibWFpbi5zdHlsZS5sZW5ndGggPiAwKXsNCiAgICAgICAgICAgICAgICBkaXZfc3VidGl0bGUuc2V0QXR0cmlidXRlKCdzdHlsZScsICBkYXRhLnN1Ym1haW4uc3R5bGUpOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICAgIGRpdl9zdWJ0aXRsZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgICBpZihkYXRhLmZvb3RlciAhPT0gbnVsbCl7DQogICAgICB2YXIgZGl2X2Zvb3RlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb290ZXIiICsgZGF0YS5pZCk7DQogICAgICBpZihkaXZfZm9vdGVyICE9PSBudWxsKXsNCiAgICAgICAgaWYoZGF0YS5mb290ZXIuaGlkZGVuID09PSB0cnVlKXsNCiAgICAgICAgICBkaXZfZm9vdGVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgaWYoZGF0YS5mb290ZXIudGV4dCAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgIGlmKGRhdGEuZm9vdGVyLnRleHQgIT09IG51bGwpew0KICAgICAgICAgICAgICBpZihkYXRhLmZvb3Rlci50ZXh0Lmxlbmd0aCA+IDApew0KICAgICAgICAgICAgICAgIGRpdl9mb290ZXIuaW5uZXJIVE1MID0gZGF0YS5mb290ZXIudGV4dDsNCiAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBkaXZfZm9vdGVyLmlubmVySFRNTCA9ICIiOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmKGRhdGEuZm9vdGVyLnN0eWxlICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgaWYoZGF0YS5mb290ZXIuc3R5bGUgIT09IG51bGwpew0KICAgICAgICAgICAgICBpZihkYXRhLmZvb3Rlci5zdHlsZS5sZW5ndGggPiAwKXsNCiAgICAgICAgICAgICAgICBkaXZfZm9vdGVyLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAgZGF0YS5mb290ZXIuc3R5bGUpOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICAgIGRpdl9mb290ZXIuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7DQogICAgICAgIH0gDQogICAgICB9DQogICAgfQ0KICB9KTsNCg0KICAvLyB1cGRhdGVUcmVlDQogIFNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCd2aXNTaGlueVVwZGF0ZVRyZWUnLCBmdW5jdGlvbihkYXRhKXsNCiAgICAgIC8vIGdldCBjb250YWluZXIgaWQNCiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRhdGEuaWQpOw0KICAgICAgaWYoZWwpew0KICAgICAgaWYoZWwudHJlZSl7DQogICAgICAgICAgaWYoZGF0YS50cmVlLnVwZGF0ZVNoYXBlICE9IHVuZGVmaW5lZCl7DQogICAgICAgICAgICBlbC50cmVlLnVwZGF0ZVNoYXBlID0gZGF0YS50cmVlLnVwZGF0ZVNoYXBlDQogICAgICAgICAgfQ0KICAgICAgICAgIGlmKGRhdGEudHJlZS5zaGFwZVZhciAhPSB1bmRlZmluZWQpew0KICAgICAgICAgICAgZWwudHJlZS5zaGFwZVZhciA9IGRhdGEudHJlZS5zaGFwZVZhcg0KICAgICAgICAgIH0NCiAgICAgICAgICBpZihkYXRhLnRyZWUuc2hhcGVZICE9IHVuZGVmaW5lZCl7DQogICAgICAgICAgICBlbC50cmVlLnNoYXBlWSA9IGRhdGEudHJlZS5zaGFwZVkNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0NCiAgfSk7DQp9DQoNCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gSFRNTFdpZGdldHMud2lkZ2V0IERlZmluaXRpb24NCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIA0KSFRNTFdpZGdldHMud2lkZ2V0KHsNCiAgDQogIG5hbWU6ICd2aXNOZXR3b3JrJywNCiAgDQogIHR5cGU6ICdvdXRwdXQnLA0KICANCiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsNCiAgICByZXR1cm4gew0KICAgIH07DQogIH0sDQogIA0KICByZW5kZXJWYWx1ZTogZnVuY3Rpb24oZWwsIHgsIGluc3RhbmNlKSB7DQogICAgdmFyIGRhdGE7DQogICAgdmFyIG5vZGVzOw0KICAgIHZhciBlZGdlczsNCg0KDQogICAgLy8gY2x1c3RlcmdpbiBieSB6b29tIHZhcmlhYmxlcw0KICAgIHZhciBjbHVzdGVySW5kZXggPSAwOw0KICAgIHZhciBjbHVzdGVycyA9IFtdOw0KICAgIHZhciBsYXN0Q2x1c3Rlclpvb21MZXZlbCA9IDA7DQogICAgdmFyIGNsdXN0ZXJGYWN0b3I7DQogICAgdmFyIGN0cmx3YWl0ID0gMDsNCiAgICANCiAgICAvLyBsZWdlbmQgY29udHJvbA0KICAgIHZhciBhZGRsZWdlbmQgPSBmYWxzZTsNCg0KICAgIC8vIG1haW4gZGl2IGVsLmlkDQogICAgdmFyIGVsX2lkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWwuaWQpOw0KICAgIA0KICAgIC8vIHRlc3QgYmFja2dyb3VuZA0KICAgIGVsX2lkLnN0eWxlLmJhY2tncm91bmQgPSB4LmJhY2tncm91bmQ7DQogICAgDQogICAgLy8gY2xlYXIgZWwuaWQgKGZvciBzaGlueS4uLikNCiAgICBlbF9pZC5pbm5lckhUTUwgPSAiIjsgIA0KICAgIA0KICAgIC8vIHNoYXJlZCBjb250cm9sIHdpdGggcHJveHkgZnVuY3Rpb24gKGlzIHRoZXJlIGEgYmV0dGVyIHdheSA/KQ0KICAgIGVsX2lkLmhpZ2hsaWdodEFjdGl2ZSA9IGZhbHNlOw0KICAgIGVsX2lkLnNlbGVjdEFjdGl2ZSA9IGZhbHNlOw0KICAgIGVsX2lkLmlkc2VsZWN0aW9uID0geC5pZHNlbGVjdGlvbi5lbmFibGVkOw0KICAgIGVsX2lkLmJ5c2VsZWN0aW9uID0geC5ieXNlbGVjdGlvbi5lbmFibGVkOw0KICAgIA0KICAgIGlmKHguaGlnaGxpZ2h0ICE9PSB1bmRlZmluZWQpew0KICAgICAgZWxfaWQuaGlnaGxpZ2h0ID0geC5oaWdobGlnaHQuZW5hYmxlZDsNCiAgICAgIGVsX2lkLmhpZ2hsaWdodENvbG9yID0geC5oaWdobGlnaHQuaGlkZUNvbG9yOw0KICAgICAgZWxfaWQuaG92ZXJOZWFyZXN0ID0geC5oaWdobGlnaHQuaG92ZXJOZWFyZXN0Ow0KICAgICAgZWxfaWQuZGVncmVlID0geC5oaWdobGlnaHQuZGVncmVlOw0KICAgICAgZWxfaWQuaGlnaGxpZ2h0QWxnb3JpdGhtID0geC5oaWdobGlnaHQuYWxnb3JpdGhtOw0KICAgICAgZWxfaWQuaGlnaGxpZ2h0TGFiZWxPbmx5ID0geC5oaWdobGlnaHQubGFiZWxPbmx5Ow0KICAgIH0gZWxzZSB7DQogICAgICBlbF9pZC5oaWdobGlnaHQgPSBmYWxzZTsNCiAgICAgIGVsX2lkLmhvdmVyTmVhcmVzdCA9IGZhbHNlOw0KICAgICAgZWxfaWQuaGlnaGxpZ2h0Q29sb3IgPSAncmdiYSgyMDAsMjAwLDIwMCwwLjUpJzsNCiAgICAgIGVsX2lkLmRlZ3JlZSA9IDE7DQogICAgICBlbF9pZC5oaWdobGlnaHRBbGdvcml0aG0gPSAiYWxsIjsNCiAgICAgIGVsX2lkLmhpZ2hsaWdodExhYmVsT25seSA9IHRydWU7DQogICAgfQ0KDQogICAgaWYoeC5ieXNlbGVjdGlvbi5lbmFibGVkKXsNCiAgICAgIGVsX2lkLmJ5c2VsZWN0aW9uQ29sb3IgPSB4LmJ5c2VsZWN0aW9uLmhpZGVDb2xvcjsNCiAgICAgIGVsX2lkLmJ5c2VsZWN0aW9uSGlnaGxpZ2h0ID0geC5ieXNlbGVjdGlvbi5oaWdobGlnaHQ7DQogICAgfSBlbHNlIHsNCiAgICAgIGVsX2lkLmJ5c2VsZWN0aW9uQ29sb3IgPSAncmdiYSgyMDAsMjAwLDIwMCwwLjUpJzsNCiAgICAgIGVsX2lkLmJ5c2VsZWN0aW9uSGlnaGxpZ2h0ID0gZmFsc2U7DQogICAgfQ0KICAgIA0KICAgIGlmKHguaWRzZWxlY3Rpb24uZW5hYmxlZCl7DQogICAgICBlbF9pZC5pZHNlbGVjdGlvbl91c2VMYWJlbHMgPSB0cnVlOw0KICAgIH0gZWxzZSB7DQogICAgICBlbF9pZC5pZHNlbGVjdGlvbl91c2VMYWJlbHMgPSBmYWxzZTsNCiAgICB9DQogICAgDQogICAgaWYoeC5jb2xsYXBzZSAhPT0gdW5kZWZpbmVkKXsNCiAgICAgIGlmKHguY29sbGFwc2UuZW5hYmxlZCl7DQogICAgICAgIGVsX2lkLmNvbGxhcHNlID0gdHJ1ZTsNCiAgICAgICAgZWxfaWQuY29sbGFwc2VGaXQgPSB4LmNvbGxhcHNlLmZpdDsNCiAgICAgICAgZWxfaWQuY29sbGFwc2VSZXNldEhpZ2hsaWdodCA9IHguY29sbGFwc2UucmVzZXRIaWdobGlnaHQ7DQogICAgICAgIGVsX2lkLmNvbGxhcHNlS2VlcENvb3JkID0geC5jb2xsYXBzZS5rZWVwQ29vcmQ7DQogICAgICAgIGVsX2lkLmNvbGxhcHNlTGFiZWxTdWZmaXggPSB4LmNvbGxhcHNlLmxhYmVsU3VmZml4Ow0KICAgICAgICBlbF9pZC5jbHVzdGVyT3B0aW9ucyA9IHguY29sbGFwc2UuY2x1c3Rlck9wdGlvbnM7DQogICAgICB9DQogICAgfSBlbHNlIHsNCiAgICAgIGVsX2lkLmNvbGxhcHNlID0gZmFsc2U7DQogICAgICBlbF9pZC5jb2xsYXBzZUZpdCA9IGZhbHNlOw0KICAgICAgZWxfaWQuY29sbGFwc2VSZXNldEhpZ2hsaWdodCA9IGZhbHNlOw0KICAgICAgZWxfaWQuY29sbGFwc2VLZWVwQ29vcmQgPSB0cnVlOw0KICAgICAgZWxfaWQuY29sbGFwc2VMYWJlbFN1ZmZpeCA9ICIgKGNsdXN0ZXIpIjsNCiAgICAgIGVsX2lkLmNsdXN0ZXJPcHRpb25zID0gdW5kZWZpbmVkOw0KICAgIH0NCiAgICANCiAgICBpZih4LnRyZWUgIT09IHVuZGVmaW5lZCl7DQogICAgICBlbF9pZC50cmVlID0geC50cmVlOw0KICAgIH0NCg0KICAgIC8vIGNvbmZpZ3VyZQ0KICAgIGlmKHgub3B0aW9ucy5jb25maWd1cmUgIT09IHVuZGVmaW5lZCl7DQogICAgICBpZih4Lm9wdGlvbnMuY29uZmlndXJlLmNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgdmFyIGRvbV9jb25mID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoeC5vcHRpb25zLmNvbmZpZ3VyZS5jb250YWluZXIpOw0KICAgICAgICBpZihkb21fY29uZiAhPT0gbnVsbCl7DQogICAgICAgICAgeC5vcHRpb25zLmNvbmZpZ3VyZS5jb250YWluZXIgPSBkb21fY29uZjsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB4Lm9wdGlvbnMuY29uZmlndXJlLmNvbnRhaW5lciA9IHVuZGVmaW5lZDsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICB2YXIgY2hhbmdlSW5wdXQgPSBmdW5jdGlvbihpZCwgZGF0YSkgew0KICAgICAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZShlbC5pZCArICdfJyArIGlkLCBkYXRhKTsNCiAgICB9Ow0KICAgICAgICAgIA0KICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIC8vdGl0bGUNCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICB2YXIgZGl2X3RpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQogICAgZGl2X3RpdGxlLmlkID0gInRpdGxlIitlbC5pZDsNCiAgICBkaXZfdGl0bGUuc2V0QXR0cmlidXRlKCdzdHlsZScsJ2ZvbnQtZmFtaWx5Okdlb3JnaWEsIFRpbWVzIE5ldyBSb21hbiwgVGltZXMsIHNlcmlmO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjIwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Jyk7DQogICAgZGl2X3RpdGxlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAgZWxfaWQuYXBwZW5kQ2hpbGQoZGl2X3RpdGxlKTsgIA0KICAgIGlmKHgubWFpbiAhPT0gbnVsbCl7DQogICAgICBkaXZfdGl0bGUuaW5uZXJIVE1MID0geC5tYWluLnRleHQ7DQogICAgICBkaXZfdGl0bGUuc2V0QXR0cmlidXRlKCdzdHlsZScsICB4Lm1haW4uc3R5bGUgKyAiO2JhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7Iik7DQogICAgICBkaXZfdGl0bGUuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7DQogICAgfQ0KICAgIA0KICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIC8vc3VidGl0bGUNCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICB2YXIgZGl2X3N1YnRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQogICAgZGl2X3N1YnRpdGxlLmlkID0gInN1YnRpdGxlIitlbC5pZDsNCiAgICBkaXZfc3VidGl0bGUuc2V0QXR0cmlidXRlKCdzdHlsZScsICAnZm9udC1mYW1pbHk6R2VvcmdpYSwgVGltZXMgTmV3IFJvbWFuLCBUaW1lcywgc2VyaWY7Zm9udC1zaXplOjEycHg7dGV4dC1hbGlnbjpjZW50ZXI7Jyk7DQogICAgZGl2X3N1YnRpdGxlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAgZWxfaWQuYXBwZW5kQ2hpbGQoZGl2X3N1YnRpdGxlKTsgDQogICAgaWYoeC5zdWJtYWluICE9PSBudWxsKXsNCiAgICAgIGRpdl9zdWJ0aXRsZS5pbm5lckhUTUwgPSB4LnN1Ym1haW4udGV4dDsNCiAgICAgIGRpdl9zdWJ0aXRsZS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgIHguc3VibWFpbi5zdHlsZSArICI7YmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsiKTsNCiAgICAgIGRpdl90aXRsZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsNCiAgICB9DQogDQogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgLy9pbml0IGlkc2VsZWN0aW9uDQogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgZnVuY3Rpb24gb25JZENoYW5nZShpZCwgaW5pdCkgew0KICAgICAgaWYoaWQgPT09ICIiKXsNCiAgICAgICAgaW5zdGFuY2UubmV0d29yay5zZWxlY3ROb2RlcyhbXSk7DQogICAgICB9ZWxzZXsNCiAgICAgICAgaW5zdGFuY2UubmV0d29yay5zZWxlY3ROb2RlcyhbaWRdKTsNCiAgICAgIH0NCiAgICAgIGlmKGVsX2lkLmhpZ2hsaWdodCl7DQogICAgICAgIG5laWdoYm91cmhvb2RIaWdobGlnaHQoaW5zdGFuY2UubmV0d29yay5nZXRTZWxlY3Rpb24oKS5ub2RlcywgImNsaWNrIiwgZWxfaWQuaGlnaGxpZ2h0QWxnb3JpdGhtLCB0cnVlKTsNCiAgICAgIH1lbHNlew0KICAgICAgICBpZihpbml0KXsNCiAgICAgICAgICBzZWxlY3ROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25vZGVTZWxlY3QnK2VsLmlkKTsNCiAgICAgICAgICBpZih4Lmlkc2VsZWN0aW9uLnZhbHVlcyAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgIGlmKGluZGV4T2YuY2FsbCh4Lmlkc2VsZWN0aW9uLnZhbHVlcywgaWQsIHRydWUpID4gLTEpew0KICAgICAgICAgICAgICBzZWxlY3ROb2RlLnZhbHVlID0gaWQ7DQogICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgc2VsZWN0Tm9kZS52YWx1ZSA9ICIiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgc2VsZWN0Tm9kZS52YWx1ZSA9IGlkOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgaWYgKHdpbmRvdy5TaGlueSl7DQogICAgICAgIGNoYW5nZUlucHV0KCdzZWxlY3RlZCcsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJub2RlU2VsZWN0IitlbC5pZCkudmFsdWUpOw0KICAgICAgfQ0KICAgICAgaWYoZWxfaWQuYnlzZWxlY3Rpb24pew0KICAgICAgICByZXNldExpc3QoJ3NlbGVjdGVkQnknLCBlbC5pZCwgJ3NlbGVjdGVkQnknKTsNCiAgICAgIH0NCiAgICB9DQogICAgICANCiAgICAvLyBpZCBub2RlcyBzZWxlY3Rpb24gOiBhZGQgYSBsaXN0IG9uIHRvcCBsZWZ0DQogICAgLy8gYWN0dWFsbHkgb25seSB3aXRoIG5vZGVzICsgZWRnZXMgZGF0YSAobm90IGRvdCBhbmQgZ2VwaGkpDQogICAgdmFyIGlkTGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOw0KICAgIGlkTGlzdC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ2Ryb3Bkb3duJyk7DQogICAgaWRMaXN0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAgaWRMaXN0LmlkID0gIm5vZGVTZWxlY3QiK2VsLmlkOw0KICAgIGVsX2lkLmFwcGVuZENoaWxkKGlkTGlzdCk7DQogICAgICANCiAgICBpZExpc3Qub25jaGFuZ2UgPSAgZnVuY3Rpb24oKXsNCiAgICAgIGlmKGluc3RhbmNlLm5ldHdvcmspew0KICAgICAgICBvbklkQ2hhbmdlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJub2RlU2VsZWN0IitlbC5pZCkudmFsdWUsIGZhbHNlKTsNCiAgICAgIH0NCiAgICB9Ow0KICAgICAgDQogICAgdmFyIGhyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaHIiKTsNCiAgICBoci5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2hlaWdodDowcHg7IHZpc2liaWxpdHk6aGlkZGVuOyBtYXJnaW4tYm90dG9tOi0xcHg7Jyk7DQogICAgZWxfaWQuYXBwZW5kQ2hpbGQoaHIpOyAgDQogICAgICANCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICAvL3NlbGVjdGVkQnkNCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICBmdW5jdGlvbiBvbkJ5Q2hhbmdlKHZhbHVlKSB7DQogICAgICAgIGlmKGluc3RhbmNlLm5ldHdvcmspew0KICAgICAgICAgIHNlbGVjdGVkSGlnaGxpZ2h0KHZhbHVlKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAod2luZG93LlNoaW55KXsNCiAgICAgICAgICBjaGFuZ2VJbnB1dCgnc2VsZWN0ZWRCeScsIHZhbHVlKTsNCiAgICAgICAgfQ0KICAgICAgICBpZihlbF9pZC5pZHNlbGVjdGlvbil7DQogICAgICAgICAgcmVzZXRMaXN0KCdub2RlU2VsZWN0JywgZWwuaWQsICdzZWxlY3RlZCcpOw0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAgIC8vIHNlbGVjdGVkQnkgOiBhZGQgYSBsaXN0IG9uIHRvcCBsZWZ0DQogICAgLy8gYWN0dWFsbHkgb25seSB3aXRoIG5vZGVzICsgZWRnZXMgZGF0YSAobm90IGRvdCBhbmQgZ2VwaGkpDQogICAgLy9DcmVhdGUgYW5kIGFwcGVuZCBzZWxlY3QgbGlzdA0KICAgIHZhciBieUxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKTsNCiAgICBieUxpc3Quc2V0QXR0cmlidXRlKCdjbGFzcycsICdkcm9wZG93bicpOw0KICAgIGJ5TGlzdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KICAgIGJ5TGlzdC5pZCA9ICJzZWxlY3RlZEJ5IitlbC5pZDsNCiAgICBlbF9pZC5hcHBlbmRDaGlsZChieUxpc3QpOw0KDQogICAgYnlMaXN0Lm9uY2hhbmdlID0gIGZ1bmN0aW9uKCl7DQogICAgICBvbkJ5Q2hhbmdlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWxlY3RlZEJ5IitlbC5pZCkudmFsdWUpOw0KICAgIH07DQogICAgICANCiAgICBpZihlbF9pZC5ieXNlbGVjdGlvbil7DQoNCiAgICAgIGVsX2lkLmJ5c2VsZWN0aW9uX3ZhbHVlcyA9IHguYnlzZWxlY3Rpb24udmFsdWVzOw0KICAgICAgZWxfaWQuYnlzZWxlY3Rpb25fdmFyaWFibGUgPSB4LmJ5c2VsZWN0aW9uLnZhcmlhYmxlOw0KICAgICAgZWxfaWQuYnlzZWxlY3Rpb25fbXVsdGlwbGUgPSB4LmJ5c2VsZWN0aW9uLm11bHRpcGxlOw0KICAgICAgdmFyIG9wdGlvbjI7DQogICAgICANCiAgICAgIC8vQ3JlYXRlIGFuZCBhcHBlbmQgc2VsZWN0IGxpc3QNCiAgICAgIHZhciBzZWxlY3RMaXN0MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWxlY3RlZEJ5IitlbC5pZCk7DQogICAgICBzZWxlY3RMaXN0Mi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgeC5ieXNlbGVjdGlvbi5zdHlsZSk7DQogICAgICBzZWxlY3RMaXN0Mi5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7DQogICAgICANCiAgICAgIG9wdGlvbjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsNCiAgICAgIG9wdGlvbjIudmFsdWUgPSAiIjsNCiAgICAgIGlmKHguYnlzZWxlY3Rpb24ubWFpbiA9PT0gdW5kZWZpbmVkKXsNCiAgICAgICAgb3B0aW9uMi50ZXh0ID0gIlNlbGVjdCBieSAiICsgeC5ieXNlbGVjdGlvbi52YXJpYWJsZTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIG9wdGlvbjIudGV4dCA9IHguYnlzZWxlY3Rpb24ubWFpbjsNCiAgICAgIH0NCg0KICAgICAgc2VsZWN0TGlzdDIuYXBwZW5kQ2hpbGQob3B0aW9uMik7DQogICAgICANCiAgICAgIC8vQ3JlYXRlIGFuZCBhcHBlbmQgdGhlIG9wdGlvbnMNCiAgICAgIGZvciAodmFyIGkyID0gMDsgaTIgPCB4LmJ5c2VsZWN0aW9uLnZhbHVlcy5sZW5ndGg7IGkyKyspIHsNCiAgICAgICAgb3B0aW9uMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOw0KICAgICAgICBvcHRpb24yLnZhbHVlID0geC5ieXNlbGVjdGlvbi52YWx1ZXNbaTJdOw0KICAgICAgICBvcHRpb24yLnRleHQgPSB4LmJ5c2VsZWN0aW9uLnZhbHVlc1tpMl07DQogICAgICAgIHNlbGVjdExpc3QyLmFwcGVuZENoaWxkKG9wdGlvbjIpOw0KICAgICAgfQ0KICAgICAgDQogICAgICBpZiAod2luZG93LlNoaW55KXsNCiAgICAgICAgY2hhbmdlSW5wdXQoJ3NlbGVjdGVkQnknLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VsZWN0ZWRCeSIrZWwuaWQpLnZhbHVlKTsNCiAgICAgIH0NCiAgICB9DQogICAgDQogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgLy8gcHJlLXRyZWF0bWVudCBmb3IgaWNvbnMgKHVuaWNvZGUpDQogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgaWYoeC5vcHRpb25zLmdyb3Vwcyl7DQogICAgICBmb3IgKHZhciBnciBpbiB4Lm9wdGlvbnMuZ3JvdXBzKXsNCiAgICAgICAgaWYoeC5vcHRpb25zLmdyb3Vwc1tncl0uaWNvbil7DQogICAgICAgICAgaWYoeC5vcHRpb25zLmdyb3Vwc1tncl0uaWNvbi5jb2RlKXsNCiAgICAgICAgICAgIHgub3B0aW9ucy5ncm91cHNbZ3JdLmljb24uY29kZSA9IEpTT04ucGFyc2UoICciJysnXFx1JyArIHgub3B0aW9ucy5ncm91cHNbZ3JdLmljb24uY29kZSArICciJyk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmKHgub3B0aW9ucy5ncm91cHNbZ3JdLmljb24uY29sb3Ipew0KICAgICAgICAgICAgeC5vcHRpb25zLmdyb3Vwc1tncl0uY29sb3IgPSB4Lm9wdGlvbnMuZ3JvdXBzW2dyXS5pY29uLmNvbG9yOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBpZih4Lm9wdGlvbnMubm9kZXMuaWNvbil7DQogICAgICAgIGlmKHgub3B0aW9ucy5ub2Rlcy5pY29uLmNvZGUpew0KICAgICAgICAgIHgub3B0aW9ucy5ub2Rlcy5pY29uLmNvZGUgPSBKU09OLnBhcnNlKCAnIicrJ1xcdScgKyB4Lm9wdGlvbnMubm9kZXMuaWNvbi5jb2RlICsgJyInKTsNCiAgICAgICAgfQ0KICAgICAgICBpZih4Lm9wdGlvbnMubm9kZXMuaWNvbi5jb2xvcil7DQogICAgICAgICAgeC5vcHRpb25zLm5vZGVzLmNvbG9yID0geC5vcHRpb25zLm5vZGVzLmljb24uY29sb3I7DQogICAgICAgIH0NCiAgICB9DQogICAgDQogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgLy9wYWdlIHN0cnVjdHVyZQ0KICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIA0KICAgIC8vIGRpdmlkZSBwYWdlDQogICAgdmFyIG1haW5kaXYgID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQogICAgbWFpbmRpdi5pZCA9ICJtYWluZGl2IitlbC5pZDsNCiAgICBtYWluZGl2LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnaGVpZ2h0Ojk1JTtiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OycpOw0KICAgIGVsX2lkLmFwcGVuZENoaWxkKG1haW5kaXYpOw0KICAgIA0KICAgIHZhciBncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KICAgIGdyYXBoLmlkID0gImdyYXBoIitlbC5pZDsNCiAgICANCiAgICBpZih4LmxlZ2VuZCAhPT0gdW5kZWZpbmVkKXsNCiAgICAgIGlmKCh4Lmdyb3VwcyAmJiB4LmxlZ2VuZC51c2VHcm91cHMpIHx8ICh4LmxlZ2VuZC5ub2RlcyAhPT0gdW5kZWZpbmVkKSB8fCAoeC5sZWdlbmQuZWRnZXMgIT09IHVuZGVmaW5lZCkpew0KICAgICAgICBhZGRsZWdlbmQgPSB0cnVlOw0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICAvL2xlZ2VuZA0KICAgIGlmKGFkZGxlZ2VuZCl7DQogICAgICB2YXIgbGVnZW5kd2lkdGggPSB4LmxlZ2VuZC53aWR0aCoxMDA7DQogICAgICB2YXIgbGVnZW5kID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQogICAgICANCiAgICAgIHZhciBwb3MgPSB4LmxlZ2VuZC5wb3NpdGlvbjsNCiAgICAgIHZhciBwb3MyID0gInJpZ2h0IjsNCiAgICAgIGlmKHBvcyA9PSAicmlnaHQiKXsNCiAgICAgICAgcG9zMiA9ICJsZWZ0IjsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgbGVnZW5kLmlkID0gImxlZ2VuZCIrZWwuaWQ7DQogICAgICBsZWdlbmQuc2V0QXR0cmlidXRlKCdzdHlsZScsICdmbG9hdDonICsgcG9zICsgJzsgd2lkdGg6JytsZWdlbmR3aWR0aCsnJTtoZWlnaHQ6MTAwJScpOw0KICAgICAgDQogICAgICAvL2xlZ2VuZCB0aXRsZQ0KICAgICAgaWYoeC5sZWdlbmQubWFpbiAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgdmFyIGxlZ2VuZF90aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KICAgICAgICBsZWdlbmRfdGl0bGUuaW5uZXJIVE1MID0geC5sZWdlbmQubWFpbi50ZXh0Ow0KICAgICAgICBsZWdlbmRfdGl0bGUuc2V0QXR0cmlidXRlKCdzdHlsZScsICB4LmxlZ2VuZC5tYWluLnN0eWxlKTsNCiAgICAgICAgbGVnZW5kLmFwcGVuZENoaWxkKGxlZ2VuZF90aXRsZSk7ICANCiAgICAgICAgDQogICAgICAgIGxlZ2VuZC5pZCA9ICJsZWdlbmRfbWFpbiIrZWwuaWQ7DQogICAgICAgIHZhciBsZWdlbmRfbmV0d29yayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KICAgICAgICBsZWdlbmRfbmV0d29yay5pZCA9ICJsZWdlbmQiK2VsLmlkOw0KICAgICAgICBsZWdlbmRfbmV0d29yay5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2hlaWdodDoxMDAlJyk7DQogICAgICAgIGxlZ2VuZC5hcHBlbmRDaGlsZChsZWdlbmRfbmV0d29yayk7IA0KICAgICAgfQ0KICAgICAgDQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpbmRpdiIrZWwuaWQpLmFwcGVuZENoaWxkKGxlZ2VuZCk7DQogICAgICBncmFwaC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Zsb2F0OicgKyBwb3MyICsgJzsgd2lkdGg6JysoMTAwLWxlZ2VuZHdpZHRoKSsnJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OycpOw0KICAgIH1lbHNlew0KICAgICAgZ3JhcGguc2V0QXR0cmlidXRlKCdzdHlsZScsICdmbG9hdDpyaWdodDsgd2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OycpOw0KICAgIH0NCiAgICANCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpbmRpdiIrZWwuaWQpLmFwcGVuZENoaWxkKGdyYXBoKTsNCiAgICANCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICAvL2xlZ2VuZCBkZWZpbml0aW9uDQogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgaWYoYWRkbGVnZW5kKXsNCiAgICAgIA0KICAgICAgdmFyIGxlZ2VuZG5vZGVzID0gbmV3IHZpcy5EYXRhU2V0KCk7DQogICAgICB2YXIgbGVnZW5kZWRnZXMgPSBudWxsOw0KICAgICAgdmFyIGRhdGFsZWdlbmQ7DQogICAgICB2YXIgdG1wbm9kZXM7DQogICAgICANCiAgICAgIC8vIHNldCBzb21lIG9wdGlvbnMNCiAgICAgIHZhciBvcHRpb25zbGVnZW5kID0gew0KICAgICAgICBpbnRlcmFjdGlvbjp7DQogICAgICAgICAgZHJhZ05vZGVzOiBmYWxzZSwNCiAgICAgICAgICBkcmFnVmlldzogZmFsc2UsDQogICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsDQogICAgICAgICAgem9vbVZpZXc6IHgubGVnZW5kLnpvb20NCiAgICAgICAgfSwNCiAgICAgICAgcGh5c2ljczp7DQogICAgICAgICAgc3RhYmlsaXphdGlvbjogZmFsc2UNCiAgICAgICAgfQ0KICAgICAgfTsNCiAgICAgIA0KICAgICAgZnVuY3Rpb24gcmFuZ2Uoc3RhcnQsIGxlbmd0aCwgc3RlcCwgcmVwKXsNCiAgICAgICAgdmFyIGE9W10sIGI9c3RhcnQ7DQogICAgICAgIHdoaWxlKGEubGVuZ3RoIDwgbGVuZ3RoKXsNCiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcDsgaSsrKXsNCiAgICAgICAgICAgIGEucHVzaChiKTsNCiAgICAgICAgICAgIGlmKGEubGVuZ3RoID09PSBsZW5ndGgpew0KICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgYis9c3RlcDsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gYTsNCiAgICAgIH07DQogICAgICANCiAgICAgIHZhciBteW5ldHdvcmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGVnZW5kJytlbC5pZCk7DQogICAgICB2YXIgbHggPSBteW5ldHdvcmsuY2xpZW50V2lkdGggLyAyICsgNTA7DQogICAgICB2YXIgbHkgPSBteW5ldHdvcmsuY2xpZW50SGVpZ2h0IC8gMiArIDUwOw0KICAgICAgdmFyIGVkZ2VfbHkgPSBseTsNCiAgICAgIHZhciBuY29sID0geC5sZWdlbmQubmNvbDsNCiAgICAgIHZhciBzdGVwX3ggPSB4LmxlZ2VuZC5zdGVwWDsNCiAgICAgIHZhciBzdGVwX3kgPSB4LmxlZ2VuZC5zdGVwWTsNCiAgICAgIHZhciB0bXBfbHk7DQogICAgICB2YXIgdG1wX2x4ID0gbHg7DQogICAgICB2YXIgdG1wX2x4MjsNCiAgICAgIHZhciBhbGxfdG1wX3kgPSBbXTsNCiAgICAgIGlmKHRtcF9seCA9PT0gMCl7DQogICAgICAgIHRtcF9seCA9IDENCiAgICAgIH0NCiAgICAgIA0KICAgICAgLy8gY29uc3RydWN0IG5vZGVzIGRhdGEgaWYgbmVlZGVkDQogICAgICBpZih4LmxlZ2VuZC5ub2RlcyAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgaWYoeC5sZWdlbmQubm9kZXNUb0RhdGFmcmFtZSl7IC8vIGRhdGEgaW4gZGF0YS5mcmFtZQ0KICAgICAgICAgIHRtcG5vZGVzID0gdmlzTmV0d29ya2RhdGFmcmFtZVRvRDMoeC5sZWdlbmQubm9kZXMsICJub2RlcyIpDQogICAgICAgIH0gZWxzZSB7IC8vIGRhdGEgaW4gbGlzdA0KICAgICAgICAgIHRtcG5vZGVzID0geC5sZWdlbmQubm9kZXM7DQogICAgICAgIH0NCiAgICAgICAgLy8gb25seSBvbmUgZWxlbWVudCAgIA0KICAgICAgICBpZih0bXBub2Rlcy5sZW5ndGggPT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgdG1wbm9kZXMgPSBuZXcgQXJyYXkodG1wbm9kZXMpOw0KICAgICAgICB9DQogICAgICB9DQogICAgICANCiAgICAgIC8vIGFycmF5IG9mIHkgcG9zaXRpb24gDQogICAgICBpZih4Lmdyb3VwcyAmJiB4LmxlZ2VuZC51c2VHcm91cHMgJiYgeC5sZWdlbmQubm9kZXMgIT09IHVuZGVmaW5lZCl7DQogICAgICAgIGFsbF90bXBfeSA9IHJhbmdlKGx5LCB4Lmdyb3Vwcy5sZW5ndGggKyB0bXBub2Rlcy5sZW5ndGgsIHN0ZXBfeSwgbmNvbCk7DQogICAgICB9IGVsc2UgaWYoeC5ncm91cHMgJiYgeC5sZWdlbmQudXNlR3JvdXBzICYmIHgubGVnZW5kLm5vZGVzID09PSB1bmRlZmluZWQpew0KICAgICAgICBhbGxfdG1wX3kgPSByYW5nZShseSwgeC5ncm91cHMubGVuZ3RoLCBzdGVwX3ksIG5jb2wpOw0KICAgICAgfSBlbHNlIGlmKHgubGVnZW5kLnVzZUdyb3VwcyA9PT0gZmFsc2UgJiYgeC5sZWdlbmQubm9kZXMgIT09IHVuZGVmaW5lZCl7DQogICAgICAgIGFsbF90bXBfeSA9IHJhbmdlKGx5LCB0bXBub2Rlcy5sZW5ndGgsIHN0ZXBfeSwgbmNvbCk7DQogICAgICB9DQogICAgICANCiAgICAgIC8vIHdhbnQgdG8gdmlldyBncm91cHMgaW4gbGVnZW5kDQogICAgICBpZih4Lmdyb3VwcyAmJiB4LmxlZ2VuZC51c2VHcm91cHMpew0KICAgICAgICAvLyBjcmVhdGUgZGF0YQ0KICAgICAgICBmb3IgKHZhciBnMSA9IDA7IGcxIDwgeC5ncm91cHMubGVuZ3RoOyBnMSsrKXsNCiAgICAgICAgICANCiAgICAgICAgICBpZihnMSA9PT0gMCl7DQogICAgICAgICAgICB0bXBfbHggPSBseDsNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgdG1wX2x4ID0gbHggKyBnMSVuY29sICogc3RlcF94Ow0KICAgICAgICAgIH0NCiAgICAgICAgICANCiAgICAgICAgICB0bXBfbHkgPSBhbGxfdG1wX3lbZzFdOw0KICAgICAgICAgIGlmKHRtcF9seSA9PT0gMCl7DQogICAgICAgICAgICB0bXBfbHkgPSAxDQogICAgICAgICAgfQ0KICAgICAgICAgIA0KICAgICAgICAgIGxlZ2VuZG5vZGVzLmFkZCh7aWQ6IG51bGwsIHggOiB0bXBfbHgsIHkgOiB0bXBfbHksIGxhYmVsOiB4Lmdyb3Vwc1tnMV0sIGdyb3VwOiB4Lmdyb3Vwc1tnMV0sIHZhbHVlOiAxLCBtYXNzOjF9KTsNCiAgICAgICAgICBlZGdlX2x5ID0gdG1wX2x5Ow0KICAgICAgICB9DQogICAgICAgIC8vIGNvbnRyb2wgaWNvbiBzaXplDQogICAgICAgIGlmKHgub3B0aW9ucy5ncm91cHMpew0KICAgICAgICAgIG9wdGlvbnNsZWdlbmQuZ3JvdXBzID0gY2xvbmUoeC5vcHRpb25zLmdyb3Vwcyk7DQogICAgICAgICAgZm9yICh2YXIgZ3JwIGluIG9wdGlvbnNsZWdlbmQuZ3JvdXBzKSB7DQogICAgICAgICAgICBpZihvcHRpb25zbGVnZW5kLmdyb3Vwc1tncnBdLnNoYXBlID09PSAiaWNvbiIpew0KICAgICAgICAgICAgICBvcHRpb25zbGVnZW5kLmdyb3Vwc1tncnBdLmljb24uc2l6ZSA9IDUwOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgLy8gd2FudCB0byBhZGQgY3VzdG9tIG5vZGVzDQogICAgICBpZih4LmxlZ2VuZC5ub2RlcyAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgDQogICAgICAgIC8vIGNvbnRyb2wgaWNvbg0KICAgICAgICBmb3IgKHZhciBuZCBpbiB0bXBub2Rlcyl7DQogICAgICAgICAgaWYodG1wbm9kZXNbbmRdLmljb24gICYmICF4LmxlZ2VuZC5ub2Rlc1RvRGF0YWZyYW1lKXsNCiAgICAgICAgICAgIHRtcG5vZGVzW25kXS5pY29uLmNvZGUgPSBKU09OLnBhcnNlKCAnIicrJ1xcdScgKyB0bXBub2Rlc1tuZF0uaWNvbi5jb2RlICsgJyInKTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLy8gZ3JvdXAgY29udHJvbCBmb3IgeQ0KICAgICAgICB2YXIgYWRkX2dyX3kgPSAwOw0KICAgICAgICBpZih4Lmdyb3VwcyAmJiB4LmxlZ2VuZC51c2VHcm91cHMpew0KICAgICAgICAgIGFkZF9ncl95ID0geC5ncm91cHMubGVuZ3RoOw0KICAgICAgICB9DQogICAgICAgIC8vIHNldCBjb29yZGluYXRlcw0KICAgICAgICBmb3IgKHZhciBnID0gMDsgZyA8IHRtcG5vZGVzLmxlbmd0aDsgZysrKXsNCiAgICAgICAgICBpZigoZytsZWdlbmRub2Rlcy5sZW5ndGgpID09PSAwKXsNCiAgICAgICAgICAgIHRtcF9seCA9IGx4Ow0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0bXBfbHggPSBseCArIChnK2xlZ2VuZG5vZGVzLmxlbmd0aCklbmNvbCAqIHN0ZXBfeDsNCiAgICAgICAgICB9DQogICAgICAgICAgDQogICAgICAgICAgdG1wX2x5ID0gYWxsX3RtcF95W2FkZF9ncl95ICsgZ107DQogICAgICAgICAgaWYodG1wX2x4ID09PSAwKXsNCiAgICAgICAgICAgIHRtcF9seCA9IDENCiAgICAgICAgICB9DQogICAgICAgICAgaWYodG1wX2x5ID09PSAwKXsNCiAgICAgICAgICAgIHRtcF9seSA9IDENCiAgICAgICAgICB9DQogICAgICAgICAgdG1wbm9kZXNbZ10ueCA9IHRtcF9seDsNCiAgICAgICAgICB0bXBub2Rlc1tnXS55ID0gdG1wX2x5Ow0KICAgICAgICAgIA0KICAgICAgICAgIGlmKHRtcG5vZGVzW2ddLnZhbHVlID09PSB1bmRlZmluZWQgJiYgdG1wbm9kZXNbZ10uc2l6ZSA9PT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgIHRtcG5vZGVzW2ddLnZhbHVlID0gMTsNCiAgICAgICAgICB9DQogICAgICAgICAgLyppZih0bXBub2Rlc1tnXS5pZCAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgIHRtcG5vZGVzW2ddLmlkID0gbnVsbDsNCiAgICAgICAgICB9Ki8NCiAgICAgICAgICB0bXBub2Rlc1tnXS5tYXNzID0gMTsNCiAgICAgICAgICBlZGdlX2x5ID0gdG1wX2x5Ow0KICAgICAgICB9DQogICAgICAgIGxlZ2VuZG5vZGVzLmFkZCh0bXBub2Rlcyk7DQogICAgICB9DQogICAgICAvLyB3YW50IHRvIGFkZCBjdXN0b20gZWRnZXMNCiAgICAgIGlmKHgubGVnZW5kLmVkZ2VzICE9PSB1bmRlZmluZWQpew0KICAgICAgICBpZih4LmxlZ2VuZC5lZGdlc1RvRGF0YWZyYW1lKXsgLy8gZGF0YSBpbiBkYXRhLmZyYW1lDQogICAgICAgICAgbGVnZW5kZWRnZXMgPSB2aXNOZXR3b3JrZGF0YWZyYW1lVG9EMyh4LmxlZ2VuZC5lZGdlcywgImVkZ2VzIikNCiAgICAgICAgfSBlbHNlIHsgIC8vIGRhdGEgaW4gbGlzdA0KICAgICAgICAgIGxlZ2VuZGVkZ2VzID0geC5sZWdlbmQuZWRnZXM7DQogICAgICAgIH0NCiAgICAgICAgLy8gb25seSBvbmUgZWxlbWVudCANCiAgICAgICAgaWYobGVnZW5kZWRnZXMubGVuZ3RoID09PSB1bmRlZmluZWQpew0KICAgICAgICAgIGxlZ2VuZGVkZ2VzID0gbmV3IEFycmF5KGxlZ2VuZGVkZ2VzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIHNldCBjb29yZGluYXRlcyBhbmQgb3B0aW9ucw0KICAgICAgICBmb3IgKHZhciBlZGcgPSAwOyBlZGcgPCAobGVnZW5kZWRnZXMubGVuZ3RoKTsgZWRnKyspew0KICAgICAgICAgIA0KICAgICAgICAgIHZhciB0bXBfaW50ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMSk7DQogICAgICAgICAgbGVnZW5kZWRnZXNbZWRnXS5mcm9tID0gZWRnICsgInRtcF9sZWdfZWRnZXNfIiArIHRtcF9pbnQgKyAiXzEiOw0KICAgICAgICAgIGxlZ2VuZGVkZ2VzW2VkZ10udG8gPSBlZGcgKyAidG1wX2xlZ19lZGdlc18iICsgdG1wX2ludCArICJfMiI7DQogICAgICAgICAgbGVnZW5kZWRnZXNbZWRnXS5waHlzaWNzID0gZmFsc2U7DQogICAgICAgICAgbGVnZW5kZWRnZXNbZWRnXS5zbW9vdGggPSBmYWxzZTsNCiAgICAgICAgICBsZWdlbmRlZGdlc1tlZGddLnZhbHVlID0gdW5kZWZpbmVkOw0KDQogICAgICAgICAgaWYobGVnZW5kZWRnZXNbZWRnXS5hcnJvd3MgPT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICBsZWdlbmRlZGdlc1tlZGddLmFycm93cyA9ICd0byc7DQogICAgICAgICAgfQ0KICAgICAgICAgIA0KICAgICAgICAgIGlmKGxlZ2VuZGVkZ2VzW2VkZ10ud2lkdGggPT09IHVuZGVmaW5lZCl7DQogICAgICAgICAgICBsZWdlbmRlZGdlc1tlZGddLndpZHRoID0gMTsNCiAgICAgICAgICB9DQoNCiAgICAgICAgICB0bXBfbHkgPSBlZGdlX2x5ICsgKGVkZysxKSpzdGVwX3k7DQogICAgICAgICAgaWYodG1wX2x5ID09PSAwKXsNCiAgICAgICAgICAgIHRtcF9seSA9IDENCiAgICAgICAgICB9DQogICAgICAgICAgDQogICAgICAgICAgaWYobmNvbCA9PT0gMSl7DQogICAgICAgICAgICB0bXBfbHggPSBseCAtIG15bmV0d29yay5jbGllbnRXaWR0aC8zOw0KICAgICAgICAgICAgdG1wX2x4MiA9IGx4ICsgbXluZXR3b3JrLmNsaWVudFdpZHRoLzM7DQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHRtcF9seCA9IGx4Ow0KICAgICAgICAgICAgdG1wX2x4MiA9IGx4ICsgKG5jb2wtMSkgKiBzdGVwX3g7DQogICAgICAgICAgfQ0KICAgICAgICAgIA0KICAgICAgICAgIGlmKHRtcF9seCA9PT0gMCl7DQogICAgICAgICAgICB0bXBfbHggPSAxDQogICAgICAgICAgfQ0KICAgICAgICAgIA0KICAgICAgICAgIGlmKHRtcF9seDIgPT09IDApew0KICAgICAgICAgICAgdG1wX2x4MiA9IDENCiAgICAgICAgICB9DQogICAgICAgICAgDQogICAgICAgICAgbGVnZW5kbm9kZXMuYWRkKHtpZDogZWRnICsgInRtcF9sZWdfZWRnZXNfIiArIHRtcF9pbnQgKyAiXzEiLCB4IDogdG1wX2x4LCB5IDogdG1wX2x5LCBzaXplIDogMC4wMDAxLCBoaWRkZW4gOiBmYWxzZSwgc2hhcGUgOiAic3F1YXJlIiwgbWFzczoxfSk7DQogICAgICAgICAgbGVnZW5kbm9kZXMuYWRkKHtpZDogZWRnICsgInRtcF9sZWdfZWRnZXNfIiArIHRtcF9pbnQgKyAiXzIiLCB4IDogdG1wX2x4MiwgeSA6IHRtcF9seSwgc2l6ZSA6IDAuMDAwMSwgaGlkZGVuIDogZmFsc2UsIHNoYXBlIDogInNxdWFyZSIsIG1hc3M6MX0pOw0KICAgICAgICB9DQogICAgICB9DQogICAgICANCiAgICAgIC8vIHJlbmRlciBsZWdlbmQgbmV0d29yaw0KICAgICAgZGF0YWxlZ2VuZCA9IHsNCiAgICAgICAgbm9kZXM6IGxlZ2VuZG5vZGVzLCANCiAgICAgICAgZWRnZXM6IGxlZ2VuZGVkZ2VzICAgICAgIA0KICAgICAgfTsNCg0KICAgICAgDQogICAgICBpbnN0YW5jZS5sZWdlbmQgPSBuZXcgdmlzLk5ldHdvcmsoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxlZ2VuZCIrZWwuaWQpLCBkYXRhbGVnZW5kLCBvcHRpb25zbGVnZW5kKTsNCiAgICAgIC8vbGluayBuZXR3b3JrIGZvciB1cGRhdGUgZm9yIHJlLXVzZSBhbmQgdXBkYXRlDQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGVnZW5kIitlbC5pZCkubmV0d29yayA9IGluc3RhbmNlLmxlZ2VuZDsNCiAgICB9DQogICAgDQogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgLy8gTWFpbiBOZXR3b3JrIHJlbmRlcmluZw0KICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIGlmKHgubm9kZXMpew0KICAgICAgDQogICAgICAvLyBuZXR3b3JrDQogICAgICBub2RlcyA9IG5ldyB2aXMuRGF0YVNldCgpOw0KICAgICAgZWRnZXMgPSBuZXcgdmlzLkRhdGFTZXQoKTsNCiAgICAgIA0KICAgICAgdmFyIHRtcG5vZGVzOw0KICAgICAgaWYoeC5ub2Rlc1RvRGF0YWZyYW1lKXsgLy8gZGF0YSBpbiBkYXRhLmZyYW1lDQogICAgICAgIHRtcG5vZGVzID0gdmlzTmV0d29ya2RhdGFmcmFtZVRvRDMoeC5ub2RlcywgIm5vZGVzIikNCiAgICAgIH0gZWxzZSB7IC8vIGRhdGEgaW4gbGlzdA0KICAgICAgICB0bXBub2RlcyA9IHgubm9kZXM7DQogICAgICB9DQogICAgICAvLyBvbmx5IG9uZSBlbGVtZW50ICAgDQogICAgICBpZih0bXBub2Rlcy5sZW5ndGggPT09IHVuZGVmaW5lZCl7DQogICAgICAgIHRtcG5vZGVzID0gbmV3IEFycmF5KHRtcG5vZGVzKTsNCiAgICAgIH0NCiAgICAgICAgDQogICAgICAvLyB1cGRhdGUgY29vcmRpbmF0ZXMgaWYgaWdyYXBoDQogICAgICBpZih4LmlncmFwaGxheW91dCAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgLy8gdG8gaW1wcm92ZWQNCiAgICAgICAgdmFyIHpvb21MZXZlbCA9IC0yMzIuNjIyMzQ5IC8gKHRtcG5vZGVzLmxlbmd0aCArIDkxLjE2NTkxOSkgICsyLjUxNjg2MTsNCiAgICAgICAgdmFyIGlnY2xpZW50V2lkdGggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2VsLmlkKS5jbGllbnRXaWR0aDsNCiAgICAgICAgdmFyIHNjYWxleCA9IDEwMDsNCiAgICAgICAgdmFyIHNjYWxleSA9IDEwMDsNCiAgICAgICAgDQogICAgICAgIC8vIGN1cnJlbnQgZGl2IHZpc2libGVkDQogICAgICAgIGlmKGlnY2xpZW50V2lkdGggIT09IDApew0KICAgICAgICAgIHZhciBmYWN0b3IgPSBpZ2NsaWVudFdpZHRoIC8gMTg5MDsNCiAgICAgICAgICB6b29tTGV2ZWwgPSB6b29tTGV2ZWwvZmFjdG9yOw0KICAgICAgICAgIHZhciBzY2FsZXggPSAoaWdjbGllbnRXaWR0aCAvIDIpICogem9vbUxldmVsOw0KICAgICAgICAgIHZhciBzY2FsZXkgPSBzY2FsZXg7DQogICAgICAgICAgaWYoeC5pZ3JhcGhsYXlvdXQudHlwZSAhPT0gInNxdWFyZSIpew0KICAgICAgICAgICAgc2NhbGV5ID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmFwaCIrZWwuaWQpLmNsaWVudEhlaWdodCAvIDIpICogem9vbUxldmVsOw0KICAgICAgICAgIH0NCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAvLyBjdXJyZW50IGRpdiBub3QgdmlzaWJsZWQuLi4uDQogICAgICAgICAgaWdjbGllbnRXaWR0aCA9IHBhcnNlSW50KGVsX2lkLnN0eWxlLndpZHRoKTsNCiAgICAgICAgICBpZihpZ2NsaWVudFdpZHRoICE9PSAwKXsNCiAgICAgICAgICAgIHZhciBmYWN0b3IgPSBpZ2NsaWVudFdpZHRoIC8gMTg5MDsNCiAgICAgICAgICAgIHpvb21MZXZlbCA9IHpvb21MZXZlbC9mYWN0b3I7DQogICAgICAgICAgICB2YXIgc2NhbGV4ID0gKGlnY2xpZW50V2lkdGggLyAyKSAqIHpvb21MZXZlbDsNCiAgICAgICAgICAgIHZhciBzY2FsZXkgPSBzY2FsZXg7DQogICAgICAgICAgICBpZih4LmlncmFwaGxheW91dC50eXBlICE9PSAic3F1YXJlIil7DQogICAgICAgICAgICAgIHNjYWxleSA9IChwYXJzZUludChlbF9pZC5zdHlsZS5oZWlnaHQpIC8gMikgKiB6b29tTGV2ZWw7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBmb3IgKHZhciBuZCBpbiB0bXBub2Rlcykgew0KICAgICAgICAgIHRtcG5vZGVzW25kXS54ID0gdG1wbm9kZXNbbmRdLnggKiBzY2FsZXg7DQogICAgICAgICAgdG1wbm9kZXNbbmRdLnkgPSB0bXBub2Rlc1tuZF0ueSAqIHNjYWxleTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgDQogICAgICBub2Rlcy5hZGQodG1wbm9kZXMpOw0KICAgICAgDQogICAgICB2YXIgdG1wZWRnZXM7DQogICAgICBpZih4LmVkZ2VzVG9EYXRhZnJhbWUpeyAvLyBkYXRhIGluIGRhdGEuZnJhbWUNCiAgICAgICAgdG1wZWRnZXMgPSB2aXNOZXR3b3JrZGF0YWZyYW1lVG9EMyh4LmVkZ2VzLCAiZWRnZXMiKQ0KICAgICAgfSBlbHNlIHsgLy8gZGF0YSBpbiBsaXN0DQogICAgICAgIHRtcGVkZ2VzID0geC5lZGdlczsNCiAgICAgIH0NCiAgICAgIC8vIG9ubHkgb25lIGVsZW1lbnQNCiAgICAgIGlmKHRtcGVkZ2VzICE9PSBudWxsKXsNCiAgICAgICAgaWYodG1wZWRnZXMubGVuZ3RoID09PSB1bmRlZmluZWQpew0KICAgICAgICAgIHRtcGVkZ2VzID0gbmV3IEFycmF5KHRtcGVkZ2VzKTsNCiAgICAgICAgfQ0KICAgICAgICBlZGdlcy5hZGQodG1wZWRnZXMpOyAgDQogICAgICB9DQogICAgICANCiAgICAgIC8vIHJlc2V0IHRtcG5vZGVzDQogICAgICB0bXBub2RlcyA9IG51bGw7DQogICAgICANCiAgICAgIGRhdGEgPSB7DQogICAgICAgIG5vZGVzOiBub2RlcywNCiAgICAgICAgZWRnZXM6IGVkZ2VzDQogICAgICB9Ow0KICAgICAgDQogICAgICAvL3NhdmUgZGF0YSBmb3IgcmUtdXNlIGFuZCB1cGRhdGUNCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmFwaCIrZWwuaWQpLm5vZGVzID0gbm9kZXM7DQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2VsLmlkKS5lZGdlcyA9IGVkZ2VzOw0KDQogICAgfWVsc2UgaWYoeC5kb3Qpew0KICAgICAgZGF0YSA9IHsNCiAgICAgICAgZG90OiB4LmRvdA0KICAgICAgfTsNCiAgICB9ZWxzZSBpZih4LmdlcGhpKXsNCiAgICAgIGRhdGEgPSB7DQogICAgICAgIGdlcGhpOiB4LmdlcGhpDQogICAgICB9Ow0KICAgIH0gDQogICAgDQogICAgdmFyIG9wdGlvbnMgPSB4Lm9wdGlvbnM7DQoNCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICAvL21hbmlwdWxhdGlvbg0KICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIGlmKHgub3B0aW9ucy5tYW5pcHVsYXRpb24uZW5hYmxlZCl7DQoNCiAgICAgIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7DQogICAgICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJzsNCiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHguZGF0YWNzcykpOw0KICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChzdHlsZSk7DQoNCiAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCiAgICAgIGRpdi5pZCA9ICduZXR3b3JrLXBvcFVwJzsNCg0KICAgICAgZGl2LmlubmVySFRNTCA9ICc8c3BhbiBpZD0ib3BlcmF0aW9uIj5ub2RlPC9zcGFuPiA8YnI+XA0KICAgICAgPHRhYmxlIHN0eWxlPSJtYXJnaW46YXV0bzsiPjx0cj5cDQogICAgICA8dGQ+aWQ8L3RkPjx0ZD48aW5wdXQgaWQ9Im5vZGUtaWQiIHZhbHVlPSJuZXcgdmFsdWUiIGRpc2FibGVkID0gdHJ1ZT48L3RkPlwNCiAgICAgIDwvdHI+XA0KICAgICAgPHRyPlwNCiAgICAgIDx0ZD5sYWJlbDwvdGQ+PHRkPjxpbnB1dCBpZD0ibm9kZS1sYWJlbCIgdmFsdWU9Im5ldyB2YWx1ZSI+IDwvdGQ+XA0KICAgICAgPC90cj48L3RhYmxlPlwNCiAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJzYXZlIiBpZD0ic2F2ZUJ1dHRvbiI+PC9idXR0b24+XA0KICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9ImNhbmNlbCIgaWQ9ImNhbmNlbEJ1dHRvbiI+PC9idXR0b24+JzsNCg0KICAgICAgZWxfaWQuYXBwZW5kQ2hpbGQoZGl2KTsNCg0KICAgICAgaWYoeC5vcHRpb25zLm1hbmlwdWxhdGlvbi5hZGROb2RlID09PSB1bmRlZmluZWQpew0KICAgICAgICBvcHRpb25zLm1hbmlwdWxhdGlvbi5hZGROb2RlID0gZnVuY3Rpb24oZGF0YSwgY2FsbGJhY2spIHsNCiAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3BlcmF0aW9uJykuaW5uZXJIVE1MID0gIkFkZCBOb2RlIjsNCiAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm9kZS1pZCcpLnZhbHVlID0gZGF0YS5pZDsNCiAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm9kZS1sYWJlbCcpLnZhbHVlID0gZGF0YS5sYWJlbDsNCiAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2F2ZUJ1dHRvbicpLm9uY2xpY2sgPSBzYXZlTm9kZS5iaW5kKHRoaXMsIGRhdGEsIGNhbGxiYWNrLCAiYWRkTm9kZSIpOw0KICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW5jZWxCdXR0b24nKS5vbmNsaWNrID0gY2xlYXJQb3BVcC5iaW5kKCk7DQogICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ldHdvcmstcG9wVXAnKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsNCiAgICAgICAgfTsNCiAgICAgIH0gZWxzZSBpZih0eXBlb2YoeC5vcHRpb25zLm1hbmlwdWxhdGlvbi5hZGROb2RlKSA9PT0gdHlwZW9mKHRydWUpKXsNCiAgICAgICAgaWYoeC5vcHRpb25zLm1hbmlwdWxhdGlvbi5hZGROb2RlKXsNCiAgICAgICAgICBvcHRpb25zLm1hbmlwdWxhdGlvbi5hZGROb2RlID0gZnVuY3Rpb24oZGF0YSwgY2FsbGJhY2spIHsNCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcGVyYXRpb24nKS5pbm5lckhUTUwgPSAiQWRkIE5vZGUiOw0KICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25vZGUtaWQnKS52YWx1ZSA9IGRhdGEuaWQ7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm9kZS1sYWJlbCcpLnZhbHVlID0gZGF0YS5sYWJlbDsNCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYXZlQnV0dG9uJykub25jbGljayA9IHNhdmVOb2RlLmJpbmQodGhpcywgZGF0YSwgY2FsbGJhY2ssICJhZGROb2RlIik7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FuY2VsQnV0dG9uJykub25jbGljayA9IGNsZWFyUG9wVXAuYmluZCgpOw0KICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ldHdvcmstcG9wVXAnKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsNCiAgICAgICAgICB9Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIG9wdGlvbnMubWFuaXB1bGF0aW9uLmFkZE5vZGUgPSBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgb3B0aW9ucy5tYW5pcHVsYXRpb24uYWRkTm9kZSA9IHgub3B0aW9ucy5tYW5pcHVsYXRpb24uYWRkTm9kZTsNCiAgICAgIH0NCg0KICAgICAgaWYoeC5vcHRpb25zLm1hbmlwdWxhdGlvbi5lZGl0Tm9kZSA9PT0gdW5kZWZpbmVkKXsNCiAgICAgICAgb3B0aW9ucy5tYW5pcHVsYXRpb24uZWRpdE5vZGUgPSBmdW5jdGlvbihkYXRhLCBjYWxsYmFjaykgew0KICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29wZXJhdGlvbicpLmlubmVySFRNTCA9ICJFZGl0IE5vZGUiOw0KICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25vZGUtaWQnKS52YWx1ZSA9IGRhdGEuaWQ7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm9kZS1sYWJlbCcpLnZhbHVlID0gZGF0YS5sYWJlbDsNCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYXZlQnV0dG9uJykub25jbGljayA9IHNhdmVOb2RlLmJpbmQodGhpcywgZGF0YSwgY2FsbGJhY2ssICJlZGl0Tm9kZSIpOw0KICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbmNlbEJ1dHRvbicpLm9uY2xpY2sgPSBjYW5jZWxFZGl0LmJpbmQodGhpcyxjYWxsYmFjayk7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV0d29yay1wb3BVcCcpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOw0KICAgICAgICAgIH07DQogICAgICB9IGVsc2UgaWYodHlwZW9mKHgub3B0aW9ucy5tYW5pcHVsYXRpb24uZWRpdE5vZGUpID09PSB0eXBlb2YodHJ1ZSkpew0KICAgICAgICBpZih4Lm9wdGlvbnMubWFuaXB1bGF0aW9uLmVkaXROb2RlKXsNCiAgICAgICAgICBvcHRpb25zLm1hbmlwdWxhdGlvbi5lZGl0Tm9kZSA9IGZ1bmN0aW9uKGRhdGEsIGNhbGxiYWNrKSB7DQogICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcGVyYXRpb24nKS5pbm5lckhUTUwgPSAiRWRpdCBOb2RlIjsNCiAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25vZGUtaWQnKS52YWx1ZSA9IGRhdGEuaWQ7DQogICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdub2RlLWxhYmVsJykudmFsdWUgPSBkYXRhLmxhYmVsOw0KICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2F2ZUJ1dHRvbicpLm9uY2xpY2sgPSBzYXZlTm9kZS5iaW5kKHRoaXMsIGRhdGEsIGNhbGxiYWNrLCAiZWRpdE5vZGUiKTsNCiAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbmNlbEJ1dHRvbicpLm9uY2xpY2sgPSBjYW5jZWxFZGl0LmJpbmQodGhpcyxjYWxsYmFjayk7DQogICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduZXR3b3JrLXBvcFVwJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7DQogICAgICAgICAgICB9Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIG9wdGlvbnMubWFuaXB1bGF0aW9uLmVkaXROb2RlID0gZmFsc2U7DQogICAgICAgIH0NCiAgICAgIH0gZWxzZSB7DQogICAgICAgIG9wdGlvbnMubWFuaXB1bGF0aW9uLmVkaXROb2RlID0geC5vcHRpb25zLm1hbmlwdWxhdGlvbi5lZGl0Tm9kZTsNCiAgICAgIH0NCiAgDQogICAgICBpZih4Lm9wdGlvbnMubWFuaXB1bGF0aW9uLmRlbGV0ZU5vZGUgPT09IHVuZGVmaW5lZCl7DQogICAgICAgIG9wdGlvbnMubWFuaXB1bGF0aW9uLmRlbGV0ZU5vZGUgPSBmdW5jdGlvbihkYXRhLCBjYWxsYmFjaykgew0KICAgICAgICAgICAgdmFyIHIgPSBjb25maXJtKCJEbyB5b3Ugd2FudCB0byBkZWxldGUgIiArIGRhdGEubm9kZXMubGVuZ3RoICsgIiBub2RlKHMpIGFuZCAiICsgZGF0YS5lZGdlcy5sZW5ndGggKyAiIGVkZ2VzID8iKTsNCiAgICAgICAgICAgIGlmIChyID09PSB0cnVlKSB7DQogICAgICAgICAgICAgIGRlbGV0ZVN1YkdyYXBoKGRhdGEsIGNhbGxiYWNrKTsNCiAgICAgICAgICAgIH0gZWxzZSB7IGNsZWFyUG9wVXAoKTsgY2FsbGJhY2sobnVsbCk7IH0NCiAgICAgICAgfTsNCiAgICAgIH0gZWxzZSBpZih0eXBlb2YoeC5vcHRpb25zLm1hbmlwdWxhdGlvbi5kZWxldGVOb2RlKSA9PT0gdHlwZW9mKHRydWUpKXsNCiAgICAgICAgaWYoeC5vcHRpb25zLm1hbmlwdWxhdGlvbi5kZWxldGVOb2RlKXsNCiAgICAgICAgICBvcHRpb25zLm1hbmlwdWxhdGlvbi5kZWxldGVOb2RlID0gZnVuY3Rpb24oZGF0YSwgY2FsbGJhY2spIHsNCiAgICAgICAgICAgICAgdmFyIHIgPSBjb25maXJtKCJEbyB5b3Ugd2FudCB0byBkZWxldGUgIiArIGRhdGEubm9kZXMubGVuZ3RoICsgIiBub2RlKHMpIGFuZCAiICsgZGF0YS5lZGdlcy5sZW5ndGggKyAiIGVkZ2VzID8iKTsNCiAgICAgICAgICAgICAgaWYgKHIgPT09IHRydWUpIHsNCiAgICAgICAgICAgICAgICBkZWxldGVTdWJHcmFwaChkYXRhLCBjYWxsYmFjayk7DQogICAgICAgICAgICAgIH0gZWxzZSB7IGNsZWFyUG9wVXAoKTsgY2FsbGJhY2sobnVsbCk7IH0NCiAgICAgICAgICB9Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIG9wdGlvbnMubWFuaXB1bGF0aW9uLmRlbGV0ZU5vZGUgPSBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgb3B0aW9ucy5tYW5pcHVsYXRpb24uZGVsZXRlTm9kZSA9IHgub3B0aW9ucy5tYW5pcHVsYXRpb24uZGVsZXRlTm9kZTsNCiAgICAgIH0NCg0KICAgICAgaWYoeC5vcHRpb25zLm1hbmlwdWxhdGlvbi5kZWxldGVFZGdlID09PSB1bmRlZmluZWQpew0KICAgICAgICBvcHRpb25zLm1hbmlwdWxhdGlvbi5kZWxldGVFZGdlID0gZnVuY3Rpb24oZGF0YSwgY2FsbGJhY2spIHsNCiAgICAgICAgICAgIHZhciByID0gY29uZmlybSgiRG8geW91IHdhbnQgdG8gZGVsZXRlICIgKyBkYXRhLmVkZ2VzLmxlbmd0aCArICIgZWRnZXMgPyIpOw0KICAgICAgICAgICAgaWYgKHIgPT09IHRydWUpIHsNCiAgICAgICAgICAgICAgZGVsZXRlU3ViR3JhcGgoZGF0YSwgY2FsbGJhY2spOw0KICAgICAgICAgICAgfSBlbHNlIHsgY2xlYXJQb3BVcCgpOyBjYWxsYmFjayhudWxsKTsgfQ0KICAgICAgICB9Ow0KICAgICAgfSBlbHNlIGlmKHR5cGVvZih4Lm9wdGlvbnMubWFuaXB1bGF0aW9uLmRlbGV0ZUVkZ2UpID09PSB0eXBlb2YodHJ1ZSkpew0KICAgICAgICBpZih4Lm9wdGlvbnMubWFuaXB1bGF0aW9uLmRlbGV0ZUVkZ2Upew0KICAgICAgICAgIG9wdGlvbnMubWFuaXB1bGF0aW9uLmRlbGV0ZUVkZ2UgPSBmdW5jdGlvbihkYXRhLCBjYWxsYmFjaykgew0KICAgICAgICAgICAgICB2YXIgciA9IGNvbmZpcm0oIkRvIHlvdSB3YW50IHRvIGRlbGV0ZSAiICsgZGF0YS5lZGdlcy5sZW5ndGggKyAiIGVkZ2VzID8iKTsNCiAgICAgICAgICAgICAgaWYgKHIgPT09IHRydWUpIHsNCiAgICAgICAgICAgICAgICBkZWxldGVTdWJHcmFwaChkYXRhLCBjYWxsYmFjayk7DQogICAgICAgICAgICAgIH0gZWxzZSB7IGNsZWFyUG9wVXAoKTsgY2FsbGJhY2sobnVsbCk7IH0NCiAgICAgICAgICB9Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIG9wdGlvbnMubWFuaXB1bGF0aW9uLmRlbGV0ZUVkZ2UgPSBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgb3B0aW9ucy5tYW5pcHVsYXRpb24uZGVsZXRlRWRnZSA9IHgub3B0aW9ucy5tYW5pcHVsYXRpb24uZGVsZXRlRWRnZTsNCiAgICAgIH0NCg0KICAgICAgaWYoeC5vcHRpb25zLm1hbmlwdWxhdGlvbi5hZGRFZGdlID09PSB1bmRlZmluZWQpew0KICAgICAgICBvcHRpb25zLm1hbmlwdWxhdGlvbi5hZGRFZGdlID0gZnVuY3Rpb24oZGF0YSwgY2FsbGJhY2spIHsNCiAgICAgICAgICBpZiAoZGF0YS5mcm9tID09IGRhdGEudG8pIHsNCiAgICAgICAgICAgIHZhciByID0gY29uZmlybSgiRG8geW91IHdhbnQgdG8gY29ubmVjdCB0aGUgbm9kZSB0byBpdHNlbGY/Iik7DQogICAgICAgICAgICBpZiAociA9PT0gdHJ1ZSkgew0KICAgICAgICAgICAgICBzYXZlRWRnZShkYXRhLCBjYWxsYmFjaywgImFkZEVkZ2UiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICBzYXZlRWRnZShkYXRhLCBjYWxsYmFjaywgImFkZEVkZ2UiKTsNCiAgICAgICAgICB9DQogICAgICAgIH07DQogICAgICB9IGVsc2UgaWYodHlwZW9mKHgub3B0aW9ucy5tYW5pcHVsYXRpb24uYWRkRWRnZSkgPT09IHR5cGVvZih0cnVlKSl7DQogICAgICAgIGlmKHgub3B0aW9ucy5tYW5pcHVsYXRpb24uYWRkRWRnZSl7DQogICAgICAgICAgb3B0aW9ucy5tYW5pcHVsYXRpb24uYWRkRWRnZSA9IGZ1bmN0aW9uKGRhdGEsIGNhbGxiYWNrKSB7DQogICAgICAgICAgICBpZiAoZGF0YS5mcm9tID09IGRhdGEudG8pIHsNCiAgICAgICAgICAgICAgdmFyIHIgPSBjb25maXJtKCJEbyB5b3Ugd2FudCB0byBjb25uZWN0IHRoZSBub2RlIHRvIGl0c2VsZj8iKTsNCiAgICAgICAgICAgICAgaWYgKHIgPT09IHRydWUpIHsNCiAgICAgICAgICAgICAgICBzYXZlRWRnZShkYXRhLCBjYWxsYmFjaywgImFkZEVkZ2UiKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgIHNhdmVFZGdlKGRhdGEsIGNhbGxiYWNrLCAiYWRkRWRnZSIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH07DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgb3B0aW9ucy5tYW5pcHVsYXRpb24uYWRkRWRnZSA9IGZhbHNlOw0KICAgICAgICB9DQogICAgICB9IGVsc2Ugew0KICAgICAgICBvcHRpb25zLm1hbmlwdWxhdGlvbi5hZGRFZGdlID0geC5vcHRpb25zLm1hbmlwdWxhdGlvbi5hZGRFZGdlOw0KICAgICAgfQ0KDQogICAgICBpZih4Lm9wdGlvbnMubWFuaXB1bGF0aW9uLmVkaXRFZGdlID09PSB1bmRlZmluZWQpew0KICAgICAgICBvcHRpb25zLm1hbmlwdWxhdGlvbi5lZGl0RWRnZSA9IGZ1bmN0aW9uKGRhdGEsIGNhbGxiYWNrKSB7DQogICAgICAgICAgaWYgKGRhdGEuZnJvbSA9PSBkYXRhLnRvKSB7DQogICAgICAgICAgICB2YXIgciA9IGNvbmZpcm0oIkRvIHlvdSB3YW50IHRvIGNvbm5lY3QgdGhlIG5vZGUgdG8gaXRzZWxmPyIpOw0KICAgICAgICAgICAgaWYgKHIgPT09IHRydWUpIHsNCiAgICAgICAgICAgICAgc2F2ZUVkZ2UoZGF0YSwgY2FsbGJhY2ssICJlZGl0RWRnZSIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIHNhdmVFZGdlKGRhdGEsIGNhbGxiYWNrLCAiZWRpdEVkZ2UiKTsNCiAgICAgICAgICB9DQogICAgICAgIH07DQogICAgICB9IGVsc2UgaWYodHlwZW9mKHgub3B0aW9ucy5tYW5pcHVsYXRpb24uZWRpdEVkZ2UpID09PSB0eXBlb2YodHJ1ZSkpew0KICAgICAgICBpZih4Lm9wdGlvbnMubWFuaXB1bGF0aW9uLmVkaXRFZGdlKXsNCiAgICAgICAgICBvcHRpb25zLm1hbmlwdWxhdGlvbi5lZGl0RWRnZSA9IGZ1bmN0aW9uKGRhdGEsIGNhbGxiYWNrKSB7DQogICAgICAgICAgICBpZiAoZGF0YS5mcm9tID09IGRhdGEudG8pIHsNCiAgICAgICAgICAgICAgdmFyIHIgPSBjb25maXJtKCJEbyB5b3Ugd2FudCB0byBjb25uZWN0IHRoZSBub2RlIHRvIGl0c2VsZj8iKTsNCiAgICAgICAgICAgICAgaWYgKHIgPT09IHRydWUpIHsNCiAgICAgICAgICAgICAgICBzYXZlRWRnZShkYXRhLCBjYWxsYmFjaywgImVkaXRFZGdlIik7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICBzYXZlRWRnZShkYXRhLCBjYWxsYmFjaywgImVkaXRFZGdlIik7DQogICAgICAgICAgICB9DQogICAgICAgICAgfTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICBvcHRpb25zLm1hbmlwdWxhdGlvbi5lZGl0RWRnZSA9IGZhbHNlOw0KICAgICAgICB9DQogICAgICB9IGVsc2Ugew0KICAgICAgICBvcHRpb25zLm1hbmlwdWxhdGlvbi5lZGl0RWRnZSA9IHgub3B0aW9ucy5tYW5pcHVsYXRpb24uZWRpdEVkZ2U7DQogICAgICB9DQogICAgfQ0KICAgIA0KICAgIC8vIGNyZWF0ZSBuZXR3b3JrDQogICAgaW5zdGFuY2UubmV0d29yayA9IG5ldyB2aXMuTmV0d29yayhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2VsLmlkKSwgZGF0YSwgb3B0aW9ucyk7DQogICAgaWYgKHdpbmRvdy5TaGlueSl7DQogICAgICBTaGlueS5vbklucHV0Q2hhbmdlKGVsLmlkICsgJ19pbml0aWFsaXplZCcsIHRydWUpOw0KICAgIH0NCiAgICANCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICAvL2FkZCB2YWx1ZXMgdG8gaWRzZWxlY3Rpb24NCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICANCiAgICBpZihlbF9pZC5pZHNlbGVjdGlvbil7ICANCiAgICAgIHZhciBzZWxlY3RMaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5vZGVTZWxlY3QiK2VsLmlkKQ0KICAgICAgc2V0Tm9kZUlkTGlzdChzZWxlY3RMaXN0LCB4Lmlkc2VsZWN0aW9uLCBub2RlcykNCiAgICAgIA0KICAgICAgaWYgKHdpbmRvdy5TaGlueSl7DQogICAgICAgIGNoYW5nZUlucHV0KCdzZWxlY3RlZCcsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJub2RlU2VsZWN0IitlbC5pZCkudmFsdWUpOw0KICAgICAgfQ0KICAgIH0NCiAgICAgIA0KICAgIC8vc2F2ZSBkYXRhIGZvciByZS11c2UgYW5kIHVwZGF0ZQ0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmFwaCIrZWwuaWQpLmNoYXJ0ID0gaW5zdGFuY2UubmV0d29yazsNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhcGgiK2VsLmlkKS5vcHRpb25zID0gb3B0aW9uczsNCiAgICANCiAgICAvLy8vLy8vLy8NCiAgICAvLyBwb3B1cA0KICAgIC8vLy8vLy8vLw0KICAgIA0KICAgIC8vIFRlbXBvcmFyeSB2YXJpYWJsZXMgdG8gaG9sZCBtb3VzZSB4LXkgcG9zLnMNCiAgICB2YXIgdGVtcFggPSAwDQogICAgdmFyIHRlbXBZID0gMA0KDQogICAgLy8gTWFpbiBmdW5jdGlvbiB0byByZXRyaWV2ZSBtb3VzZSB4LXkgcG9zLnMNCiAgICBmdW5jdGlvbiBnZXRNb3VzZVhZKGUpIHsNCiAgICAgIHRlbXBYID0gZS5jbGllbnRYDQogICAgICB0ZW1wWSA9IGUuY2xpZW50WQ0KICAgICAgLy8gY2F0Y2ggcG9zc2libGUgbmVnYXRpdmUgdmFsdWVzIGluIE5TDQogICAgICBpZiAodGVtcFggPCAwKXt0ZW1wWCA9IDB9DQogICAgICBpZiAodGVtcFkgPCAwKXt0ZW1wWSA9IDB9DQogICAgfQ0KDQogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZ2V0TW91c2VYWSk7DQoNCiAgIC8vdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgic2hvd1BvcHVwIix7aWQ6dGhpcy5wb3B1cE9iai5pZCx4OnQueCszLHk6dC55LTV9KSkNCg0KICAgIC8vIHBvcHVwIGZvciB0aXRsZQ0KICAgIHZhciBwb3B1cFN0YXRlID0gZmFsc2U7DQogICAgdmFyIHBvcHVwVGltZW91dCA9IG51bGw7DQogICAgdmFyIHZpc3BvcHVwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQogICANCiAgICAvLyBkaXNhYmxlIHZpcy5qcyB0b29sdGlwIA0KICAgIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7DQogICAgc3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7DQogICAgc3R5bGUuaW5uZXJIVE1MID0gJ2Rpdi52aXMtdG9vbHRpcCB7ZGlzcGxheSA6IG5vbmV9JzsNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKHN0eWxlKTsNCg0KICAgIHZhciBwb3B1cFN0eWxlID0gJ3Bvc2l0aW9uOiBmaXhlZDt2aXNpYmlsaXR5OmhpZGRlbjtwYWRkaW5nOiA1cHg7Zm9udC1mYW1pbHk6IHZlcmRhbmE7Zm9udC1zaXplOjE0cHg7Zm9udC1jb2xvcjojMDAwMDAwO2JhY2tncm91bmQtY29sb3I6ICNmNWY0ZWQ7LW1vei1ib3JkZXItcmFkaXVzOiAzcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7Ym9yZGVyLXJhZGl1czogM3B4O2JvcmRlcjogMXB4IHNvbGlkICM4MDgwNzQ7Ym94LXNoYWRvdzogM3B4IDNweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTttYXgtd2lkdGg6NDAwcHg7d29yZC1icmVhazogYnJlYWstYWxsJw0KICAgIA0KICAgIGlmKHgudG9vbHRpcFN0eWxlICE9PSB1bmRlZmluZWQpew0KICAgICAgcG9wdXBTdHlsZSA9IHgudG9vbHRpcFN0eWxlDQogICAgfQ0KICAgIHZhciBwb3B1cFN0YXkgPSAzMDA7DQogICAgaWYoeC50b29sdGlwU3RheSAhPT0gdW5kZWZpbmVkKXsNCiAgICAgIHBvcHVwU3RheSA9IHgudG9vbHRpcFN0YXkNCiAgICB9DQogICAgdmlzcG9wdXAuc2V0QXR0cmlidXRlKCdzdHlsZScsIHBvcHVwU3R5bGUpDQogICAgDQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYXBoIitlbC5pZCkuYXBwZW5kQ2hpbGQodmlzcG9wdXApOw0KICAgIA0KICAgIC8vIGFkZCBzb21lIGV2ZW50IGxpc3RlbmVycyB0byBhdm9pZCBpdCBkaXNhcHBlYXJpbmcgd2hlbiB0aGUgbW91c2UgaWYgb3ZlciBpdC4NCiAgICB2aXNwb3B1cC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLGZ1bmN0aW9uICgpIHsNCiAgICAgIGlmIChwb3B1cFRpbWVvdXQgIT09IG51bGwpIHsNCiAgICAgICAgY2xlYXJUaW1lb3V0KHBvcHVwVGltZW91dCk7DQogICAgICAgIHBvcHVwVGltZW91dCA9IG51bGw7DQogICAgICB9DQogICAgfSk7DQogIA0KICAgIC8vIHNldCB0aGUgdGltZW91dCB3aGVuIHRoZSBtb3VzZSBsZWF2ZXMgaXQuDQogICAgdmlzcG9wdXAuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLGZ1bmN0aW9uICgpIHsNCiAgICAgIGlmIChwb3B1cFRpbWVvdXQgPT09IG51bGwpIHsNCiAgICAgICAgbXlIaWRlUG9wdXAoMTAwKTsNCiAgICAgIH0NCiAgICB9KTsNCiAgICANCiAgICAvLyB1c2UgdGhlIHBvcHVwIGV2ZW50IHRvIHNob3cNCiAgICBpbnN0YW5jZS5uZXR3b3JrLm9uKCJzaG93UG9wdXAiLCBmdW5jdGlvbihwYXJhbXMpIHsNCiAgICAgIHBvcHVwU3RhdGUgPSB0cnVlOyAgDQogICAgICBteVNob3dQb3B1cChwYXJhbXMpOw0KICAgIH0pDQogIA0KICAgIC8vIHVzZSB0aGUgaGlkZSBldmVudCB0byBoaWRlIGl0DQogICAgaW5zdGFuY2UubmV0d29yay5vbigiaGlkZVBvcHVwIiwgZnVuY3Rpb24ocGFyYW1zKSB7DQogICAgICAvLyBhdm9pZCBkb3VibGUgZmlyaW5nIG9mIHRoaXMgZXZlbnQsIGJ1ZyBpbiA0LjIuMA0KICAgICAgaWYgKHBvcHVwU3RhdGUgPT09IHRydWUpIHsNCiAgICAgICAgcG9wdXBTdGF0ZSA9IGZhbHNlOw0KICAgICAgICBteUhpZGVQb3B1cChwb3B1cFN0YXkpOw0KICAgICAgfQ0KICAgIH0pDQogIA0KICAgIC8vIGhpZGluZyB0aGUgcG9wdXAgdGhyb3VnaCBjc3MgYW5kIGEgdGltZW91dA0KICAgIGZ1bmN0aW9uIG15SGlkZVBvcHVwKGRlbGF5KSB7DQogICAgICBwb3B1cFRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3Zpc3BvcHVwLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJzt9LCBkZWxheSk7DQogICAgfQ0KICANCiAgICAvLyBzaG93aW5nIHRoZSBwb3B1cA0KICAgIGZ1bmN0aW9uIG15U2hvd1BvcHVwKGlkKSB7DQogICAgICAvLyBnZXQgdGhlIGRhdGEgZnJvbSB0aGUgdmlzLkRhdGFTZXQNCiAgICAgIHZhciBub2RlRGF0YSA9IG5vZGVzLmdldChbaWRdKTsNCiAgICAgIHZhciBlZGdlRGF0YSA9IGVkZ2VzLmdldChbaWRdKTsNCiAgICAgIA0KICAgICAgLy8gYSBub2RlID8NCiAgICAgIGlmKG5vZGVEYXRhWzBdICE9PSBudWxsICYmIG5vZGVEYXRhWzBdICE9PSB1bmRlZmluZWQpew0KICAgICAgICB2aXNwb3B1cC5pbm5lckhUTUwgPSBub2RlRGF0YVswXS50aXRsZTsNCiAgICAgICAgLy8gc2hvdyBhbmQgcGxhY2UgdGhlIHRvb2x0aXAuDQogICAgICAgIHZpc3BvcHVwLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7DQogICAgICAgIHZpc3BvcHVwLnN0eWxlLnRvcCA9IHRlbXBZIC0gMjAgKyAgInB4IjsNCiAgICAgICAgdmlzcG9wdXAuc3R5bGUubGVmdCA9IHRlbXBYICsgNSArICJweCI7DQogICAgICAgIA0KICAgICAgfSBlbHNlIGlmKGVkZ2VEYXRhWzBdICE9PSBudWxsICYmIGVkZ2VEYXRhWzBdICE9PSB1bmRlZmluZWQpew0KICAgICAgICAvLyBzbyBpdCdzIHBlcmhhcHMgYSBlZGdlID8NCiAgICAgICAgdmlzcG9wdXAuaW5uZXJIVE1MID0gZWRnZURhdGFbMF0udGl0bGU7DQogICAgICAgIC8vIHNob3cgYW5kIHBsYWNlIHRoZSB0b29sdGlwLg0KICAgICAgICB2aXNwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnOw0KICAgICAgICB2aXNwb3B1cC5zdHlsZS50b3AgPSB0ZW1wWSAtIDIwICsgICJweCI7DQogICAgICAgIHZpc3BvcHVwLnN0eWxlLmxlZnQgPSB0ZW1wWCArIDUgKyAicHgiOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgLy8gb3IgYSBjbHVzdGVyID8NCiAgICAgICAgdmFyIG5vZGVfY2x1c3RlciA9IGluc3RhbmNlLm5ldHdvcmsuYm9keS5ub2Rlc1tpZF0NCiAgICAgICAgaWYobm9kZV9jbHVzdGVyICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgIHZpc3BvcHVwLmlubmVySFRNTCA9IG5vZGVfY2x1c3Rlci5vcHRpb25zLnRpdGxlOw0KICAgICAgICAgIC8vIHNob3cgYW5kIHBsYWNlIHRoZSB0b29sdGlwLg0KICAgICAgICAgIHZpc3BvcHVwLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7DQogICAgICAgICAgdmlzcG9wdXAuc3R5bGUudG9wID0gdGVtcFkgLSAyMCArICAicHgiOw0KICAgICAgICAgIHZpc3BvcHVwLnN0eWxlLmxlZnQgPSB0ZW1wWCArIDUgKyAicHgiOw0KICAgICAgICB9DQogICAgICB9DQogICAgICANCiAgICAgIC8vIGZvciBzcGFya2xpbmUuIEV2YWwgc2NyaXB0Li4uDQogICAgICB2YXIgYW55X3NjcmlwdD0gdmlzcG9wdXAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpDQogICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGFueV9zY3JpcHQubGVuZ3RoOyBuKyspew0KICAgICAgICBpZihhbnlfc2NyaXB0W25dLmdldEF0dHJpYnV0ZSgidHlwZSIpID09PSAidGV4dC9qYXZhc2NyaXB0Iil7DQogICAgICAgICAgIGV2YWwoYW55X3NjcmlwdFtuXS5pbm5lckhUTUwpOw0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICANCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICAvLyBFdmVudHMNCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICBpZih4LmV2ZW50cyAhPT0gdW5kZWZpbmVkKXsNCiAgICAgIGZvciAodmFyIGtleSBpbiB4LmV2ZW50cykgew0KICAgICAgICAgIGluc3RhbmNlLm5ldHdvcmsub24oa2V5LCB4LmV2ZW50c1trZXldKTsNCiAgICAgIH0NCiAgICB9DQoNCiAgICBpZih4Lk9uY2VFdmVudHMgIT09IHVuZGVmaW5lZCl7DQogICAgICBmb3IgKHZhciBrZXkgaW4geC5PbmNlRXZlbnRzKSB7DQogICAgICAgICAgaW5zdGFuY2UubmV0d29yay5vbmNlKGtleSwgeC5PbmNlRXZlbnRzW2tleV0pOw0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBpZih4LlJlc2V0RXZlbnRzICE9PSB1bmRlZmluZWQpew0KICAgICAgZm9yICh2YXIga2V5IGluIHguUmVzZXRFdmVudHMpIHsNCiAgICAgICAgICBpbnN0YW5jZS5uZXR3b3JrLm9mZihrZXkpOw0KICAgICAgfQ0KICAgIH0NCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICAvLyBTZWxlY3RlZCBIaWdobGlnaHQNCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCg0KICAgIGZ1bmN0aW9uIHNlbGVjdGVkSGlnaGxpZ2h0KHZhbHVlKSB7DQogICAgICAvLyBnZXQgY3VycmVudCBub2Rlcw0KICAgICAgdmFyIGFsbE5vZGVzID0gbm9kZXMuZ2V0KHtyZXR1cm5UeXBlOiJPYmplY3QifSk7DQogICAgICAgDQogICAgICAvLyBmaXJzdCByZXNldEVkZ2VzDQogICAgICByZXNldEFsbEVkZ2VzKGVkZ2VzLCBlbF9pZC5ieXNlbGVjdGlvbkNvbG9yLCBlbF9pZC5oaWdobGlnaHRDb2xvciwgaW5zdGFuY2UubmV0d29yayk7DQogICAgICB2YXIgY29ubmVjdGVkTm9kZXMgPSBbXTsgIA0KICAgICAgDQogICAgICAvLyBnZXQgdmFyaWFibGUNCiAgICAgIHZhciBzZWwgPSBlbF9pZC5ieXNlbGVjdGlvbl92YXJpYWJsZTsNCiAgICAgIC8vIG5lZWQgdG8gbWFrZSBhbiB1cGRhdGU/DQogICAgICB2YXIgdXBkYXRlID0gIShlbF9pZC5zZWxlY3RBY3RpdmUgPT09IGZhbHNlICYmIHZhbHVlID09PSAiIik7DQoNCiAgICAgIGlmICh2YWx1ZSAhPT0gIiIpIHsNCiAgICAgICAgdmFyIHVwZGF0ZUFycmF5ID0gW107DQogICAgICAgIGVsX2lkLnNlbGVjdEFjdGl2ZSA9IHRydWU7DQogICAgICAgIA0KICAgICAgICAvLyBtYXJrIGFsbCBub2RlcyBhcyBoYXJkIHRvIHJlYWQuDQogICAgICAgIGZvciAodmFyIG5vZGVJZCBpbiBhbGxOb2Rlcykgew0KICAgICAgICAgIHZhciB2YWx1ZV9pbiA9IGZhbHNlOw0KICAgICAgICAgIC8vIHVuaXF1ZSBzZWxlY3Rpb24NCiAgICAgICAgICBpZihlbF9pZC5ieXNlbGVjdGlvbl9tdWx0aXBsZSA9PT0gZmFsc2Upew0KICAgICAgICAgICAgaWYoc2VsID09ICJsYWJlbCIpew0KICAgICAgICAgICAgICB2YWx1ZV9pbiA9ICgoYWxsTm9kZXNbbm9kZUlkXVsibGFiZWwiXSArICIiKSA9PT0gdmFsdWUpIHx8ICgoYWxsTm9kZXNbbm9kZUlkXVsiaGlkZGVuTGFiZWwiXSArICIiKSA9PT0gdmFsdWUpOw0KICAgICAgICAgICAgfWVsc2UgaWYoc2VsID09ICJjb2xvciIpew0KICAgICAgICAgICAgICB2YWx1ZV9pbiA9ICgoYWxsTm9kZXNbbm9kZUlkXVsiY29sb3IiXSArICIiKSA9PT0gdmFsdWUpIHx8ICgoYWxsTm9kZXNbbm9kZUlkXVsiaGlkZGVuQ29sb3IiXSArICIiKSA9PT0gdmFsdWUpOw0KICAgICAgICAgICAgfWVsc2Ugew0KICAgICAgICAgICAgICB2YWx1ZV9pbiA9IChhbGxOb2Rlc1tub2RlSWRdW3NlbF0gKyAiIikgPT09IHZhbHVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH1lbHNleyAvLyBtdWx0aXBsZSBzZWxlY3Rpb24NCiAgICAgICAgICAgIGlmKHNlbCA9PSAibGFiZWwiKXsNCiAgICAgICAgICAgICAgdmFyIGN1cnJlbnRfdmFsdWUgPSBhbGxOb2Rlc1tub2RlSWRdWyJsYWJlbCJdICsgIiI7DQogICAgICAgICAgICAgIHZhciB2YWx1ZV9zcGxpdCA9IGN1cnJlbnRfdmFsdWUuc3BsaXQoIiwiKS5tYXAoRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsIFN0cmluZy5wcm90b3R5cGUudHJpbSk7DQogICAgICAgICAgICAgIHZhciBjdXJyZW50X3ZhbHVlMiA9IGFsbE5vZGVzW25vZGVJZF1bImhpZGRlbkxhYmVsIl0gKyAiIjsNCiAgICAgICAgICAgICAgdmFyIHZhbHVlX3NwbGl0MiA9IGN1cnJlbnRfdmFsdWUuc3BsaXQoIiwiKS5tYXAoRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsIFN0cmluZy5wcm90b3R5cGUudHJpbSk7DQogICAgICAgICAgICAgIHZhbHVlX2luID0gKHZhbHVlX3NwbGl0LmluZGV4T2YodmFsdWUpICE9PSAtMSkgfHwgKHZhbHVlX3NwbGl0Mi5pbmRleE9mKHZhbHVlKSAhPT0gLTEpOw0KICAgICAgICAgICAgfWVsc2UgaWYoc2VsID09ICJjb2xvciIpew0KICAgICAgICAgICAgICB2YXIgY3VycmVudF92YWx1ZSA9IGFsbE5vZGVzW25vZGVJZF1bImNvbG9yIl0gKyAiIjsNCiAgICAgICAgICAgICAgdmFyIHZhbHVlX3NwbGl0ID0gY3VycmVudF92YWx1ZS5zcGxpdCgiLCIpLm1hcChGdW5jdGlvbi5wcm90b3R5cGUuY2FsbCwgU3RyaW5nLnByb3RvdHlwZS50cmltKTsNCiAgICAgICAgICAgICAgdmFyIGN1cnJlbnRfdmFsdWUyID0gYWxsTm9kZXNbbm9kZUlkXVsiaGlkZGVuQ29sb3IiXSArICIiOw0KICAgICAgICAgICAgICB2YXIgdmFsdWVfc3BsaXQyID0gY3VycmVudF92YWx1ZS5zcGxpdCgiLCIpLm1hcChGdW5jdGlvbi5wcm90b3R5cGUuY2FsbCwgU3RyaW5nLnByb3RvdHlwZS50cmltKTsNCiAgICAgICAgICAgICAgdmFsdWVfaW4gPSAodmFsdWVfc3BsaXQuaW5kZXhPZih2YWx1ZSkgIT09IC0xKSB8fCAodmFsdWVfc3BsaXQyLmluZGV4T2YodmFsdWUpICE9PSAtMSk7DQogICAgICAgICAgICB9ZWxzZSB7DQogICAgICAgICAgICAgIHZhciBjdXJyZW50X3ZhbHVlID0gYWxsTm9kZXNbbm9kZUlkXVtzZWxdICsgIiI7DQogICAgICAgICAgICAgIHZhciB2YWx1ZV9zcGxpdCA9IGN1cnJlbnRfdmFsdWUuc3BsaXQoIiwiKS5tYXAoRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsIFN0cmluZy5wcm90b3R5cGUudHJpbSk7DQogICAgICAgICAgICAgIHZhbHVlX2luID0gdmFsdWVfc3BsaXQuaW5kZXhPZih2YWx1ZSkgIT09IC0xOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgICBpZih2YWx1ZV9pbiA9PT0gZmFsc2UpeyAvLyBub3QgaW4gc2VsZWN0aW9uLCBzbyBhcyBoYXJkIHRvIHJlYWQNCiAgICAgICAgICAgIG5vZGVBc0hhcmRUb1JlYWQoYWxsTm9kZXNbbm9kZUlkXSwgaW5zdGFuY2UubmV0d29yay5ncm91cHMsIG9wdGlvbnMsIGVsX2lkLmJ5c2VsZWN0aW9uQ29sb3IsIGVsX2lkLmhpZ2hsaWdodENvbG9yLCBpbnN0YW5jZS5uZXR3b3JrLCAibm9kZSIpOw0KICAgICAgICAgIH0gZWxzZSB7IC8vIGluIHNlbGVjdGlvbiwgc28gcmVzZXQgaWYgbmVlZGVkDQogICAgICAgICAgICBjb25uZWN0ZWROb2RlcyA9IGNvbm5lY3RlZE5vZGVzLmNvbmNhdChhbGxOb2Rlc1tub2RlSWRdLmlkKTsNCiAgICAgICAgICAgIHJlc2V0T25lTm9kZShhbGxOb2Rlc1tub2RlSWRdLCBpbnN0YW5jZS5uZXR3b3JrLmdyb3Vwcywgb3B0aW9ucywgaW5zdGFuY2UubmV0d29yayk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGFsbE5vZGVzW25vZGVJZF0ueCA9IHVuZGVmaW5lZDsNCiAgICAgICAgICBhbGxOb2Rlc1tub2RlSWRdLnkgPSB1bmRlZmluZWQ7DQogICAgICAgICAgLy8gdXBkYXRlIGRhdGENCiAgICAgICAgICBpZiAoYWxsTm9kZXMuaGFzT3duUHJvcGVydHkobm9kZUlkKSAmJiB1cGRhdGUpIHsNCiAgICAgICAgICAgIHVwZGF0ZUFycmF5LnB1c2goYWxsTm9kZXNbbm9kZUlkXSk7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmKHVwZGF0ZSl7DQogICAgICAgICAgLy8gc2V0IHNvbWUgZWRnZXMgYXMgaGFyZCB0byByZWFkDQogICAgICAgICAgdmFyIGVkZ2VzSGFyZFRvUmVhZCA9IGVkZ2VzLmdldCh7DQogICAgICAgICAgICBmaWVsZHM6IFsnaWQnLCAnY29sb3InLCAnaGlkZGVuQ29sb3InLCAnaGlkZGVuTGFiZWwnLCAnbGFiZWwnXSwNCiAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKGl0ZW0pIHsNCiAgICAgICAgICAgICAgcmV0dXJuIChpbmRleE9mLmNhbGwoY29ubmVjdGVkTm9kZXMsIGl0ZW0uZnJvbSwgdHJ1ZSkgPT09IC0xKSA7DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgcmV0dXJuVHlwZSA6J0FycmF5Jw0KICAgICAgICAgIH0pOw0KDQogICAgICAgICAgLy8gYWxsIGluIGRlZ3JlZSBub2RlcyBnZXQgdGhlaXIgb3duIGNvbG9yIGFuZCB0aGVpciBsYWJlbCBiYWNrDQogICAgICAgICAgZm9yIChpID0gMDsgaSA8IGVkZ2VzSGFyZFRvUmVhZC5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgZWRnZUFzSGFyZFRvUmVhZChlZGdlc0hhcmRUb1JlYWRbaV0sIGVsX2lkLmJ5c2VsZWN0aW9uQ29sb3IsIGVsX2lkLmhpZ2hsaWdodENvbG9yLCBpbnN0YW5jZS5uZXR3b3JrLCB0eXBlID0gImVkZ2UiKQ0KICAgICAgICAgIH0NCiAgICAgICAgICBlZGdlcy51cGRhdGUoZWRnZXNIYXJkVG9SZWFkKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgIG5vZGVzLnVwZGF0ZSh1cGRhdGVBcnJheSk7DQogICAgICAgICAgDQogICAgICAgICAgLy8gc2VsZWN0IGZvciBoaWdobGlnaHQNCiAgICAgICAgICBpZihlbF9pZC5oaWdobGlnaHQgJiYgeC5ub2RlcyAmJiBlbF9pZC5ieXNlbGVjdGlvbkhpZ2hsaWdodCl7DQogICAgICAgICAgICAgIG5laWdoYm91cmhvb2RIaWdobGlnaHQoY29ubmVjdGVkTm9kZXMsICJjbGljayIsIGVsX2lkLmhpZ2hsaWdodEFsZ29yaXRobSwgZmFsc2UpOw0KICAgICAgICAgICAgICBpbnN0YW5jZS5uZXR3b3JrLnNlbGVjdE5vZGVzKGNvbm5lY3RlZE5vZGVzKQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgZWxzZSBpZiAoZWxfaWQuc2VsZWN0QWN0aXZlID09PSB0cnVlKSB7DQogICAgICAgIC8vcmVzZXQgbm9kZXMNCiAgICAgICAgcmVzZXRBbGxOb2Rlcyhub2RlcywgdXBkYXRlLCBpbnN0YW5jZS5uZXR3b3JrLmdyb3Vwcywgb3B0aW9ucywgaW5zdGFuY2UubmV0d29yaykNCiAgICAgICAgZWxfaWQuc2VsZWN0QWN0aXZlID0gZmFsc2UNCiAgICAgIH0NCiAgICB9IA0KICANCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICAvL0hpZ2hsaWdodA0KICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIHZhciBpc19ob3ZlcmVkID0gZmFsc2U7DQogICAgdmFyIGlzX2NsaWNrZWQgPSBmYWxzZTsNCiAgICANCiAgICBmdW5jdGlvbiBuZWlnaGJvdXJob29kSGlnaGxpZ2h0KHBhcmFtcywgYWN0aW9uX3R5cGUsIGFsZ29yaXRobSwgcmVzZXRfc2VsZWN0ZWRCeSkgew0KDQogICAgICB2YXIgbm9kZXNfaW5fY2x1c3RlcnMgPSBpbnN0YW5jZS5uZXR3b3JrLmJvZHkubW9kdWxlcy5jbHVzdGVyaW5nLmNsdXN0ZXJlZE5vZGVzOw0KICAgICAgdmFyIGhhdmVfY2x1c3Rlcl9ub2RlcyA9IGZhbHNlOw0KICAgICAgaWYoT2JqZWN0LmtleXMobm9kZXNfaW5fY2x1c3RlcnMpLmxlbmd0aCA+IDApew0KICAgICAgICBoYXZlX2NsdXN0ZXJfbm9kZXMgPSB0cnVlOw0KICAgICAgICBub2Rlc19pbl9jbHVzdGVycyA9IE9iamVjdC5rZXlzKG5vZGVzX2luX2NsdXN0ZXJzKTsNCiAgICAgICAgZWRnZXNfaW5fY2x1c3RlcnMgPSBPYmplY3Qua2V5cyhpbnN0YW5jZS5uZXR3b3JrLmJvZHkubW9kdWxlcy5jbHVzdGVyaW5nLmNsdXN0ZXJlZEVkZ2VzKTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIG5vZGVzX2luX2NsdXN0ZXJzID0gW107DQogICAgICAgIGVkZ2VzX2luX2NsdXN0ZXJzID0gW107DQogICAgICB9DQogICAgICANCiAgICAgIHZhciBzZWxlY3ROb2RlOw0KICAgICAgLy8gZ2V0IG5vZGVzIGRhdGENCiAgICAgIHZhciBhbGxOb2RlcyA9IG5vZGVzLmdldCh7cmV0dXJuVHlwZToiT2JqZWN0In0pOw0KDQogICAgICAvLyBjbHVzdGVyDQogICAgICB2YXIgYXJyYXlfY2x1c3Rlcl9pZDsNCiAgICAgIA0KICAgICAgLy8gdXBkYXRlIA0KICAgICAgdmFyIHVwZGF0ZSA9ICEoZWxfaWQuaGlnaGxpZ2h0QWN0aXZlID09PSBmYWxzZSAmJiBwYXJhbXMubGVuZ3RoID09PSAwKSB8IChlbF9pZC5zZWxlY3RBY3RpdmUgPT09IHRydWUgJiYgcGFyYW1zLmxlbmd0aCA9PT0gMCk7DQoNCiAgICAgIGlmKCEoYWN0aW9uX3R5cGUgPT0gImhvdmVyIiAmJiBpc19jbGlja2VkKSl7DQogICAgICAgIA0KICAgICAgICAvLyBmaXJzdCByZXNldEVkZ2VzDQogICAgICAgIHJlc2V0QWxsRWRnZXMoZWRnZXMsIGVsX2lkLmhpZ2hsaWdodENvbG9yLCBlbF9pZC5ieXNlbGVjdGlvbkNvbG9yLCBpbnN0YW5jZS5uZXR3b3JrKTsNCg0KICAgICAgICBpZiAocGFyYW1zLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICB2YXIgaXNfY2x1c3RlciA9IGluc3RhbmNlLm5ldHdvcmsuaXNDbHVzdGVyKHBhcmFtc1swXSk7DQogICAgICAgICAgdmFyIHNlbGVjdGVkTm9kZTsNCiAgICAgICAgICANCiAgICAgICAgICBpZihpc19jbHVzdGVyKXsNCiAgICAgICAgICAgIHNlbGVjdGVkTm9kZSA9IGluc3RhbmNlLm5ldHdvcmsuZ2V0Tm9kZXNJbkNsdXN0ZXIocGFyYW1zWzBdKTsNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgc2VsZWN0ZWROb2RlID0gcGFyYW1zOw0KICAgICAgICAgIH0NCg0KICAgICAgICAgIHZhciB1cGRhdGVBcnJheSA9IFtdOw0KICAgICAgICAgIGlmKGVsX2lkLmlkc2VsZWN0aW9uKXsNCiAgICAgICAgICAgIHNlbGVjdE5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm9kZVNlbGVjdCcrZWwuaWQpOw0KICAgICAgICAgICAgaWYoaXNfY2x1c3RlciA9PT0gZmFsc2Upew0KICAgICAgICAgICAgICBpZih4Lmlkc2VsZWN0aW9uLnZhbHVlcyAhPT0gdW5kZWZpbmVkKXsNCiAgICAgICAgICAgICAgICBpZihpbmRleE9mLmNhbGwoeC5pZHNlbGVjdGlvbi52YWx1ZXMsIHNlbGVjdGVkTm9kZVswXSwgdHJ1ZSkgPiAtMSl7DQogICAgICAgICAgICAgICAgICBzZWxlY3ROb2RlLnZhbHVlID0gc2VsZWN0ZWROb2RlWzBdOw0KICAgICAgICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAgICAgc2VsZWN0Tm9kZS52YWx1ZSA9ICIiOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAgICAgc2VsZWN0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkTm9kZVswXTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBpZiAod2luZG93LlNoaW55KXsNCiAgICAgICAgICAgICAgICBjaGFuZ2VJbnB1dCgnc2VsZWN0ZWQnLCBzZWxlY3ROb2RlLnZhbHVlKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgICANCiAgICAgICAgICBlbF9pZC5oaWdobGlnaHRBY3RpdmUgPSB0cnVlOw0KICAgICAgICAgIHZhciBpLGo7DQogICAgICAgICAgdmFyIGRlZ3JlZXMgPSBlbF9pZC5kZWdyZWU7DQogICAgICAgICAgDQogICAgICAgICAgLy8gbWFyayBhbGwgbm9kZXMgYXMgaGFyZCB0byByZWFkLg0KICAgICAgICAgIGZvciAodmFyIG5vZGVJZCBpbiBpbnN0YW5jZS5uZXR3b3JrLmJvZHkubm9kZXMpIHsNCiAgICAgICAgICAgIGlmKGluc3RhbmNlLm5ldHdvcmsuaXNDbHVzdGVyKG5vZGVJZCkpew0KICAgICAgICAgICAgICBub2RlQXNIYXJkVG9SZWFkKGluc3RhbmNlLm5ldHdvcmsuYm9keS5ub2Rlc1tub2RlSWRdLCBpbnN0YW5jZS5uZXR3b3JrLmdyb3Vwcywgb3B0aW9ucywgZWxfaWQuaGlnaGxpZ2h0Q29sb3IsIGVsX2lkLmJ5c2VsZWN0aW9uQ29sb3IsIGluc3RhbmNlLm5ldHdvcmssICJjbHVzdGVyIik7DQogICAgICAgICAgICB9ZWxzZSB7DQogICAgICAgICAgICAgIHZhciB0bXBfbm9kZSA9IGFsbE5vZGVzW25vZGVJZF07DQogICAgICAgICAgICAgIGlmKHRtcF9ub2RlICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgICAgIG5vZGVBc0hhcmRUb1JlYWQodG1wX25vZGUsIGluc3RhbmNlLm5ldHdvcmsuZ3JvdXBzLCBvcHRpb25zLCBlbF9pZC5oaWdobGlnaHRDb2xvciwgZWxfaWQuYnlzZWxlY3Rpb25Db2xvciwgaW5zdGFuY2UubmV0d29yaywgIm5vZGUiKTsNCiAgICAgICAgICAgICAgICB0bXBfbm9kZS54ID0gdW5kZWZpbmVkOw0KICAgICAgICAgICAgICAgIHRtcF9ub2RlLnkgPSB1bmRlZmluZWQ7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogDQogICAgICAgICAgaWYoYWxnb3JpdGhtID09PSAiYWxsIil7DQogICAgICAgICAgICB2YXIgY29ubmVjdGVkTm9kZXM7DQogICAgICAgICAgICBpZihkZWdyZWVzID4gMCl7DQogICAgICAgICAgICAgIGNvbm5lY3RlZE5vZGVzID0gW107DQogICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBzZWxlY3RlZE5vZGUubGVuZ3RoOyBqKyspIHsNCiAgICAgICAgICAgICAgICBjb25uZWN0ZWROb2RlcyA9IGNvbm5lY3RlZE5vZGVzLmNvbmNhdChpbnN0YW5jZS5uZXR3b3JrLmdldENvbm5lY3RlZE5vZGVzKHNlbGVjdGVkTm9kZVtqXSwgdHJ1ZSkpOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIGNvbm5lY3RlZE5vZGVzID0gdW5pcXVlQXJyYXkoY29ubmVjdGVkTm9kZXMsIHRydWUsIGluc3RhbmNlLm5ldHdvcmspOw0KICAgICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAgIGNvbm5lY3RlZE5vZGVzID0gc2VsZWN0ZWROb2RlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICB2YXIgYWxsQ29ubmVjdGVkTm9kZXMgPSBbXTsNCiAgICAgICAgICAgIC8vIGdldCB0aGUgbm9kZXMgdG8gY29sb3INCiAgICAgICAgICAgIGlmKGRlZ3JlZXMgPj0gMil7DQogICAgICAgICAgICAgIGZvciAoaSA9IDI7IGkgPD0gZGVncmVlczsgaSsrKSB7DQogICAgICAgICAgICAgICAgdmFyIHByZXZpb3VzX2Nvbm5lY3RlZE5vZGVzID0gY29ubmVjdGVkTm9kZXM7DQogICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRsZW5ndGggPSBjb25uZWN0ZWROb2Rlcy5sZW5ndGg7DQogICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGN1cnJlbnRsZW5ndGg7IGorKykgew0KICAgICAgICAgICAgICAgICAgY29ubmVjdGVkTm9kZXMgPSB1bmlxdWVBcnJheShjb25uZWN0ZWROb2Rlcy5jb25jYXQoaW5zdGFuY2UubmV0d29yay5nZXRDb25uZWN0ZWROb2Rlcyhjb25uZWN0ZWROb2Rlc1tqXSkpLCB0cnVlLCBpbnN0YW5jZS5uZXR3b3JrKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKGNvbm5lY3RlZE5vZGVzLmxlbmd0aCA9PT0gcHJldmlvdXNfY29ubmVjdGVkTm9kZXMubGVuZ3RoKSB7IGJyZWFrOyB9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8vIG5vZGVzIHRvIGp1c3QgbGFiZWwNCiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBjb25uZWN0ZWROb2Rlcy5sZW5ndGg7IGorKykgew0KICAgICAgICAgICAgICAgIGFsbENvbm5lY3RlZE5vZGVzID0gYWxsQ29ubmVjdGVkTm9kZXMuY29uY2F0KGluc3RhbmNlLm5ldHdvcmsuZ2V0Q29ubmVjdGVkTm9kZXMoY29ubmVjdGVkTm9kZXNbal0pKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGFsbENvbm5lY3RlZE5vZGVzID0gdW5pcXVlQXJyYXkoYWxsQ29ubmVjdGVkTm9kZXMsIHRydWUsIGluc3RhbmNlLm5ldHdvcmspOw0KDQogICAgICAgICAgICBpZihlbF9pZC5oaWdobGlnaHRMYWJlbE9ubHkgPT09IHRydWUpew0KICAgICAgICAgICAgICAvLyBhbGwgaGlnaGVyIGRlZ3JlZSBub2RlcyBnZXQgYSBkaWZmZXJlbnQgY29sb3IgYW5kIHRoZWlyIGxhYmVsIGJhY2sNCiAgICAgICAgICAgICAgYXJyYXlfY2x1c3Rlcl9pZCA9IFtdOw0KICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYWxsQ29ubmVjdGVkTm9kZXMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICBpZiAoYWxsTm9kZXNbYWxsQ29ubmVjdGVkTm9kZXNbaV1dLmhpZGRlbkxhYmVsICE9PSB1bmRlZmluZWQpIHsNCiAgICAgICAgICAgICAgICAgIGFsbE5vZGVzW2FsbENvbm5lY3RlZE5vZGVzW2ldXS5sYWJlbCA9IGFsbE5vZGVzW2FsbENvbm5lY3RlZE5vZGVzW2ldXS5oaWRkZW5MYWJlbDsNCiAgICAgICAgICAgICAgICAgIGFsbE5vZGVzW2FsbENvbm5lY3RlZE5vZGVzW2ldXS5oaWRkZW5MYWJlbCA9IHVuZGVmaW5lZDsNCiAgICAgICAgICAgICAgICAgIGlmKGhhdmVfY2x1c3Rlcl9ub2Rlcyl7DQogICAgICAgICAgICAgICAgICAgIGlmKGluZGV4T2YuY2FsbChub2Rlc19pbl9jbHVzdGVycywgYWxsQ29ubmVjdGVkTm9kZXNbaV0sIHRydWUpID4gLTEpew0KICANCiAgICAgICAgICAgICAgICAgICAgICBhcnJheV9jbHVzdGVyX2lkID0gYXJyYXlfY2x1c3Rlcl9pZC5jb25jYXQoaW5zdGFuY2UubmV0d29yay5jbHVzdGVyaW5nLmZpbmROb2RlKGFsbENvbm5lY3RlZE5vZGVzW2ldKVswXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0NCiAgDQogICAgICAgICAgICAgIGlmKGFycmF5X2NsdXN0ZXJfaWQubGVuZ3RoID4gMCl7DQogICAgICAgICAgICAgICAgYXJyYXlfY2x1c3Rlcl9pZCA9IHVuaXF1ZUFycmF5KGFycmF5X2NsdXN0ZXJfaWQsIGZhbHNlLCBpbnN0YW5jZS5uZXR3b3JrKTsNCiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJyYXlfY2x1c3Rlcl9pZC5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAgICAgaW5zdGFuY2UubmV0d29yay5ib2R5Lm5vZGVzW2FycmF5X2NsdXN0ZXJfaWRbaV1dLnNldE9wdGlvbnMoe2xhYmVsIDogaW5zdGFuY2UubmV0d29yay5ib2R5Lm5vZGVzW2FycmF5X2NsdXN0ZXJfaWRbaV1dLm9wdGlvbnMuaGlkZGVuTGFiZWwsIGhpZGRlbkxhYmVsOnVuZGVmaW5lZH0pDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIGFsbCBpbiBkZWdyZWUgbm9kZXMgZ2V0IHRoZWlyIG93biBjb2xvciBhbmQgdGhlaXIgbGFiZWwgYmFjayArIG1haW4gbm9kZXMNCiAgICAgICAgICAgIGNvbm5lY3RlZE5vZGVzID0gY29ubmVjdGVkTm9kZXMuY29uY2F0KHNlbGVjdGVkTm9kZSk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmICh3aW5kb3cuU2hpbnkpew0KICAgICAgICAgICAgICBTaGlueS5vbklucHV0Q2hhbmdlKGVsLmlkICsgJ19oaWdobGlnaHRfY29sb3JfaWQnLCB1bmlxdWVTaGlueShjb25uZWN0ZWROb2RlcykpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYoZWxfaWQuaGlnaGxpZ2h0TGFiZWxPbmx5ID09PSB0cnVlKXsNCiAgICAgICAgICAgICAgaWYgKHdpbmRvdy5TaGlueSl7DQogICAgICAgICAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZShlbC5pZCArICdfaGlnaGxpZ2h0X2xhYmVsX2lkJywgYWxsQ29ubmVjdGVkTm9kZXMuZmlsdGVyKGZ1bmN0aW9uKHgpeyByZXR1cm4gIWNvbm5lY3RlZE5vZGVzLmluY2x1ZGVzKHgpfSkpOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9ICANCiAgIA0KICAgICAgICAgICAgYXJyYXlfY2x1c3Rlcl9pZCA9IFtdOw0KICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbm5lY3RlZE5vZGVzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgIHJlc2V0T25lTm9kZShhbGxOb2Rlc1tjb25uZWN0ZWROb2Rlc1tpXV0sIGluc3RhbmNlLm5ldHdvcmsuZ3JvdXBzLCBvcHRpb25zLCBpbnN0YW5jZS5uZXR3b3JrKTsNCiAgICAgICAgICAgICAgaWYoaGF2ZV9jbHVzdGVyX25vZGVzKXsNCiAgICAgICAgICAgICAgICBpZihpbmRleE9mLmNhbGwobm9kZXNfaW5fY2x1c3RlcnMsIGNvbm5lY3RlZE5vZGVzW2ldLCB0cnVlKSA+IC0xKXsNCiAgICAgICAgICAgICAgICAgIGFycmF5X2NsdXN0ZXJfaWQgPSBhcnJheV9jbHVzdGVyX2lkLmNvbmNhdChpbnN0YW5jZS5uZXR3b3JrLmNsdXN0ZXJpbmcuZmluZE5vZGUoY29ubmVjdGVkTm9kZXNbaV0pWzBdKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYoYXJyYXlfY2x1c3Rlcl9pZC5sZW5ndGggPiAwKXsNCiAgICAgICAgICAgICAgYXJyYXlfY2x1c3Rlcl9pZCA9IHVuaXF1ZUFycmF5KGFycmF5X2NsdXN0ZXJfaWQsIGZhbHNlLCBpbnN0YW5jZS5uZXR3b3JrKTsNCiAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGFycmF5X2NsdXN0ZXJfaWQubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICByZXNldE9uZUNsdXN0ZXIoaW5zdGFuY2UubmV0d29yay5ib2R5Lm5vZGVzW2FycmF5X2NsdXN0ZXJfaWRbaV1dLCBpbnN0YW5jZS5uZXR3b3JrLmdyb3Vwcywgb3B0aW9ucywgaW5zdGFuY2UubmV0d29yayk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgLy8gc2V0IHNvbWUgZWRnZXMgYXMgaGFyZCB0byByZWFkDQogICAgICAgICAgICB2YXIgZWRnZXNIYXJkVG9SZWFkID0gZWRnZXMuZ2V0KHsNCiAgICAgICAgICAgICAgZmllbGRzOiBbJ2lkJywgJ2NvbG9yJywgJ2hpZGRlbkNvbG9yJywgJ2hpZGRlbkxhYmVsJywgJ2xhYmVsJ10sDQogICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKGl0ZW0pIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gKChpbmRleE9mLmNhbGwoY29ubmVjdGVkTm9kZXMsIGl0ZW0uZnJvbSwgdHJ1ZSkgPT09IC0xKSkgOw0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICByZXR1cm5UeXBlIDonQXJyYXknDQogICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgLy8gYWxsIGluIGRlZ3JlZSBub2RlcyBnZXQgdGhlaXIgb3duIGNvbG9yIGFuZCB0aGVpciBsYWJlbCBiYWNrDQogICAgICAgICAgICBhcnJheV9jbHVzdGVyX2lkID0gW107DQogICAgICAgICAgICB2YXIgdG1wX2NsdXN0ZXJfaWQ7DQogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZWRnZXNIYXJkVG9SZWFkLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgIGVkZ2VBc0hhcmRUb1JlYWQoZWRnZXNIYXJkVG9SZWFkW2ldLCBlbF9pZC5oaWdobGlnaHRDb2xvciwgZWxfaWQuYnlzZWxlY3Rpb25Db2xvciwgaW5zdGFuY2UubmV0d29yaywgdHlwZSA9ICJlZGdlIikNCiAgICAgICAgICAgICAgaWYoaGF2ZV9jbHVzdGVyX25vZGVzKXsNCiAgICAgICAgICAgICAgICBpZihpbmRleE9mLmNhbGwoZWRnZXNfaW5fY2x1c3RlcnMsIGVkZ2VzSGFyZFRvUmVhZFtpXS5pZCwgdHJ1ZSkgPiAtMSl7DQogICAgICAgICAgICAgICAgICB0bXBfY2x1c3Rlcl9pZCA9IGluc3RhbmNlLm5ldHdvcmsuY2x1c3RlcmluZy5nZXRDbHVzdGVyZWRFZGdlcyhlZGdlc0hhcmRUb1JlYWRbaV0uaWQpOw0KICAgICAgICAgICAgICAgICAgaWYodG1wX2NsdXN0ZXJfaWQubGVuZ3RoID4gMSl7DQogICAgICAgICAgICAgICAgICAgIGFycmF5X2NsdXN0ZXJfaWQgPSBhcnJheV9jbHVzdGVyX2lkLmNvbmNhdCh0bXBfY2x1c3Rlcl9pZFswXSk7DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmKGFycmF5X2NsdXN0ZXJfaWQubGVuZ3RoID4gMCl7DQogICAgICAgICAgICAgIGFycmF5X2NsdXN0ZXJfaWQgPSB1bmlxdWVBcnJheShhcnJheV9jbHVzdGVyX2lkLCBmYWxzZSwgaW5zdGFuY2UubmV0d29yayk7DQogICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnJheV9jbHVzdGVyX2lkLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgZWRnZUFzSGFyZFRvUmVhZChpbnN0YW5jZS5uZXR3b3JrLmJvZHkuZWRnZXNbYXJyYXlfY2x1c3Rlcl9pZFtpXV0ub3B0aW9ucywgZWxfaWQuaGlnaGxpZ2h0Q29sb3IsIGVsX2lkLmJ5c2VsZWN0aW9uQ29sb3IsIGluc3RhbmNlLm5ldHdvcmssIHR5cGUgPSAiY2x1c3RlciIpDQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVkZ2VzLnVwZGF0ZShlZGdlc0hhcmRUb1JlYWQpOw0KICAgICAgICAgIH0gZWxzZSBpZihhbGdvcml0aG0gPT09ICJoaWVyYXJjaGljYWwiKXsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgdmFyIGRlZ3JlZV9mcm9tID0gZGVncmVlcy5mcm9tOw0KICAgICAgICAgICAgdmFyIGRlZ3JlZV90byA9IGRlZ3JlZXMudG87DQogICAgICAgICAgICBkZWdyZWVzID0gTWF0aC5tYXgoZGVncmVlX2Zyb20sIGRlZ3JlZV90byk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIHZhciBhbGxDb25uZWN0ZWROb2RlcyA9IFtdOw0KICAgICAgICAgICAgdmFyIGN1cnJlbnRDb25uZWN0ZWRGcm9tTm9kZXMgPSBbXTsNCiAgICAgICAgICAgIHZhciBjdXJyZW50Q29ubmVjdGVkVG9Ob2RlcyA9IFtdOw0KICAgICAgICAgICAgdmFyIGNvbm5lY3RlZEZyb21Ob2RlcyA9IFtdOw0KICAgICAgICAgICAgdmFyIGNvbm5lY3RlZFRvTm9kZXMgPSBbXTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYoZGVncmVlX2Zyb20gPiAwKXsNCiAgICAgICAgICAgICAgY29ubmVjdGVkRnJvbU5vZGVzID0gZWRnZXMuZ2V0KHsNCiAgICAgICAgICAgICAgICBmaWVsZHM6IFsnZnJvbSddLA0KICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKGl0ZW0pIHsNCiAgICAgICAgICAgICAgICAgIHJldHVybiAoKGluZGV4T2YuY2FsbChzZWxlY3RlZE5vZGUsIGl0ZW0udG8sIHRydWUpICE9PSAtMSkpIDsNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHJldHVyblR5cGUgOidBcnJheScNCiAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmKGRlZ3JlZV90byA+IDApew0KICAgICAgICAgICAgICBjb25uZWN0ZWRUb05vZGVzID0gZWRnZXMuZ2V0KHsNCiAgICAgICAgICAgICAgICBmaWVsZHM6IFsndG8nXSwNCiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uIChpdGVtKSB7DQogICAgICAgICAgICAgICAgICByZXR1cm4gKChpbmRleE9mLmNhbGwoc2VsZWN0ZWROb2RlLCBpdGVtLmZyb20sIHRydWUpICE9PSAtMSkpIDsNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHJldHVyblR5cGUgOidBcnJheScNCiAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgY29ubmVjdGVkRnJvbU5vZGVzLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICAgICAgYWxsQ29ubmVjdGVkTm9kZXMgPSBhbGxDb25uZWN0ZWROb2Rlcy5jb25jYXQoY29ubmVjdGVkRnJvbU5vZGVzW2pdLmZyb20pOw0KICAgICAgICAgICAgICAgIGN1cnJlbnRDb25uZWN0ZWRGcm9tTm9kZXMgPSBjdXJyZW50Q29ubmVjdGVkRnJvbU5vZGVzLmNvbmNhdChjb25uZWN0ZWRGcm9tTm9kZXNbal0uZnJvbSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBjb25uZWN0ZWRUb05vZGVzLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICAgICAgYWxsQ29ubmVjdGVkTm9kZXMgPSBhbGxDb25uZWN0ZWROb2Rlcy5jb25jYXQoY29ubmVjdGVkVG9Ob2Rlc1tqXS50byk7DQogICAgICAgICAgICAgICAgY3VycmVudENvbm5lY3RlZFRvTm9kZXMgPSBjdXJyZW50Q29ubmVjdGVkVG9Ob2Rlcy5jb25jYXQoY29ubmVjdGVkVG9Ob2Rlc1tqXS50byk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIHZhciBnb19mcm9tOw0KICAgICAgICAgICAgdmFyIGdvX3RvOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYoZGVncmVlcyA+IDEpew0KICAgICAgICAgICAgICBmb3IgKGkgPSAyOyBpIDw9IGRlZ3JlZXM7IGkrKykgew0KICAgICAgICAgICAgICAgIGdvX2Zyb20gPSBmYWxzZTsNCiAgICAgICAgICAgICAgICBnb190byA9IGZhbHNlOw0KICAgICAgICAgICAgICAgIGlmKGN1cnJlbnRDb25uZWN0ZWRGcm9tTm9kZXMubGVuZ3RoID4gMCAmJiBpIDw9IGRlZ3JlZV9mcm9tKXsNCiAgICAgICAgICAgICAgICAgIGNvbm5lY3RlZEZyb21Ob2RlcyA9IGVkZ2VzLmdldCh7DQogICAgICAgICAgICAgICAgICAgIGZpZWxkczogWydmcm9tJ10sDQogICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKGl0ZW0pIHsNCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXhPZi5jYWxsKGN1cnJlbnRDb25uZWN0ZWRGcm9tTm9kZXMsIGl0ZW0udG8sIHRydWUpID4gLTE7DQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGUgOidBcnJheScNCiAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgZ29fZnJvbSA9IHRydWU7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYoY3VycmVudENvbm5lY3RlZFRvTm9kZXMubGVuZ3RoID4gMCAmJiBpIDw9IGRlZ3JlZV90byl7DQogICAgICAgICAgICAgICAgICBjb25uZWN0ZWRUb05vZGVzID0gZWRnZXMuZ2V0KHsNCiAgICAgICAgICAgICAgICAgICAgZmllbGRzOiBbJ3RvJ10sDQogICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKGl0ZW0pIHsNCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXhPZi5jYWxsKGN1cnJlbnRDb25uZWN0ZWRUb05vZGVzLCBpdGVtLmZyb20sIHRydWUpID4gLTE7DQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGUgOidBcnJheScNCiAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgZ29fdG8gPSB0cnVlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmKGdvX2Zyb20gPT09IHRydWUpew0KICAgICAgICAgICAgICAgICAgY3VycmVudENvbm5lY3RlZEZyb21Ob2RlcyA9IFtdOw0KICAgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvbm5lY3RlZEZyb21Ob2Rlcy5sZW5ndGg7IGorKykgew0KICAgICAgICAgICAgICAgICAgICBhbGxDb25uZWN0ZWROb2RlcyA9IGFsbENvbm5lY3RlZE5vZGVzLmNvbmNhdChjb25uZWN0ZWRGcm9tTm9kZXNbal0uZnJvbSk7DQogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb25uZWN0ZWRGcm9tTm9kZXMgPSBjdXJyZW50Q29ubmVjdGVkRnJvbU5vZGVzLmNvbmNhdChjb25uZWN0ZWRGcm9tTm9kZXNbal0uZnJvbSk7DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYoZ29fdG8gPT09IHRydWUpew0KICAgICAgICAgICAgICAgICAgY3VycmVudENvbm5lY3RlZFRvTm9kZXMgPSBbXTsNCiAgICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBjb25uZWN0ZWRUb05vZGVzLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICAgICAgICAgIGFsbENvbm5lY3RlZE5vZGVzID0gYWxsQ29ubmVjdGVkTm9kZXMuY29uY2F0KGNvbm5lY3RlZFRvTm9kZXNbal0udG8pOw0KICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29ubmVjdGVkVG9Ob2RlcyA9IGN1cnJlbnRDb25uZWN0ZWRUb05vZGVzLmNvbmNhdChjb25uZWN0ZWRUb05vZGVzW2pdLnRvKTsNCiAgICAgICAgICAgICAgICAgIH0gDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGlmIChnb19mcm9tID09PSBmYWxzZSAmJiAgZ29fdG8gPT09IGZhbHNlKSB7IGJyZWFrO30NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICBhbGxDb25uZWN0ZWROb2RlcyA9IHVuaXF1ZUFycmF5KGFsbENvbm5lY3RlZE5vZGVzLCB0cnVlLCBpbnN0YW5jZS5uZXR3b3JrKS5jb25jYXQoc2VsZWN0ZWROb2RlKTsNCg0KICAgICAgICAgICAgdmFyIG5vZGVzV2l0aExhYmVsID0gW107DQogICAgICAgICAgICBpZihlbF9pZC5oaWdobGlnaHRMYWJlbE9ubHkgPT09IHRydWUpew0KICAgICAgICAgICAgICBpZihkZWdyZWVzID4gMCl7DQogICAgICAgICAgICAgICAgLy8gbm9kZXMgdG8ganVzdCBsYWJlbA0KICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBjdXJyZW50Q29ubmVjdGVkVG9Ob2Rlcy5sZW5ndGg7IGorKykgew0KICAgICAgICAgICAgICAgICAgICBub2Rlc1dpdGhMYWJlbCA9IG5vZGVzV2l0aExhYmVsLmNvbmNhdChpbnN0YW5jZS5uZXR3b3JrLmdldENvbm5lY3RlZE5vZGVzKGN1cnJlbnRDb25uZWN0ZWRUb05vZGVzW2pdKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBjdXJyZW50Q29ubmVjdGVkRnJvbU5vZGVzLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICAgICAgICAgIG5vZGVzV2l0aExhYmVsID0gbm9kZXNXaXRoTGFiZWwuY29uY2F0KGluc3RhbmNlLm5ldHdvcmsuZ2V0Q29ubmVjdGVkTm9kZXMoY3VycmVudENvbm5lY3RlZEZyb21Ob2Rlc1tqXSkpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBub2Rlc1dpdGhMYWJlbCA9IHVuaXF1ZUFycmF5KG5vZGVzV2l0aExhYmVsLCB0cnVlLCBpbnN0YW5jZS5uZXR3b3JrKTsNCiAgICAgICAgICAgICAgfSBlbHNlew0KICAgICAgICAgICAgICAgIG5vZGVzV2l0aExhYmVsID0gY3VycmVudENvbm5lY3RlZFRvTm9kZXM7DQogICAgICAgICAgICAgICAgbm9kZXNXaXRoTGFiZWwgPSBub2Rlc1dpdGhMYWJlbC5jb25jYXQoY3VycmVudENvbm5lY3RlZEZyb21Ob2Rlcyk7DQogICAgICAgICAgICAgICAgbm9kZXNXaXRoTGFiZWwgPSB1bmlxdWVBcnJheShub2Rlc1dpdGhMYWJlbCwgdHJ1ZSwgaW5zdGFuY2UubmV0d29yayk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8vIGFsbCBoaWdoZXIgZGVncmVlIG5vZGVzIGdldCBhIGRpZmZlcmVudCBjb2xvciBhbmQgdGhlaXIgbGFiZWwgYmFjaw0KICAgICAgICAgICAgYXJyYXlfY2x1c3Rlcl9pZCA9IFtdOw0KICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5vZGVzV2l0aExhYmVsLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgIGlmIChhbGxOb2Rlc1tub2Rlc1dpdGhMYWJlbFtpXV0uaGlkZGVuTGFiZWwgIT09IHVuZGVmaW5lZCkgew0KICAgICAgICAgICAgICAgIGFsbE5vZGVzW25vZGVzV2l0aExhYmVsW2ldXS5sYWJlbCA9IGFsbE5vZGVzW25vZGVzV2l0aExhYmVsW2ldXS5oaWRkZW5MYWJlbDsNCiAgICAgICAgICAgICAgICBhbGxOb2Rlc1tub2Rlc1dpdGhMYWJlbFtpXV0uaGlkZGVuTGFiZWwgPSB1bmRlZmluZWQ7DQogICAgICAgICAgICAgICAgaWYoaGF2ZV9jbHVzdGVyX25vZGVzKXsNCiAgICAgICAgICAgICAgICAgIGlmKGluZGV4T2YuY2FsbChub2Rlc19pbl9jbHVzdGVycywgbm9kZXNXaXRoTGFiZWxbaV0sIHRydWUpID4gLTEpew0KICAgICAgICAgICAgICAgICAgICBhcnJheV9jbHVzdGVyX2lkID0gYXJyYXlfY2x1c3Rlcl9pZC5jb25jYXQoaW5zdGFuY2UubmV0d29yay5jbHVzdGVyaW5nLmZpbmROb2RlKG5vZGVzV2l0aExhYmVsW2ldKVswXSk7DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmKGFycmF5X2NsdXN0ZXJfaWQubGVuZ3RoID4gMCl7DQogICAgICAgICAgICAgIGFycmF5X2NsdXN0ZXJfaWQgPSB1bmlxdWVBcnJheShhcnJheV9jbHVzdGVyX2lkLCBmYWxzZSwgaW5zdGFuY2UubmV0d29yayk7DQogICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnJheV9jbHVzdGVyX2lkLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgaW5zdGFuY2UubmV0d29yay5ib2R5Lm5vZGVzW2FycmF5X2NsdXN0ZXJfaWRbaV1dLnNldE9wdGlvbnMoe2xhYmVsIDogaW5zdGFuY2UubmV0d29yay5ib2R5Lm5vZGVzW2FycmF5X2NsdXN0ZXJfaWRbaV1dLm9wdGlvbnMuaGlkZGVuTGFiZWwsIGhpZGRlbkxhYmVsOnVuZGVmaW5lZH0pDQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gYWxsIGluIGRlZ3JlZSBub2RlcyBnZXQgdGhlaXIgb3duIGNvbG9yIGFuZCB0aGVpciBsYWJlbCBiYWNrDQogICAgICAgICAgICBhcnJheV9jbHVzdGVyX2lkID0gW107DQogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYWxsQ29ubmVjdGVkTm9kZXMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgcmVzZXRPbmVOb2RlKGFsbE5vZGVzW2FsbENvbm5lY3RlZE5vZGVzW2ldXSwgaW5zdGFuY2UubmV0d29yay5ncm91cHMsIG9wdGlvbnMsIGluc3RhbmNlLm5ldHdvcmspOw0KICAgICAgICAgICAgICBpZihoYXZlX2NsdXN0ZXJfbm9kZXMpew0KICAgICAgICAgICAgICAgIGlmKGluZGV4T2YuY2FsbChub2Rlc19pbl9jbHVzdGVycywgYWxsQ29ubmVjdGVkTm9kZXNbaV0sIHRydWUpID4gLTEpew0KICAgICAgICAgICAgICAgICAgYXJyYXlfY2x1c3Rlcl9pZCA9IGFycmF5X2NsdXN0ZXJfaWQuY29uY2F0KGluc3RhbmNlLm5ldHdvcmsuY2x1c3RlcmluZy5maW5kTm9kZShhbGxDb25uZWN0ZWROb2Rlc1tpXSlbMF0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZihhcnJheV9jbHVzdGVyX2lkLmxlbmd0aCA+IDApew0KICAgICAgICAgICAgICBhcnJheV9jbHVzdGVyX2lkID0gdW5pcXVlQXJyYXkoYXJyYXlfY2x1c3Rlcl9pZCwgZmFsc2UsIGluc3RhbmNlLm5ldHdvcmspOw0KICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJyYXlfY2x1c3Rlcl9pZC5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAgICByZXNldE9uZUNsdXN0ZXIoaW5zdGFuY2UubmV0d29yay5ib2R5Lm5vZGVzW2FycmF5X2NsdXN0ZXJfaWRbaV1dLCBpbnN0YW5jZS5uZXR3b3JrLmdyb3Vwcywgb3B0aW9ucywgaW5zdGFuY2UubmV0d29yayk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICANCiAgICAgICAgICAgIGlmICh3aW5kb3cuU2hpbnkpeyANCiAgICAgICAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZShlbC5pZCArICdfaGlnaGxpZ2h0X2NvbG9yX2lkJywgdW5pcXVlU2hpbnkoYWxsQ29ubmVjdGVkTm9kZXMpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmKGVsX2lkLmhpZ2hsaWdodExhYmVsT25seSA9PT0gdHJ1ZSl7DQogICAgICAgICAgICAgIGlmICh3aW5kb3cuU2hpbnkpew0KICAgICAgICAgICAgICAgIFNoaW55Lm9uSW5wdXRDaGFuZ2UoZWwuaWQgKyAnX2hpZ2hsaWdodF9sYWJlbF9pZCcsIG5vZGVzV2l0aExhYmVsLmZpbHRlcihmdW5jdGlvbih4KSB7cmV0dXJuICFhbGxDb25uZWN0ZWROb2Rlcy5pbmNsdWRlcyh4KX0pKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIC8vIHNldCBzb21lIGVkZ2VzIGFzIGhhcmQgdG8gcmVhZA0KICAgICAgICAgICAgdmFyIGVkZ2VzSGFyZFRvUmVhZCA9IGVkZ2VzLmdldCh7DQogICAgICAgICAgICAgIGZpZWxkczogWydpZCcsICdjb2xvcicsICdoaWRkZW5Db2xvcicsICdoaWRkZW5MYWJlbCcsICdsYWJlbCddLA0KICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uIChpdGVtKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICgoaW5kZXhPZi5jYWxsKGFsbENvbm5lY3RlZE5vZGVzLCBpdGVtLmZyb20sIHRydWUpID09PSAtMSkgIHx8IChpbmRleE9mLmNhbGwoYWxsQ29ubmVjdGVkTm9kZXMsIGl0ZW0udG8sIHRydWUpID09PSAtMSkpIDsNCiAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgcmV0dXJuVHlwZSA6J0FycmF5Jw0KICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgIGFycmF5X2NsdXN0ZXJfaWQgPSBbXTsNCiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBlZGdlc0hhcmRUb1JlYWQubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgZWRnZUFzSGFyZFRvUmVhZChlZGdlc0hhcmRUb1JlYWRbaV0sIGVsX2lkLmhpZ2hsaWdodENvbG9yLCBlbF9pZC5ieXNlbGVjdGlvbkNvbG9yLCBpbnN0YW5jZS5uZXR3b3JrLCB0eXBlID0gImVkZ2UiKQ0KICAgICAgICAgICAgICBpZihoYXZlX2NsdXN0ZXJfbm9kZXMpew0KICAgICAgICAgICAgICAgIGlmKGluZGV4T2YuY2FsbChlZGdlc19pbl9jbHVzdGVycywgZWRnZXNIYXJkVG9SZWFkW2ldLmlkLCB0cnVlKSA+IC0xKXsNCiAgICAgICAgICAgICAgICAgIHZhciB0bXBfY2x1c3Rlcl9pZCA9IGluc3RhbmNlLm5ldHdvcmsuY2x1c3RlcmluZy5nZXRDbHVzdGVyZWRFZGdlcyhlZGdlc0hhcmRUb1JlYWRbaV0uaWQpOw0KICAgICAgICAgICAgICAgICAgaWYodG1wX2NsdXN0ZXJfaWQubGVuZ3RoID4gMSl7DQogICAgICAgICAgICAgICAgICAgIGFycmF5X2NsdXN0ZXJfaWQgPSBhcnJheV9jbHVzdGVyX2lkLmNvbmNhdCh0bXBfY2x1c3Rlcl9pZFswXSk7DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmKGFycmF5X2NsdXN0ZXJfaWQubGVuZ3RoID4gMCl7DQogICAgICAgICAgICAgIGFycmF5X2NsdXN0ZXJfaWQgPSB1bmlxdWVBcnJheShhcnJheV9jbHVzdGVyX2lkLCBmYWxzZSwgaW5zdGFuY2UubmV0d29yayk7DQogICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnJheV9jbHVzdGVyX2lkLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgIGVkZ2VBc0hhcmRUb1JlYWQoaW5zdGFuY2UubmV0d29yay5ib2R5LmVkZ2VzW2FycmF5X2NsdXN0ZXJfaWRbaV1dLm9wdGlvbnMsIGVsX2lkLmhpZ2hsaWdodENvbG9yLCBlbF9pZC5ieXNlbGVjdGlvbkNvbG9yLCBpbnN0YW5jZS5uZXR3b3JrLCB0eXBlID0gImNsdXN0ZXIiKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICBlZGdlcy51cGRhdGUoZWRnZXNIYXJkVG9SZWFkKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgIH0NCg0KICAgICAgICAgIGlmKHVwZGF0ZSl7DQogICAgICAgICAgICBpZighKGFjdGlvbl90eXBlID09ICJob3ZlciIpKXsNCiAgICAgICAgICAgICAgIGlzX2NsaWNrZWQgPSB0cnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLy8gdHJhbnNmb3JtIHRoZSBvYmplY3QgaW50byBhbiBhcnJheQ0KICAgICAgICAgICAgdmFyIHVwZGF0ZUFycmF5ID0gW107DQogICAgICAgICAgICBmb3IgKG5vZGVJZCBpbiBhbGxOb2Rlcykgew0KICAgICAgICAgICAgICBpZiAoYWxsTm9kZXMuaGFzT3duUHJvcGVydHkobm9kZUlkKSkgew0KICAgICAgICAgICAgICAgIHVwZGF0ZUFycmF5LnB1c2goYWxsTm9kZXNbbm9kZUlkXSk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIG5vZGVzLnVwZGF0ZSh1cGRhdGVBcnJheSk7DQogICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICBpc19jbGlja2VkID0gZmFsc2U7DQogICAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlmIChlbF9pZC5oaWdobGlnaHRBY3RpdmUgPT09IHRydWUgfCBlbF9pZC5zZWxlY3RBY3RpdmUgPT09IHRydWUpIHsNCiAgICAgICAgICAvLyByZXNldCBub2RlU2VsZWN0IGxpc3QgaWYgYWN0aXZlZA0KICAgICAgICAgIGlmKGVsX2lkLmlkc2VsZWN0aW9uKXsNCiAgICAgICAgICAgIHJlc2V0TGlzdCgibm9kZVNlbGVjdCIsIGVsLmlkLCAnc2VsZWN0ZWQnKTsNCiAgICAgICAgICB9DQogICAgICAgICAgLy9yZXNldCBub2Rlcw0KICAgICAgICAgIHJlc2V0QWxsTm9kZXMobm9kZXMsIHVwZGF0ZSwgaW5zdGFuY2UubmV0d29yay5ncm91cHMsIG9wdGlvbnMsIGluc3RhbmNlLm5ldHdvcmspDQogICAgICAgICAgZWxfaWQuaGlnaGxpZ2h0QWN0aXZlID0gZmFsc2U7DQogICAgICAgICAgaXNfY2xpY2tlZCA9IGZhbHNlOw0KICAgICAgICAgIA0KICAgICAgICAgIGlmICh3aW5kb3cuU2hpbnkpew0KICAgICAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZShlbC5pZCArICdfaGlnaGxpZ2h0X2xhYmVsX2lkJywgbnVsbCkNCiAgICAgICAgICAgIFNoaW55Lm9uSW5wdXRDaGFuZ2UoZWwuaWQgKyAnX2hpZ2hsaWdodF9jb2xvcl9pZCcsIG51bGwpDQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgICAvLyByZXNldCBzZWxlY3RlZEJ5IGxpc3QgaWYgYWN0aXZlZA0KICAgICAgaWYoZWxfaWQuYnlzZWxlY3Rpb24gJiYgcmVzZXRfc2VsZWN0ZWRCeSl7DQogICAgICAgIHJlc2V0TGlzdCgic2VsZWN0ZWRCeSIsIGVsLmlkLCAnc2VsZWN0ZWRCeScpOw0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBmdW5jdGlvbiBvbkNsaWNrSURTZWxlY3Rpb24oc2VsZWN0ZWRJdGVtcykgew0KICAgICAgdmFyIHNlbGVjdE5vZGU7DQogICAgICBpZihlbF9pZC5pZHNlbGVjdGlvbil7DQogICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zLm5vZGVzLmxlbmd0aCAhPT0gMCkgew0KICAgICAgICAgIHNlbGVjdE5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm9kZVNlbGVjdCcrZWwuaWQpOw0KICAgICAgICAgIGlmKHguaWRzZWxlY3Rpb24udmFsdWVzICE9PSB1bmRlZmluZWQpew0KICAgICAgICAgICAgaWYoaW5kZXhPZi5jYWxsKHguaWRzZWxlY3Rpb24udmFsdWVzLCBzZWxlY3RlZEl0ZW1zLm5vZGVzWzBdLCB0cnVlKSA+IC0xKXsNCiAgICAgICAgICAgICAgc2VsZWN0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkSXRlbXMubm9kZXM7DQogICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgc2VsZWN0Tm9kZS52YWx1ZSA9ICIiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgc2VsZWN0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkSXRlbXMubm9kZXM7DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmICh3aW5kb3cuU2hpbnkpew0KICAgICAgICAgICAgY2hhbmdlSW5wdXQoJ3NlbGVjdGVkJywgc2VsZWN0Tm9kZS52YWx1ZSk7DQogICAgICAgICAgfQ0KICAgICAgICB9ZWxzZXsNCiAgICAgICAgICByZXNldExpc3QoIm5vZGVTZWxlY3QiLCBlbC5pZCwgJ3NlbGVjdGVkJyk7DQogICAgICAgIH0gDQogICAgICB9DQogICAgICBpZihlbF9pZC5ieXNlbGVjdGlvbil7DQogICAgICAgIC8vIHJlc2V0IHNlbGVjdGVkQnkgbGlzdCBpZiBhY3RpdmVkDQogICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zLm5vZGVzLmxlbmd0aCA9PT0gMCkgew0KICAgICAgICAgIHJlc2V0TGlzdCgic2VsZWN0ZWRCeSIsIGVsLmlkLCAnc2VsZWN0ZWRCeScpOw0KICAgICAgICAgIHNlbGVjdGVkSGlnaGxpZ2h0KCIiKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICAvLyBzaGFyZWQgY2xpY2sgZnVuY3Rpb24gKHNlbGVjdGVkTm9kZXMpDQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYXBoIitlbC5pZCkubXljbGljayA9IGZ1bmN0aW9uKHBhcmFtcyl7DQogICAgICAgIGlmKGVsX2lkLmhpZ2hsaWdodCAmJiB4Lm5vZGVzKXsNCiAgICAgICAgICBuZWlnaGJvdXJob29kSGlnaGxpZ2h0KHBhcmFtcy5ub2RlcywgImNsaWNrIiwgZWxfaWQuaGlnaGxpZ2h0QWxnb3JpdGhtLCB0cnVlKTsNCiAgICAgICAgfWVsc2UgaWYoKGVsX2lkLmlkc2VsZWN0aW9uIHx8IGVsX2lkLmJ5c2VsZWN0aW9uKSAmJiB4Lm5vZGVzKXsNCiAgICAgICAgICBvbkNsaWNrSURTZWxlY3Rpb24ocGFyYW1zKQ0KICAgICAgICB9DQogICAgfTsNCiAgICANCiAgICAvLyBTZXQgZXZlbnQgaW4gcmVsYXRpb24gd2l0aCBoaWdobGlnaHROZWFyZXN0ICAgICAgDQogICAgaW5zdGFuY2UubmV0d29yay5vbigiY2xpY2siLCBmdW5jdGlvbihwYXJhbXMpew0KICAgICAgICBpZihlbF9pZC5oaWdobGlnaHQgJiYgeC5ub2Rlcyl7DQogICAgICAgICAgbmVpZ2hib3VyaG9vZEhpZ2hsaWdodChwYXJhbXMubm9kZXMsICJjbGljayIsIGVsX2lkLmhpZ2hsaWdodEFsZ29yaXRobSwgdHJ1ZSk7DQogICAgICAgIH1lbHNlIGlmKChlbF9pZC5pZHNlbGVjdGlvbiB8fCBlbF9pZC5ieXNlbGVjdGlvbikgJiYgeC5ub2Rlcyl7DQogICAgICAgICAgb25DbGlja0lEU2VsZWN0aW9uKHBhcmFtcykNCiAgICAgICAgfSANCiAgICB9KTsNCiAgICANCiAgICBpbnN0YW5jZS5uZXR3b3JrLm9uKCJob3Zlck5vZGUiLCBmdW5jdGlvbihwYXJhbXMpew0KICAgICAgaWYoZWxfaWQuaG92ZXJOZWFyZXN0ICYmIHgubm9kZXMpew0KICAgICAgICBuZWlnaGJvdXJob29kSGlnaGxpZ2h0KFtwYXJhbXMubm9kZV0sICJob3ZlciIsIGVsX2lkLmhpZ2hsaWdodEFsZ29yaXRobSwgdHJ1ZSk7DQogICAgICB9IA0KICAgIH0pOw0KDQogICAgaW5zdGFuY2UubmV0d29yay5vbigiYmx1ck5vZGUiLCBmdW5jdGlvbihwYXJhbXMpew0KICAgICAgaWYoZWxfaWQuaG92ZXJOZWFyZXN0ICYmIHgubm9kZXMpew0KICAgICAgICBuZWlnaGJvdXJob29kSGlnaGxpZ2h0KFtdLCAiaG92ZXIiLCBlbF9pZC5oaWdobGlnaHRBbGdvcml0aG0sIHRydWUpOw0KICAgICAgfSAgICAgIA0KICAgIH0pOw0KICAgIA0KICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIC8vY29sbGFwc2UNCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICBpbnN0YW5jZS5uZXR3b3JrLm9uKCJkb3VibGVDbGljayIsIGZ1bmN0aW9uKHBhcmFtcyl7DQogICAgICBpZihlbF9pZC5jb2xsYXBzZSl7DQogICAgICAgIGNvbGxhcHNlZE5ldHdvcmsocGFyYW1zLm5vZGVzLCBlbF9pZC5jb2xsYXBzZUZpdCwgZWxfaWQuY29sbGFwc2VSZXNldEhpZ2hsaWdodCwgDQogICAgICAgICAgZWxfaWQuY2x1c3Rlck9wdGlvbnMsIGVsX2lkLmNvbGxhcHNlTGFiZWxTdWZmaXgsDQogICAgICAgICAgZWxfaWQudHJlZSwgaW5zdGFuY2UubmV0d29yaywgZWwuaWQpIA0KICAgICAgfQ0KICAgIH0pOyANCiAgICANCiAgICBpZihlbF9pZC5jb2xsYXBzZSl7DQogICAgICBpbnN0YW5jZS5uZXR3b3JrLm9uKCJkb3VibGVDbGljayIsIG5ldHdvcmtPcGVuQ2x1c3Rlcik7DQogICAgfQ0KICAgIA0KICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIC8vZm9vdGVyDQogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgdmFyIGRpdl9mb290ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCiAgICBkaXZfZm9vdGVyLmlkID0gImZvb3RlciIrZWwuaWQ7DQogICAgZGl2X2Zvb3Rlci5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgICdmb250LWZhbWlseTpHZW9yZ2lhLCBUaW1lcyBOZXcgUm9tYW4sIFRpbWVzLCBzZXJpZjtmb250LXNpemU6MTJweDt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OycpOw0KICAgIGRpdl9mb290ZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCg0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmFwaCIgKyBlbC5pZCkuYXBwZW5kQ2hpbGQoZGl2X2Zvb3Rlcik7ICANCiAgICBpZih4LmZvb3RlciAhPT0gbnVsbCl7DQogICAgICBkaXZfZm9vdGVyLmlubmVySFRNTCA9IHguZm9vdGVyLnRleHQ7DQogICAgICBkaXZfZm9vdGVyLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAgeC5mb290ZXIuc3R5bGUgKyAnO2JhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7Jyk7DQogICAgICBkaXZfZm9vdGVyLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOyANCiAgICB9DQogICAgDQogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgLy8gZXhwb3J0DQogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgaWYoeC5leHBvcnQgIT09IHVuZGVmaW5lZCl7DQogICAgICANCiAgICAgIHZhciBkb3dubG9hZGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KICAgICAgZG93bmxvYWRkaXYuc2V0QXR0cmlidXRlKCdzdHlsZScsICdmbG9hdDpyaWdodDsgd2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OycpOw0KICAgICAgDQogICAgICB2YXIgZG93bmxvYWRidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsNCiAgICAgIGRvd25sb2FkYnV0dG9uLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCB4LmV4cG9ydC5jc3MpOw0KICAgICAgZG93bmxvYWRidXR0b24uc3R5bGUucG9zaXRpb24gPSAicmVsYXRpdmUiOw0KICAgICAgZG93bmxvYWRidXR0b24uaWQgPSAiZG93bmxvYWQiK2VsLmlkOw0KICAgICAgZG93bmxvYWRidXR0b24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoeC5leHBvcnQubGFiZWwpKTsgDQogICAgICBkb3dubG9hZGRpdi5hcHBlbmRDaGlsZChkb3dubG9hZGJ1dHRvbik7DQogICAgICANCiAgICAgIHZhciBociA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhyIik7DQogICAgICBoci5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2hlaWdodDo1cHg7IHZpc2liaWxpdHk6aGlkZGVuOyBtYXJnaW4tYm90dG9tOi0xcHg7Jyk7DQogICAgICBkb3dubG9hZGRpdi5hcHBlbmRDaGlsZChocik7ICANCiAgICAgIA0KICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5kaXYiK2VsLmlkKS5hcHBlbmRDaGlsZChkb3dubG9hZGRpdik7DQogICAgICANCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkb3dubG9hZCIrZWwuaWQpLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsNCg0KICAgICAgLy8gaGVpZ2h0IGNvbnRyb2wgZm9yIGV4cG9ydA0KICAgICAgdmFyIGFkZEhlaWdodEV4cG9ydCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmFwaCIgKyBlbC5pZCkub2Zmc2V0SGVpZ2h0ICsgaWRMaXN0Lm9mZnNldEhlaWdodCArIGJ5TGlzdC5vZmZzZXRIZWlnaHQgKyBkb3dubG9hZGRpdi5vZmZzZXRIZWlnaHQ7DQogICAgICBpZihkaXZfdGl0bGUuc3R5bGUuZGlzcGxheSAhPT0gJ25vbmUnKXsNCiAgICAgICAgYWRkSGVpZ2h0RXhwb3J0ID0gYWRkSGVpZ2h0RXhwb3J0ICsgZGl2X3RpdGxlLm9mZnNldEhlaWdodDsNCiAgICAgIH0NCiAgICAgIGlmKGRpdl9zdWJ0aXRsZS5zdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScpew0KICAgICAgICBhZGRIZWlnaHRFeHBvcnQgPSBhZGRIZWlnaHRFeHBvcnQgKyBkaXZfc3VidGl0bGUub2Zmc2V0SGVpZ2h0Ow0KICAgICAgfQ0KICAgICAgaWYoZGl2X2Zvb3Rlci5zdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScpew0KICAgICAgICBhZGRIZWlnaHRFeHBvcnQgPSBhZGRIZWlnaHRFeHBvcnQgKyBkaXZfZm9vdGVyLm9mZnNldEhlaWdodDsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIGFkZEhlaWdodEV4cG9ydCA9IGFkZEhlaWdodEV4cG9ydCArIDE1Ow0KICAgICAgfQ0KDQogICAgICBkb3dubG9hZGJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KICAgICAgdmFyIGV4cG9ydF9iYWNrZ3JvdW5kID0geC5leHBvcnQuYmFja2dyb3VuZDsNCiAgICAgIGlmKHguYmFja2dyb3VuZCAhPT0gInRyYW5zcGFyZW50IiAmJiB4LmJhY2tncm91bmQgIT09ICJyZ2JhKDAsIDAsIDAsIDApIil7DQogICAgICAgIGV4cG9ydF9iYWNrZ3JvdW5kID0geC5iYWNrZ3JvdW5kDQogICAgICB9DQogICAgICANCiAgICAgIGlmKHguZXhwb3J0LnR5cGUgIT09ICJwZGYiKXsNCiAgICAgICAgaHRtbDJjYW52YXMoZWxfaWQsIHsNCiAgICAgICAgICBiYWNrZ3JvdW5kOiBleHBvcnRfYmFja2dyb3VuZCwNCiAgICAgICAgICBoZWlnaHQgOiBhZGRIZWlnaHRFeHBvcnQsDQogICAgICAgICAgb25yZW5kZXJlZDogZnVuY3Rpb24oY2FudmFzKSB7DQogICAgICAgICAgICBjYW52YXMudG9CbG9iSEQoZnVuY3Rpb24oYmxvYikgew0KICAgICAgICAgICAgICBzYXZlQXMoYmxvYiwgeC5leHBvcnQubmFtZSk7DQogICAgICAgICAgICB9LCAiaW1hZ2UvIit4LmV4cG9ydC50eXBlKTsNCiAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgaHRtbDJjYW52YXMoZWxfaWQsIHsNCiAgICAgICAgICBiYWNrZ3JvdW5kOiBleHBvcnRfYmFja2dyb3VuZCwNCiAgICAgICAgICBoZWlnaHQgOiBhZGRIZWlnaHRFeHBvcnQsDQogICAgICAgICAgb25yZW5kZXJlZDogZnVuY3Rpb24oY2FudmFzKSB7DQogICAgICAgICAgICB2YXIgbXlJbWFnZSA9IGNhbnZhcy50b0RhdGFVUkwoImltYWdlL3BuZyIsIDEuMCk7DQogICAgICAgICAgICAvL3ZhciBpbWdXaWR0aCA9IChjYW52YXMud2lkdGggKiAyNS40KSAvIDI0Ow0KICAgICAgICAgICAgLy92YXIgaW1nSGVpZ2h0ID0gKGNhbnZhcy5oZWlnaHQgKiAyNS40KSAvIDI0OyANCiAgICAgICAgICAgIHZhciB0YWJsZSA9IG5ldyBqc1BERignbCcsICdwdCcsIFtjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHRdKTsNCiAgICAgICAgICAgIHRhYmxlLmFkZEltYWdlKG15SW1hZ2UsICdKUEVHJywgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsNCiAgICAgICAgICAgIHRhYmxlLnNhdmUoeC5leHBvcnQubmFtZSk7DQogICAgICAgICAgfSANCiAgICAgICAgfSk7DQogICAgICB9DQoNCiAgICAgIGRvd25sb2FkYnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOw0KICAgICAgfTsNCiAgICB9DQoNCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICAvLyBkYXRhTWFuaXB1bGF0aW9uDQogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgZnVuY3Rpb24gY2xlYXJQb3BVcCgpIHsNCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYXZlQnV0dG9uJykub25jbGljayA9IG51bGw7DQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FuY2VsQnV0dG9uJykub25jbGljayA9IG51bGw7DQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV0d29yay1wb3BVcCcpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gc2F2ZU5vZGUoZGF0YSwgY2FsbGJhY2ssIGNtZCkgew0KICAgICAgZGF0YS5pZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdub2RlLWlkJykudmFsdWU7DQogICAgICBkYXRhLmxhYmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25vZGUtbGFiZWwnKS52YWx1ZTsNCiAgICAgIGlmICh3aW5kb3cuU2hpbnkpew0KICAgICAgICB2YXIgb2JqID0ge2NtZDogY21kLCBpZDogZGF0YS5pZCwgbGFiZWw6IGRhdGEubGFiZWx9DQogICAgICAgIFNoaW55Lm9uSW5wdXRDaGFuZ2UoZWwuaWQgKyAnX2dyYXBoQ2hhbmdlJywgb2JqKTsNCiAgICAgIH0NCiAgICAgIGNsZWFyUG9wVXAoKTsNCiAgICAgIGNhbGxiYWNrKGRhdGEpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHNhdmVFZGdlKGRhdGEsIGNhbGxiYWNrLCBjbWQpIHsNCiAgICAgIGNhbGxiYWNrKGRhdGEpOyAvL211c3QgYmUgZmlyc3QgY2FsbGVkIGZvciBlZ2RlIGlkICENCiAgICAgIGlmICh3aW5kb3cuU2hpbnkpew0KICAgICAgICB2YXIgb2JqID0ge2NtZDogY21kLCBpZDogZGF0YS5pZCwgZnJvbTogZGF0YS5mcm9tLCB0bzogZGF0YS50b307DQogICAgICAgIFNoaW55Lm9uSW5wdXRDaGFuZ2UoZWwuaWQgKyAnX2dyYXBoQ2hhbmdlJywgb2JqKTsNCiAgICAgIH0NCiAgICAgIA0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGRlbGV0ZVN1YkdyYXBoKGRhdGEsIGNhbGxiYWNrKSB7DQogICAgICBpZiAod2luZG93LlNoaW55KXsNCiAgICAgICAgdmFyIG9iaiA9IHtjbWQ6ICJkZWxldGVFbGVtZW50cyIsIG5vZGVzOiBkYXRhLm5vZGVzLCBlZGdlczogZGF0YS5lZGdlc30NCiAgICAgICAgU2hpbnkub25JbnB1dENoYW5nZShlbC5pZCArICdfZ3JhcGhDaGFuZ2UnLCBvYmopOw0KICAgICAgfQ0KICAgICAgY2FsbGJhY2soZGF0YSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gY2FuY2VsRWRpdChjYWxsYmFjaykgew0KICAgICAgY2xlYXJQb3BVcCgpOw0KICAgICAgY2FsbGJhY2sobnVsbCk7DQogICAgfQ0KICAgIA0KICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIC8vIENMVVNURVJJTkcNCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICBpZih4LmNsdXN0ZXJpbmdHcm91cCB8fCB4LmNsdXN0ZXJpbmdDb2xvciB8fCB4LmNsdXN0ZXJpbmdIdWJzaXplIHx8IHguY2x1c3RlcmluZ0Nvbm5lY3Rpb24pew0KICAgICAgDQogICAgICB2YXIgY2x1c3RlcmJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7DQogICAgICBjbHVzdGVyYnV0dG9uLmlkID0gImJhY2tidG4iK2VsLmlkOw0KICAgICAgY2x1c3RlcmJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnYnV0dG9uJyk7ICANCiAgICAgIGNsdXN0ZXJidXR0b24uc2V0QXR0cmlidXRlKCd2YWx1ZScsICdSZWluaXRpYWxpemUgY2x1c3RlcmluZycpOyANCiAgICAgIGNsdXN0ZXJidXR0b24uc2V0QXR0cmlidXRlKCdzdHlsZScsICdiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7Ym9yZGVyOiBub25lJyk7DQogICAgICBlbF9pZC5hcHBlbmRDaGlsZChjbHVzdGVyYnV0dG9uKTsNCiAgICAgIA0KICAgICAgY2x1c3RlcmJ1dHRvbi5vbmNsaWNrID0gIGZ1bmN0aW9uKCl7DQogICAgICAgIC8vIHJlc2V0IHNvbWUgcGFyYW1ldGVycyAvIGRhdGEgYmVmb3JlDQogICAgICAgIGlmIChlbF9pZC5zZWxlY3RBY3RpdmUgPT09IHRydWUgfCBlbF9pZC5oaWdobGlnaHRBY3RpdmUgPT09IHRydWUpIHsNCiAgICAgICAgICAvL3Jlc2V0IG5vZGVzDQogICAgICAgICAgbmVpZ2hib3VyaG9vZEhpZ2hsaWdodChbXSwgImNsaWNrIiwgZWxfaWQuaGlnaGxpZ2h0QWxnb3JpdGhtLCB0cnVlKTsNCiAgICAgICAgICBpZiAoZWxfaWQuc2VsZWN0QWN0aXZlID09PSB0cnVlKXsNCiAgICAgICAgICAgIGVsX2lkLnNlbGVjdEFjdGl2ZSA9IGZhbHNlOw0KICAgICAgICAgICAgcmVzZXRMaXN0KCdzZWxlY3RlZEJ5JyxlbC5pZCwgJ3NlbGVjdGVkQnknKTsNCiAgICAgICAgICB9DQogICAgICAgICAgaWYgKGVsX2lkLmhpZ2hsaWdodEFjdGl2ZSA9PT0gdHJ1ZSl7DQogICAgICAgICAgICBlbF9pZC5oaWdobGlnaHRBY3RpdmUgPSBmYWxzZTsNCiAgICAgICAgICAgIHJlc2V0TGlzdCgnbm9kZVNlbGVjdCcsIGVsLmlkLCAnc2VsZWN0ZWQnKTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLy9pbnN0YW5jZS5uZXR3b3JrLnNldERhdGEoZGF0YSk7DQogICAgICAgIGlmKHguY2x1c3RlcmluZ0NvbG9yKXsNCiAgICAgICAgICBjbHVzdGVyQnlDb2xvcigpOw0KICAgICAgICB9DQogICAgICAgIGlmKHguY2x1c3RlcmluZ0dyb3VwKXsNCiAgICAgICAgICBjbHVzdGVyQnlHcm91cCh4LmNsdXN0ZXJpbmdHcm91cC5ncm91cHMpOw0KICAgICAgICB9DQogICAgICAgIGlmKHguY2x1c3RlcmluZ0h1YnNpemUpew0KICAgICAgICAgIGNsdXN0ZXJCeUh1YnNpemUoKTsNCiAgICAgICAgfQ0KICAgICAgICBpZih4LmNsdXN0ZXJpbmdDb25uZWN0aW9uKXsNCiAgICAgICAgICBjbHVzdGVyQnlDb25uZWN0aW9uKCk7DQogICAgICAgIH0NCiAgICAgICAgaW5zdGFuY2UubmV0d29yay5maXQoKTsNCiAgICAgIH0NCiAgICB9DQogICAgDQogICAgaWYoeC5jbHVzdGVyaW5nR3JvdXAgfHwgeC5jbHVzdGVyaW5nQ29sb3IgfHwgeC5jbHVzdGVyaW5nT3V0bGllcnMgfHwgeC5jbHVzdGVyaW5nSHVic2l6ZSB8fCB4LmNsdXN0ZXJpbmdDb25uZWN0aW9uKXsNCiAgICAgIC8vIGlmIHdlIGNsaWNrIG9uIGEgbm9kZSwgd2Ugd2FudCB0byBvcGVuIGl0IHVwIQ0KICAgICAgaW5zdGFuY2UubmV0d29yay5vbigiZG91YmxlQ2xpY2siLCBmdW5jdGlvbiAocGFyYW1zKXsNCiAgICAgICAgDQogICAgICAgIGlmIChwYXJhbXMubm9kZXMubGVuZ3RoID09PSAxKSB7DQogICAgICAgICAgaWYgKGluc3RhbmNlLm5ldHdvcmsuaXNDbHVzdGVyKHBhcmFtcy5ub2Rlc1swXSkgPT09IHRydWUpIHsNCiAgICAgICAgICAgIGlzX2NsaWNrZWQgPSBmYWxzZTsNCiAgICAgICAgICAgIGluc3RhbmNlLm5ldHdvcmsub3BlbkNsdXN0ZXIocGFyYW1zLm5vZGVzWzBdLCB7cmVsZWFzZUZ1bmN0aW9uIDogZnVuY3Rpb24oY2x1c3RlclBvc2l0aW9uLCBjb250YWluZWROb2Rlc1Bvc2l0aW9ucykgew0KICAgICAgICAgICAgICByZXR1cm4gY29udGFpbmVkTm9kZXNQb3NpdGlvbnM7DQogICAgICAgICAgICB9fSk7DQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGlmKHguY2x1c3RlcmluZ0dyb3VwKXsNCiAgICAgICAgICAgICAgdmFyIGFycmF5X2dyb3VwID0gbm9kZXMuZ2V0KHsNCiAgICAgICAgICAgICAgICBmaWVsZHM6IFsnZ3JvdXAnXSwNCiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uIChpdGVtKSB7DQogICAgICAgICAgICAgICAgICByZXR1cm4gIGl0ZW0uaWQgPT09IHBhcmFtcy5ub2Rlc1swXSA7DQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICByZXR1cm5UeXBlIDonQXJyYXknDQogICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgDQogICAgICAgICAgICAgIGNsdXN0ZXJCeUdyb3VwKFthcnJheV9ncm91cFswXS5ncm91cF0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfSk7DQogICAgfQ0KICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIC8vY2x1c3RlcmluZyBDb25uZWN0aW9uDQogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgaWYoeC5jbHVzdGVyaW5nQ29ubmVjdGlvbil7DQogICAgICANCiAgICAgIGZ1bmN0aW9uIGNsdXN0ZXJCeUNvbm5lY3Rpb24oKSB7DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeC5jbHVzdGVyaW5nQ29ubmVjdGlvbi5ub2Rlcy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgIGluc3RhbmNlLm5ldHdvcmsuY2x1c3RlckJ5Q29ubmVjdGlvbih4LmNsdXN0ZXJpbmdDb25uZWN0aW9uLm5vZGVzW2ldKQ0KICAgICAgICB9DQogICAgICB9DQogICAgICBjbHVzdGVyQnlDb25uZWN0aW9uKCk7DQogICAgfQ0KICAgIA0KICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIC8vY2x1c3RlcmluZyBodWJzaXplDQogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgaWYoeC5jbHVzdGVyaW5nSHVic2l6ZSl7DQogICAgICANCiAgICAgIGZ1bmN0aW9uIGNsdXN0ZXJCeUh1YnNpemUoKSB7DQogICAgICAgIHZhciBjbHVzdGVyT3B0aW9uc0J5RGF0YSA9IHsNCiAgICAgICAgICBwcm9jZXNzUHJvcGVydGllczogZnVuY3Rpb24oY2x1c3Rlck9wdGlvbnMsIGNoaWxkTm9kZXMpIHsNCiAgICAgICAgICAgIHZhciBjbHVzdGVyX2xldmVsID0gOTk5OTk5OQ0KICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgICAgLy90b3RhbE1hc3MgKz0gY2hpbGROb2Rlc1tpXS5tYXNzOw0KICAgICAgICAgICAgICAgICAgICAgIGlmKGNoaWxkTm9kZXNbaV0ubGV2ZWwpew0KICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlcl9sZXZlbCA9IE1hdGgubWluKGNsdXN0ZXJfbGV2ZWwsIGNoaWxkTm9kZXNbaV0ubGV2ZWwpDQogICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgIGlmKGkgPT09IDApew0KICAgICAgICAgICAgICAgICAgICAgICAgLy9jbHVzdGVyT3B0aW9ucy5zaGFwZSA9ICBjaGlsZE5vZGVzW2ldLnNoYXBlOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMuY29sb3IgPSAgY2hpbGROb2Rlc1tpXS5jb2xvci5iYWNrZ3JvdW5kOw0KICAgICAgICAgICAgICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAgICAgICAgICAgLy9pZihjaGlsZE5vZGVzW2ldLnNoYXBlICE9PSBjbHVzdGVyT3B0aW9ucy5zaGFwZSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgIC8vY2x1c3Rlck9wdGlvbnMuc2hhcGUgPSAnZGF0YWJhc2UnOw0KICAgICAgICAgICAgICAgICAgICAgICAgLy99DQogICAgICAgICAgICAgICAgICAgICAgICBpZihjaGlsZE5vZGVzW2ldLmNvbG9yLmJhY2tncm91bmQgIT09IGNsdXN0ZXJPcHRpb25zLmNvbG9yKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMuY29sb3IgPSAnZ3JleSc7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMubGFiZWwgPSAiWyIgKyBjaGlsZE5vZGVzLmxlbmd0aCArICJdIjsNCiAgICAgICAgICAgIGlmKGNsdXN0ZXJfbGV2ZWwgIT09IDk5OTk5OTkpew0KICAgICAgICAgICAgICBjbHVzdGVyT3B0aW9ucy5sZXZlbCA9IGNsdXN0ZXJfbGV2ZWwNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBjbHVzdGVyT3B0aW9uczsNCiAgICAgICAgICB9LA0KICAgICAgICAgIGNsdXN0ZXJOb2RlUHJvcGVydGllczoge2JvcmRlcldpZHRoOjMsIHNoYXBlOidib3gnLCBmb250OntzaXplOjMwfX0NCiAgICAgICAgfQ0KICAgICAgICBpZih4LmNsdXN0ZXJpbmdIdWJzaXplLnNpemUgPiAwKXsNCiAgICAgICAgICBpbnN0YW5jZS5uZXR3b3JrLmNsdXN0ZXJCeUh1YnNpemUoeC5jbHVzdGVyaW5nSHVic2l6ZS5zaXplLCBjbHVzdGVyT3B0aW9uc0J5RGF0YSk7DQogICAgICAgIH1lbHNlew0KICAgICAgICAgIGluc3RhbmNlLm5ldHdvcmsuY2x1c3RlckJ5SHVic2l6ZSh1bmRlZmluZWQsIGNsdXN0ZXJPcHRpb25zQnlEYXRhKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgDQogICAgICBjbHVzdGVyQnlIdWJzaXplKCk7DQogICAgfQ0KICAgIA0KICAgIGlmKHguY2x1c3RlcmluZ0NvbG9yKXsNCiAgICAgIA0KICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIC8vY2x1c3RlcmluZyBjb2xvcg0KICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIGZ1bmN0aW9uIGNsdXN0ZXJCeUNvbG9yKCkgew0KICAgICAgICB2YXIgY29sb3JzID0geC5jbHVzdGVyaW5nQ29sb3IuY29sb3JzDQogICAgICAgIHZhciBjbHVzdGVyT3B0aW9uc0J5RGF0YTsNCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2xvcnMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICB2YXIgY29sb3IgPSBjb2xvcnNbaV07DQogICAgICAgICAgdmFyIHNoID0geC5jbHVzdGVyaW5nQ29sb3Iuc2hhcGVbaV07DQogICAgICAgICAgdmFyIGZvcmNlID0geC5jbHVzdGVyaW5nQ29sb3IuZm9yY2VbaV07DQogICAgICAgICAgY2x1c3Rlck9wdGlvbnNCeURhdGEgPSB7DQogICAgICAgICAgICAgIGpvaW5Db25kaXRpb246IGZ1bmN0aW9uIChjaGlsZE9wdGlvbnMpIHsNCiAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZE9wdGlvbnMuY29sb3IuYmFja2dyb3VuZCA9PSBjb2xvcjsgLy8gdGhlIGNvbG9yIGlzIGZ1bGx5IGRlZmluZWQgaW4gdGhlIG5vZGUuDQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgIHByb2Nlc3NQcm9wZXJ0aWVzOiBmdW5jdGlvbiAoY2x1c3Rlck9wdGlvbnMsIGNoaWxkTm9kZXMsIGNoaWxkRWRnZXMpIHsNCiAgICAgICAgICAgICAgICAgIHZhciB0b3RhbE1hc3MgPSAwOw0KICAgICAgICAgICAgICAgICAgdmFyIGNsdXN0ZXJfbGV2ZWwgPSA5OTk5OTk5Ow0KICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgICAgdG90YWxNYXNzICs9IGNoaWxkTm9kZXNbaV0ubWFzczsNCiAgICAgICAgICAgICAgICAgICAgICBpZihjaGlsZE5vZGVzW2ldLmxldmVsKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJfbGV2ZWwgPSBNYXRoLm1pbihjbHVzdGVyX2xldmVsLCBjaGlsZE5vZGVzW2ldLmxldmVsKQ0KICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICBpZihmb3JjZSA9PT0gZmFsc2Upew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaSA9PT0gMCl7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJPcHRpb25zLnNoYXBlID0gIGNoaWxkTm9kZXNbaV0uc2hhcGU7DQogICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2hpbGROb2Rlc1tpXS5zaGFwZSAhPT0gY2x1c3Rlck9wdGlvbnMuc2hhcGUpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJPcHRpb25zLnNoYXBlID0gc2g7DQogICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMuc2hhcGUgPSBzaDsNCiAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIGNsdXN0ZXJPcHRpb25zLnZhbHVlID0gdG90YWxNYXNzOw0KICAgICAgICAgICAgICAgICAgaWYoY2x1c3Rlcl9sZXZlbCAhPT0gOTk5OTk5OSl7DQogICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJPcHRpb25zLmxldmVsID0gY2x1c3Rlcl9sZXZlbA0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsdXN0ZXJPcHRpb25zOw0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICBjbHVzdGVyTm9kZVByb3BlcnRpZXM6IHtpZDogJ2NsdXN0ZXI6JyArIGNvbG9yLCBib3JkZXJXaWR0aDogMywgY29sb3I6Y29sb3IsIGxhYmVsOiB4LmNsdXN0ZXJpbmdDb2xvci5sYWJlbCArIGNvbG9yfQ0KICAgICAgICAgIH0NCiAgICAgICAgICBpbnN0YW5jZS5uZXR3b3JrLmNsdXN0ZXIoY2x1c3Rlck9wdGlvbnNCeURhdGEpOw0KICAgICAgICB9DQogICAgICB9DQogICAgICANCiAgICAgIGNsdXN0ZXJCeUNvbG9yKCk7DQogICAgfQ0KDQogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgLy9jbHVzdGVyaW5nIGdyb3Vwcw0KICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIGlmKHguY2x1c3RlcmluZ0dyb3VwKXsNCiAgICAgIA0KICAgICAgZnVuY3Rpb24gY2x1c3RlckJ5R3JvdXAoZ3JvdXBzKSB7DQogICAgICAgIHZhciBjbHVzdGVyT3B0aW9uc0J5RGF0YTsNCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICB2YXIgZ3JvdXAgPSBncm91cHNbaV07DQogICAgICAgICAgdmFyIGogPSB4LmNsdXN0ZXJpbmdHcm91cC5ncm91cHMuaW5kZXhPZihncm91cCk7DQogICAgICAgICAgaWYoaiAhPT0gLTEpIHsNCiAgICAgICAgICAgIHZhciBjb2wgPSB4LmNsdXN0ZXJpbmdHcm91cC5jb2xvcltqXTsNCiAgICAgICAgICAgIHZhciBzaCA9IHguY2x1c3RlcmluZ0dyb3VwLnNoYXBlW2pdOw0KICAgICAgICAgICAgdmFyIGZvcmNlID0geC5jbHVzdGVyaW5nR3JvdXAuZm9yY2Vbal07DQogICAgICAgICAgICB2YXIgc2Nfc2l6ZSA9IHguY2x1c3RlcmluZ0dyb3VwLnNjYWxlX3NpemVbal07DQogICAgICAgICAgICANCiAgICAgICAgICAgIGNsdXN0ZXJPcHRpb25zQnlEYXRhID0gew0KICAgICAgICAgICAgICAgIGpvaW5Db25kaXRpb246IGZ1bmN0aW9uIChjaGlsZE9wdGlvbnMpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkT3B0aW9ucy5ncm91cCA9PSBncm91cDsgLy8NCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHByb2Nlc3NQcm9wZXJ0aWVzOiBmdW5jdGlvbiAoY2x1c3Rlck9wdGlvbnMsIGNoaWxkTm9kZXMsIGNoaWxkRWRnZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHRvdGFsTWFzcyA9IDA7DQogICAgICAgICAgICAgICAgICAgIHZhciBjbHVzdGVyX2xldmVsID0gOTk5OTk5OTsNCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0b3RhbE1hc3MgKz0gY2hpbGROb2Rlc1tpXS5tYXNzOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2hpbGROb2Rlc1tpXS5sZXZlbCl7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJfbGV2ZWwgPSBNYXRoLm1pbihjbHVzdGVyX2xldmVsLCBjaGlsZE5vZGVzW2ldLmxldmVsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoZm9yY2UgPT09IGZhbHNlKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaSA9PT0gMCl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMuc2hhcGUgPSAgY2hpbGROb2Rlc1tpXS5zaGFwZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyT3B0aW9ucy5jb2xvciA9ICBjaGlsZE5vZGVzW2ldLmNvbG9yLmJhY2tncm91bmQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNoaWxkTm9kZXNbaV0uc2hhcGUgIT09IGNsdXN0ZXJPcHRpb25zLnNoYXBlKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJPcHRpb25zLnNoYXBlID0gc2g7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNoaWxkTm9kZXNbaV0uY29sb3IuYmFja2dyb3VuZCAhPT0gY2x1c3Rlck9wdGlvbnMuY29sb3Ipew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMuY29sb3IgPSBjb2w7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyT3B0aW9ucy5zaGFwZSA9IHNoOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyT3B0aW9ucy5jb2xvciA9IGNvbDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZihzY19zaXplKXsNCiAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMudmFsdWUgPSB0b3RhbE1hc3M7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYoY2x1c3Rlcl9sZXZlbCAhPT0gOTk5OTk5OSl7DQogICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMubGV2ZWwgPSBjbHVzdGVyX2xldmVsDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsdXN0ZXJPcHRpb25zOw0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgY2x1c3Rlck5vZGVQcm9wZXJ0aWVzOiB7aWQ6ICdjbHVzdGVyOicgKyBncm91cCwgYm9yZGVyV2lkdGg6IDMsIGxhYmVsOnguY2x1c3RlcmluZ0dyb3VwLmxhYmVsICsgZ3JvdXB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpbnN0YW5jZS5uZXR3b3JrLmNsdXN0ZXIoY2x1c3Rlck9wdGlvbnNCeURhdGEpOw0KICAgICAgICAgIH0NCg0KICAgICAgICB9DQogICAgICB9DQogICAgICBjbHVzdGVyQnlHcm91cCh4LmNsdXN0ZXJpbmdHcm91cC5ncm91cHMpOw0KICAgIH0NCiAgDQogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgLy9jbHVzdGVyaW5nIGJ5IHpvb20NCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICBpZih4LmNsdXN0ZXJpbmdPdXRsaWVycyl7DQogICAgICANCiAgICAgIGNsdXN0ZXJGYWN0b3IgPSB4LmNsdXN0ZXJpbmdPdXRsaWVycy5jbHVzdGVyRmFjdG9yOw0KICAgICAgDQogICAgICAvLyBzZXQgdGhlIGZpcnN0IGluaXRpYWwgem9vbSBsZXZlbA0KICAgICAgaW5zdGFuY2UubmV0d29yay5vbignaW5pdFJlZHJhdycsIGZ1bmN0aW9uKCkgew0KICAgICAgICBpZiAobGFzdENsdXN0ZXJab29tTGV2ZWwgPT09IDApIHsNCiAgICAgICAgICBsYXN0Q2x1c3Rlclpvb21MZXZlbCA9IGluc3RhbmNlLm5ldHdvcmsuZ2V0U2NhbGUoKTsNCiAgICAgICAgfQ0KICAgICAgfSk7DQoNCiAgICAgIC8vIHdlIHVzZSB0aGUgem9vbSBldmVudCBmb3Igb3VyIGNsdXN0ZXJpbmcNCiAgICAgIGluc3RhbmNlLm5ldHdvcmsub24oJ3pvb20nLCBmdW5jdGlvbiAocGFyYW1zKSB7DQogICAgICAgIGlmKGN0cmx3YWl0ID09PSAwKXsNCiAgICAgICAgaWYgKHBhcmFtcy5kaXJlY3Rpb24gPT0gJy0nKSB7DQogICAgICAgICAgaWYgKHBhcmFtcy5zY2FsZSA8IGxhc3RDbHVzdGVyWm9vbUxldmVsKmNsdXN0ZXJGYWN0b3IpIHsNCiAgICAgICAgICAgIG1ha2VDbHVzdGVycyhwYXJhbXMuc2NhbGUpOw0KICAgICAgICAgICAgbGFzdENsdXN0ZXJab29tTGV2ZWwgPSBwYXJhbXMuc2NhbGU7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgIG9wZW5DbHVzdGVycyhwYXJhbXMuc2NhbGUpOw0KICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0pOw0KICAgIH0NCg0KICAgIC8vIG1ha2UgdGhlIGNsdXN0ZXJzDQogICAgZnVuY3Rpb24gbWFrZUNsdXN0ZXJzKHNjYWxlKSB7DQogICAgICAgIGN0cmx3YWl0ID0gMTsNCiAgICAgICAgdmFyIGNsdXN0ZXJPcHRpb25zQnlEYXRhID0gew0KICAgICAgICAgICAgcHJvY2Vzc1Byb3BlcnRpZXM6IGZ1bmN0aW9uIChjbHVzdGVyT3B0aW9ucywgY2hpbGROb2Rlcykgew0KICAgICAgICAgICAgICAgIGNsdXN0ZXJJbmRleCA9IGNsdXN0ZXJJbmRleCArIDE7DQogICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuQ291bnQgPSAwOw0KICAgICAgICAgICAgICAgIHZhciBjbHVzdGVyX2xldmVsID0gOTk5OTk5OTsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5Db3VudCArPSBjaGlsZE5vZGVzW2ldLmNoaWxkcmVuQ291bnQgfHwgMTsNCiAgICAgICAgICAgICAgICAgICAgaWYoY2hpbGROb2Rlc1tpXS5sZXZlbCl7DQogICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlcl9sZXZlbCA9IE1hdGgubWluKGNsdXN0ZXJfbGV2ZWwsIGNoaWxkTm9kZXNbaV0ubGV2ZWwpDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMuY2hpbGRyZW5Db3VudCA9IGNoaWxkcmVuQ291bnQ7DQogICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMubGFiZWwgPSAiIyAiICsgY2hpbGRyZW5Db3VudCArICIiOw0KICAgICAgICAgICAgICAgIGNsdXN0ZXJPcHRpb25zLmZvbnQgPSB7c2l6ZTogY2hpbGRyZW5Db3VudCo1KzMwfQ0KICAgICAgICAgICAgICAgIGNsdXN0ZXJPcHRpb25zLmlkID0gJ2NsdXN0ZXI6JyArIGNsdXN0ZXJJbmRleDsNCiAgICAgICAgICAgICAgICBjbHVzdGVycy5wdXNoKHtpZDonY2x1c3RlcjonICsgY2x1c3RlckluZGV4LCBzY2FsZTpzY2FsZX0pOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGlmKGNsdXN0ZXJfbGV2ZWwgIT09IDk5OTk5OTkpew0KICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMubGV2ZWwgPSBjbHVzdGVyX2xldmVsDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiBjbHVzdGVyT3B0aW9uczsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBjbHVzdGVyTm9kZVByb3BlcnRpZXM6IHtib3JkZXJXaWR0aDogMywgc2hhcGU6ICdkYXRhYmFzZScsIGZvbnQ6IHtzaXplOiAzMH19DQogICAgICAgIH0NCiAgICAgICAgaW5zdGFuY2UubmV0d29yay5jbHVzdGVyT3V0bGllcnMoY2x1c3Rlck9wdGlvbnNCeURhdGEpOw0KICAgICAgICBpZiAoeC5jbHVzdGVyaW5nT3V0bGllcnMuc3RhYmlsaXplKSB7DQogICAgICAgICAgICBpbnN0YW5jZS5uZXR3b3JrLnN0YWJpbGl6ZSgpOw0KICAgICAgICB9Ow0KICAgICAgICBjdHJsd2FpdCA9IDA7DQogICAgfQ0KDQogICAgLy8gb3BlbiB0aGVtIGJhY2sgdXAhDQogICAgZnVuY3Rpb24gb3BlbkNsdXN0ZXJzKHNjYWxlKSB7DQogICAgICAgIGN0cmx3YWl0ID0gMTsNCiAgICAgICAgdmFyIG5ld0NsdXN0ZXJzID0gW107DQogICAgICAgIHZhciBkZWNsdXN0ZXJlZCA9IGZhbHNlOw0KICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNsdXN0ZXJzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICBpZiAoY2x1c3RlcnNbaV0uc2NhbGUgPCBzY2FsZSkgew0KICAgICAgICAgICAgICAgIGluc3RhbmNlLm5ldHdvcmsub3BlbkNsdXN0ZXIoY2x1c3RlcnNbaV0uaWQpOw0KICAgICAgICAgICAgICAgIGxhc3RDbHVzdGVyWm9vbUxldmVsID0gc2NhbGU7DQogICAgICAgICAgICAgICAgZGVjbHVzdGVyZWQgPSB0cnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgbmV3Q2x1c3RlcnMucHVzaChjbHVzdGVyc1tpXSkNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBjbHVzdGVycyA9IG5ld0NsdXN0ZXJzOw0KICAgICAgICBpZiAoeC5jbHVzdGVyaW5nT3V0bGllcnMuc3RhYmlsaXplKSB7DQogICAgICAgICAgICBpbnN0YW5jZS5uZXR3b3JrLnN0YWJpbGl6ZSgpOw0KICAgICAgICB9Ow0KICAgICAgICBjdHJsd2FpdCA9IDA7DQogICAgfQ0KICAgIA0KICAgIC8vKioqKioqKioqKioqKioqKioqDQogICAgLy8gaW5pdCBzZWxlY3Rpb24NCiAgICAvLyoqKioqKioqKioqKioqKioqKg0KICAgIGlmKGVsX2lkLmlkc2VsZWN0aW9uICYmIHgubm9kZXMgJiYgeC5pZHNlbGVjdGlvbi5zZWxlY3RlZCAhPT0gdW5kZWZpbmVkKXsgDQogICAgICBvbklkQ2hhbmdlKCcnKyB4Lmlkc2VsZWN0aW9uLnNlbGVjdGVkLCB0cnVlKTsNCiAgICB9DQogICAgICANCiAgICBpZihlbF9pZC5ieXNlbGVjdGlvbiAmJiB4Lm5vZGVzICYmIHguYnlzZWxlY3Rpb24uc2VsZWN0ZWQgIT09IHVuZGVmaW5lZCl7IA0KICAgICAgb25CeUNoYW5nZSh4LmJ5c2VsZWN0aW9uLnNlbGVjdGVkKTsNCiAgICAgIHNlbGVjdE5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VsZWN0ZWRCeScrZWwuaWQpOw0KICAgICAgc2VsZWN0Tm9kZS52YWx1ZSA9IHguYnlzZWxlY3Rpb24uc2VsZWN0ZWQ7DQogICAgfQ0KICAgIA0KICAgIC8vIHRyeSB0byBmaXggaWNvbnMgbG9hZGluZyBjc3MgYnVnLi4uDQogICAgZnVuY3Rpb24gaWNvbnNSZWRyYXcoKSB7DQogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7DQogICAgICAgIGlmKGluc3RhbmNlLm5ldHdvcmspDQogICAgICAgICAgaW5zdGFuY2UubmV0d29yay5yZWRyYXcoKTsNCiAgICAgICAgaWYoaW5zdGFuY2UubGVnZW5kKQ0KICAgICAgICAgIGluc3RhbmNlLmxlZ2VuZC5yZWRyYXcoKTsNCiAgICAgIH0sIDI1MCk7DQogICAgfTsNCiAgICANCiAgICBpZih4Lmljb25zUmVkcmF3ICE9PSB1bmRlZmluZWQpew0KICAgICAgaWYoeC5pY29uc1JlZHJhdyl7DQogICAgICAgIGljb25zUmVkcmF3KCk7DQogICAgICAgIGluc3RhbmNlLm5ldHdvcmsub25jZSgic3RhYmlsaXplZCIsIGZ1bmN0aW9uKCl7aWNvbnNSZWRyYXcoKTt9KQ0KICAgICAgfQ0KICAgIH0NCiAgfSwgDQogIA0KICByZXNpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0LCBpbnN0YW5jZSkgew0KICAgICAgaWYoaW5zdGFuY2UubmV0d29yaykNCiAgICAgICAgaW5zdGFuY2UubmV0d29yay5maXQoKTsNCiAgICAgIGlmKGluc3RhbmNlLmxlZ2VuZCkNCiAgICAgICAgaW5zdGFuY2UubGVnZW5kLmZpdCgpOw0KICB9DQogIA0KfSk7DQo="></script>

<style type="text/css">
  code{white-space: pre-wrap;}
  span.smallcaps{font-variant: small-caps;}
  span.underline{text-decoration: underline;}
  div.column{display: inline-block; vertical-align: top; width: 50%;}
  div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
  ul.task-list{list-style: none;}
    </style>

<style type="text/css">code{white-space: pre;}</style>
<script type="text/javascript">
if (window.hljs) {
  hljs.configure({languages: []});
  hljs.initHighlightingOnLoad();
  if (document.readyState && document.readyState === "complete") {
    window.setTimeout(function() { hljs.initHighlighting(); }, 0);
  }
}
</script>



<style type="text/css">
#rmd-source-code {
  display: none;
}
</style>





<style type="text/css">
.main-container {
  max-width: 940px;
  margin-left: auto;
  margin-right: auto;
}
img {
  max-width:100%;
}
.tabbed-pane {
  padding-top: 12px;
}
.html-widget {
  margin-bottom: 20px;
}
button.code-folding-btn:focus {
  outline: none;
}
summary {
  display: list-item;
}
pre code {
  padding: 0;
}
</style>

<style type="text/css">
.kable-table {
  border: 1px solid #ccc;
  border-radius: 4px;
  overflow: auto;
  padding-left: 8px;
  padding-right: 8px;
  margin-bottom: 20px;
  max-height: 350px;
}

.kable-table table {
  margin-bottom: 0px;
}

.kable-table table>thead>tr>th {
  border: none;
  border-bottom: 2px solid #dddddd;
}

.kable-table table>thead {
  background-color: #fff;
}
</style>


<!-- tabsets -->

<style type="text/css">
.tabset-dropdown > .nav-tabs {
  display: inline-table;
  max-height: 500px;
  min-height: 44px;
  overflow-y: auto;
  border: 1px solid #ddd;
  border-radius: 4px;
}

.tabset-dropdown > .nav-tabs > li.active:before {
  content: "";
  font-family: 'Glyphicons Halflings';
  display: inline-block;
  padding: 10px;
  border-right: 1px solid #ddd;
}

.tabset-dropdown > .nav-tabs.nav-tabs-open > li.active:before {
  content: "";
  border: none;
}

.tabset-dropdown > .nav-tabs.nav-tabs-open:before {
  content: "";
  font-family: 'Glyphicons Halflings';
  display: inline-block;
  padding: 10px;
  border-right: 1px solid #ddd;
}

.tabset-dropdown > .nav-tabs > li.active {
  display: block;
}

.tabset-dropdown > .nav-tabs > li > a,
.tabset-dropdown > .nav-tabs > li > a:focus,
.tabset-dropdown > .nav-tabs > li > a:hover {
  border: none;
  display: inline-block;
  border-radius: 4px;
  background-color: transparent;
}

.tabset-dropdown > .nav-tabs.nav-tabs-open > li {
  display: block;
  float: none;
}

.tabset-dropdown > .nav-tabs > li {
  display: none;
}
</style>

<!-- code folding -->
<style type="text/css">
.code-folding-btn { margin-bottom: 4px; }
</style>




</head>

<body>


<div class="container-fluid main-container">




<div id="header">

<div class="btn-group pull-right float-right">
<button type="button" class="btn btn-default btn-xs btn-secondary btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span>Code</span> <span class="caret"></span></button>
<ul class="dropdown-menu dropdown-menu-right" style="min-width: 50px;">
<li><a id="rmd-show-all-code" href="#">Show All Code</a></li>
<li><a id="rmd-hide-all-code" href="#">Hide All Code</a></li>
<li role="separator" class="divider"></li>
<li><a id="rmd-download-source" href="#">Download Rmd</a></li>
</ul>
</div>



<h1 class="title toc-ignore">Figure S6</h1>

</div>


<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->

<!-- rnb-htmlwidget-begin eyJkZXBlbmRlbmNpZXMiOlt7Im5hbWUiOiJodG1sd2lkZ2V0cyIsInZlcnNpb24iOiIxLjUuNCIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC9odG1sd2lkZ2V0cy93d3cifSwibWV0YSI6W10sInNjcmlwdCI6Imh0bWx3aWRnZXRzLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjp0cnVlfSx7Im5hbWUiOiJ2aXMiLCJ2ZXJzaW9uIjoiNC4yMC4xIiwic3JjIjp7ImZpbGUiOiJDOi9Vc2Vycy8xNTE3Ny9PbmVEcml2ZSAtIE1pY2hpZ2FuIFN0YXRlIFVuaXZlcnNpdHkvRG9jdW1lbnRzL1Ivd2luLWxpYnJhcnkvNC4wL3Zpc05ldHdvcmsvaHRtbHdpZGdldHMvbGliL3ZpcyJ9LCJtZXRhIjpbXSwic2NyaXB0IjoidmlzLm1pbi5qcyIsInN0eWxlc2hlZXQiOiJ2aXMuY3NzIiwiaGVhZCI6W10sImF0dGFjaG1lbnQiOltdLCJhbGxfZmlsZXMiOnRydWV9LHsibmFtZSI6InZpc05ldHdvcmstYmluZGluZyIsInZlcnNpb24iOiIyLjAuOSIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC92aXNOZXR3b3JrL2h0bWx3aWRnZXRzIn0sIm1ldGEiOltdLCJzY3JpcHQiOiJ2aXNOZXR3b3JrLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjpmYWxzZX1dLCJtZXRhZGF0YSI6eyJjbGFzc2VzIjpbInNoaW55LnRhZy5saXN0IiwibGlzdCJdLCJzaXppbmdQb2xpY3kiOltdfX0= -->

<div id="htmlwidget-07432e467e799349b387" style="width:960px;height:500px;" class="visNetwork html-widget"></div>
<script type="application/json" data-for="htmlwidget-07432e467e799349b387">{"x":{"nodes":{"id":["B Cells","Endothelial Cells","Macrophages","Cholangiocytes","Portal Fibroblasts","Portal Hepatocytes","PTPRC_MRC1","CD74_APP","NRG1_ERBB4","PECAM1_CD38"],"type":["dot","cell","cell","cell","cell","cell","molecule","molecule","molecule","molecule"],"shape":["dot","dot","dot","dot","dot","dot","diamond","diamond","diamond","diamond"],"label":["B Cells","Endothelial Cells","Macrophages","Cholangiocytes","Portal Fibroblasts","Portal Hepatocytes","PTPRC_MRC1","CD74_APP","NRG1_ERBB4","PECAM1_CD38"],"size":[25,20,20,20,20,20,10,10,10,10],"color.background":["#40bd57","#f78279","#f78279","#f78279","#f78279","#f78279","#8a82ff","#8a82ff","#8a82ff","#8a82ff"],"x":[-0.181812606738055,-0.924992648762161,-0.402163739367796,-0.531557450602336,-1,1,-0.528163199254002,-0.518148320828568,0.489563613750595,-0.0298341958885063],"y":[-0.180730519841825,-0.36058428404228,-0.878928998766512,1,0.60928427515396,0.234734593773996,-0.492019939081809,0.0765535689588563,0.0637008725582509,-1]},"edges":{"from":["B Cells","B Cells","B Cells","B Cells","B Cells","B Cells","B Cells","B Cells","PTPRC_MRC1","PTPRC_MRC1","CD74_APP","CD74_APP","CD74_APP","CD74_APP","NRG1_ERBB4","PECAM1_CD38"],"to":["PTPRC_MRC1","PTPRC_MRC1","CD74_APP","CD74_APP","CD74_APP","CD74_APP","NRG1_ERBB4","PECAM1_CD38","Endothelial Cells","Macrophages","Cholangiocytes","Endothelial Cells","Macrophages","Portal Fibroblasts","Portal Hepatocytes","Macrophages"],"width":[2.82939012861156,5.44292564995838,2.29257498867729,2.63217122718603,2.74097559747716,2.3372600301796,2.30021128981962,2.61697638192086,2.82939012861156,5.44292564995838,2.29257498867729,2.63217122718603,2.74097559747716,2.3372600301796,2.30021128981962,2.61697638192086],"color":["black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black"]},"nodesToDataframe":true,"edgesToDataframe":true,"options":{"width":"100%","height":"100%","nodes":{"shape":"dot","physics":false},"manipulation":{"enabled":false},"edges":{"smooth":false,"arrows":"to"},"physics":{"stabilization":false}},"groups":null,"width":null,"height":null,"idselection":{"enabled":false},"byselection":{"enabled":false},"main":{"text":"B Cells","style":"font-family:Georgia, Times New Roman, Times, serif;font-weight:bold;font-size:20px;text-align:center;"},"submain":null,"footer":null,"background":"rgba(0, 0, 0, 0)","igraphlayout":{"type":"square"}},"evals":[],"jsHooks":[]}</script>

<!-- rnb-htmlwidget-end -->


<!-- rnb-htmlwidget-begin eyJkZXBlbmRlbmNpZXMiOlt7Im5hbWUiOiJodG1sd2lkZ2V0cyIsInZlcnNpb24iOiIxLjUuNCIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC9odG1sd2lkZ2V0cy93d3cifSwibWV0YSI6W10sInNjcmlwdCI6Imh0bWx3aWRnZXRzLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjp0cnVlfSx7Im5hbWUiOiJ2aXMiLCJ2ZXJzaW9uIjoiNC4yMC4xIiwic3JjIjp7ImZpbGUiOiJDOi9Vc2Vycy8xNTE3Ny9PbmVEcml2ZSAtIE1pY2hpZ2FuIFN0YXRlIFVuaXZlcnNpdHkvRG9jdW1lbnRzL1Ivd2luLWxpYnJhcnkvNC4wL3Zpc05ldHdvcmsvaHRtbHdpZGdldHMvbGliL3ZpcyJ9LCJtZXRhIjpbXSwic2NyaXB0IjoidmlzLm1pbi5qcyIsInN0eWxlc2hlZXQiOiJ2aXMuY3NzIiwiaGVhZCI6W10sImF0dGFjaG1lbnQiOltdLCJhbGxfZmlsZXMiOnRydWV9LHsibmFtZSI6InZpc05ldHdvcmstYmluZGluZyIsInZlcnNpb24iOiIyLjAuOSIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC92aXNOZXR3b3JrL2h0bWx3aWRnZXRzIn0sIm1ldGEiOltdLCJzY3JpcHQiOiJ2aXNOZXR3b3JrLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjpmYWxzZX1dLCJtZXRhZGF0YSI6eyJjbGFzc2VzIjpbInNoaW55LnRhZy5saXN0IiwibGlzdCJdLCJzaXppbmdQb2xpY3kiOltdfX0= -->

<div id="htmlwidget-f9059e36b2758626236e" style="width:960px;height:500px;" class="visNetwork html-widget"></div>
<script type="application/json" data-for="htmlwidget-f9059e36b2758626236e">{"x":{"nodes":{"id":["Cholangiocytes","Macrophages","Neutrophils","T Cells","Endothelial Cells","SPP1_CD44","MET_HGF","CADM1_CADM1"],"type":["dot","cell","cell","cell","cell","molecule","molecule","molecule"],"shape":["dot","dot","dot","dot","dot","diamond","diamond","diamond"],"label":["Cholangiocytes","Macrophages","Neutrophils","T Cells","Endothelial Cells","SPP1_CD44","MET_HGF","CADM1_CADM1"],"size":[25,20,20,20,20,10,10,10],"color.background":["#40bd57","#f78279","#f78279","#f78279","#f78279","#8a82ff","#8a82ff","#8a82ff"],"x":[-0.137075037045407,-0.709003207118511,-0.507752994485677,-1,1,-0.498688279973472,0.496489571878748,-0.35808738742886],"y":[-0.239656492868393,-0.686412268778242,1,0.455019055637767,-0.319234101012099,0.100313885548396,-0.290417867599458,-1]},"edges":{"from":["Cholangiocytes","Cholangiocytes","Cholangiocytes","Cholangiocytes","Cholangiocytes","SPP1_CD44","SPP1_CD44","SPP1_CD44","MET_HGF","CADM1_CADM1"],"to":["SPP1_CD44","SPP1_CD44","SPP1_CD44","MET_HGF","CADM1_CADM1","Macrophages","Neutrophils","T Cells","Endothelial Cells","Macrophages"],"width":[3.30408431536255,2.51544951569091,2.2793451466073,2.347227495612,2.41326333162255,3.30408431536255,2.51544951569091,2.2793451466073,2.347227495612,2.41326333162255],"color":["black","black","black","black","black","black","black","black","black","black"]},"nodesToDataframe":true,"edgesToDataframe":true,"options":{"width":"100%","height":"100%","nodes":{"shape":"dot","physics":false},"manipulation":{"enabled":false},"edges":{"smooth":false,"arrows":"to"},"physics":{"stabilization":false}},"groups":null,"width":null,"height":null,"idselection":{"enabled":false},"byselection":{"enabled":false},"main":{"text":"Cholangiocytes","style":"font-family:Georgia, Times New Roman, Times, serif;font-weight:bold;font-size:20px;text-align:center;"},"submain":null,"footer":null,"background":"rgba(0, 0, 0, 0)","igraphlayout":{"type":"square"}},"evals":[],"jsHooks":[]}</script>

<!-- rnb-htmlwidget-end -->


<!-- rnb-htmlwidget-begin eyJkZXBlbmRlbmNpZXMiOlt7Im5hbWUiOiJodG1sd2lkZ2V0cyIsInZlcnNpb24iOiIxLjUuNCIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC9odG1sd2lkZ2V0cy93d3cifSwibWV0YSI6W10sInNjcmlwdCI6Imh0bWx3aWRnZXRzLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjp0cnVlfSx7Im5hbWUiOiJ2aXMiLCJ2ZXJzaW9uIjoiNC4yMC4xIiwic3JjIjp7ImZpbGUiOiJDOi9Vc2Vycy8xNTE3Ny9PbmVEcml2ZSAtIE1pY2hpZ2FuIFN0YXRlIFVuaXZlcnNpdHkvRG9jdW1lbnRzL1Ivd2luLWxpYnJhcnkvNC4wL3Zpc05ldHdvcmsvaHRtbHdpZGdldHMvbGliL3ZpcyJ9LCJtZXRhIjpbXSwic2NyaXB0IjoidmlzLm1pbi5qcyIsInN0eWxlc2hlZXQiOiJ2aXMuY3NzIiwiaGVhZCI6W10sImF0dGFjaG1lbnQiOltdLCJhbGxfZmlsZXMiOnRydWV9LHsibmFtZSI6InZpc05ldHdvcmstYmluZGluZyIsInZlcnNpb24iOiIyLjAuOSIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC92aXNOZXR3b3JrL2h0bWx3aWRnZXRzIn0sIm1ldGEiOltdLCJzY3JpcHQiOiJ2aXNOZXR3b3JrLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjpmYWxzZX1dLCJtZXRhZGF0YSI6eyJjbGFzc2VzIjpbInNoaW55LnRhZy5saXN0IiwibGlzdCJdLCJzaXppbmdQb2xpY3kiOltdfX0= -->

<div id="htmlwidget-91e02b20fbd82ff404cd" style="width:960px;height:500px;" class="visNetwork html-widget"></div>
<script type="application/json" data-for="htmlwidget-91e02b20fbd82ff404cd">{"x":{"nodes":{"id":["Endothelial Cells","Macrophages","Plasmacytoid Dendritic Cells","Stellate Cells","Cholangiocytes","Neutrophils","Portal Fibroblasts","T Cells","JAM2_a4b1 complex","KDR_VEGFC","HGF_CD44","PECAM1_CD38","FLT4_VEGFC"],"type":["dot","cell","cell","cell","cell","cell","cell","cell","molecule","molecule","molecule","molecule","molecule"],"shape":["dot","dot","dot","dot","dot","dot","dot","dot","diamond","diamond","diamond","diamond","diamond"],"label":["Endothelial Cells","Macrophages","Plasmacytoid Dendritic Cells","Stellate Cells","Cholangiocytes","Neutrophils","Portal Fibroblasts","T Cells","JAM2_a4b1 complex","KDR_VEGFC","HGF_CD44","PECAM1_CD38","FLT4_VEGFC"],"size":[25,20,20,20,20,20,20,20,10,10,10,10,10],"color.background":["#40bd57","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff"],"x":[-0.195591502298204,-0.706790789670068,-0.196875104620056,0.0656526807967606,0.402438245809752,0.814218526963931,0.841627782433441,1,-0.415606302532488,-0.068177048402281,0.166949287826806,-1,-0.471949843577204],"y":[0.116755502807428,-0.254145269399637,-0.851209574631095,0.641586136359081,-1,-0.676121994223468,0.321571747536424,-0.19139352906594,-0.412649458106518,1,-0.159535701288072,0.127661676120001,0.794614503174436]},"edges":{"from":["Endothelial Cells","Endothelial Cells","Endothelial Cells","Endothelial Cells","Endothelial Cells","Endothelial Cells","Endothelial Cells","Endothelial Cells","Endothelial Cells","Endothelial Cells","Endothelial Cells","Endothelial Cells","JAM2_a4b1 complex","JAM2_a4b1 complex","KDR_VEGFC","HGF_CD44","HGF_CD44","HGF_CD44","HGF_CD44","HGF_CD44","HGF_CD44","HGF_CD44","PECAM1_CD38","FLT4_VEGFC"],"to":["JAM2_a4b1 complex","JAM2_a4b1 complex","KDR_VEGFC","HGF_CD44","HGF_CD44","HGF_CD44","HGF_CD44","HGF_CD44","HGF_CD44","HGF_CD44","PECAM1_CD38","FLT4_VEGFC","Macrophages","Plasmacytoid Dendritic Cells","Stellate Cells","Cholangiocytes","Macrophages","Neutrophils","Portal Fibroblasts","Stellate Cells","Plasmacytoid Dendritic Cells","T Cells","Macrophages","Stellate Cells"],"width":[2.72176444564213,2.4239436985246,2.42179957043826,2.58957915066481,5.71119339373532,3.84276272292907,2.82645038889255,2.75207520593416,3.1028851238899,3.32393770487647,2.90487529146465,2.51081766259458,2.72176444564213,2.4239436985246,2.42179957043826,2.58957915066481,5.71119339373532,3.84276272292907,2.82645038889255,2.75207520593416,3.1028851238899,3.32393770487647,2.90487529146465,2.51081766259458],"color":["black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black"]},"nodesToDataframe":true,"edgesToDataframe":true,"options":{"width":"100%","height":"100%","nodes":{"shape":"dot","physics":false},"manipulation":{"enabled":false},"edges":{"smooth":false,"arrows":"to"},"physics":{"stabilization":false}},"groups":null,"width":null,"height":null,"idselection":{"enabled":false},"byselection":{"enabled":false},"main":{"text":"Endothelial Cells","style":"font-family:Georgia, Times New Roman, Times, serif;font-weight:bold;font-size:20px;text-align:center;"},"submain":null,"footer":null,"background":"rgba(0, 0, 0, 0)","igraphlayout":{"type":"square"}},"evals":[],"jsHooks":[]}</script>

<!-- rnb-htmlwidget-end -->


<!-- rnb-htmlwidget-begin eyJkZXBlbmRlbmNpZXMiOlt7Im5hbWUiOiJodG1sd2lkZ2V0cyIsInZlcnNpb24iOiIxLjUuNCIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC9odG1sd2lkZ2V0cy93d3cifSwibWV0YSI6W10sInNjcmlwdCI6Imh0bWx3aWRnZXRzLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjp0cnVlfSx7Im5hbWUiOiJ2aXMiLCJ2ZXJzaW9uIjoiNC4yMC4xIiwic3JjIjp7ImZpbGUiOiJDOi9Vc2Vycy8xNTE3Ny9PbmVEcml2ZSAtIE1pY2hpZ2FuIFN0YXRlIFVuaXZlcnNpdHkvRG9jdW1lbnRzL1Ivd2luLWxpYnJhcnkvNC4wL3Zpc05ldHdvcmsvaHRtbHdpZGdldHMvbGliL3ZpcyJ9LCJtZXRhIjpbXSwic2NyaXB0IjoidmlzLm1pbi5qcyIsInN0eWxlc2hlZXQiOiJ2aXMuY3NzIiwiaGVhZCI6W10sImF0dGFjaG1lbnQiOltdLCJhbGxfZmlsZXMiOnRydWV9LHsibmFtZSI6InZpc05ldHdvcmstYmluZGluZyIsInZlcnNpb24iOiIyLjAuOSIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC92aXNOZXR3b3JrL2h0bWx3aWRnZXRzIn0sIm1ldGEiOltdLCJzY3JpcHQiOiJ2aXNOZXR3b3JrLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjpmYWxzZX1dLCJtZXRhZGF0YSI6eyJjbGFzc2VzIjpbInNoaW55LnRhZy5saXN0IiwibGlzdCJdLCJzaXppbmdQb2xpY3kiOltdfX0= -->

<div id="htmlwidget-d91e3c5550e350604d3d" style="width:960px;height:500px;" class="visNetwork html-widget"></div>
<script type="application/json" data-for="htmlwidget-d91e3c5550e350604d3d">{"x":{"nodes":{"id":["Central Hepatocytes","Cholangiocytes","Endothelial Cells","Stellate Cells","Portal Hepatocytes","Portal Fibroblasts","B Cells","Macrophages","Neutrophils","Plasmacytoid Dendritic Cells","T Cells","COL9A2_a2b1 complex","COL9A2_a1b1 complex","NRG1_LGR4","NRG1_LSR","NRG1_ERBB4"],"type":["dot","cell","cell","cell","cell","cell","cell","cell","cell","cell","cell","molecule","molecule","molecule","molecule","molecule"],"shape":["dot","dot","dot","dot","dot","dot","dot","dot","dot","dot","dot","diamond","diamond","diamond","diamond","diamond"],"label":["Central Hepatocytes","Cholangiocytes","Endothelial Cells","Stellate Cells","Portal Hepatocytes","Portal Fibroblasts","B Cells","Macrophages","Neutrophils","Plasmacytoid Dendritic Cells","T Cells","COL9A2_a2b1 complex","COL9A2_a1b1 complex","NRG1_LGR4","NRG1_LSR","NRG1_ERBB4"],"size":[25,20,20,20,20,20,20,20,20,20,20,10,10,10,10,10],"color.background":["#40bd57","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff"],"x":[-0.185639761771273,-0.510481208567153,-0.110608862169804,-0.741422309897965,-0.44735677189567,-0.224118011682348,0.706949980982611,0.978459447093209,0.274674350488372,1,0.730627702725224,-1,-0.31099477007879,-0.340142717402012,-0.638101104723701,0.113619913811773],"y":[0.146388210676995,0.602016258263491,-1,-0.940817082935677,0.195870489322092,0.825379325056654,0.83811088291928,0.58820594196008,1,0.277826725693229,-0.00283050133532869,0.400660615793382,-0.477177023716231,0.428365853634968,-0.0407982967239325,0.390614235509607]},"edges":{"from":["Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","Central Hepatocytes","COL9A2_a2b1 complex","COL9A2_a1b1 complex","COL9A2_a1b1 complex","NRG1_LGR4","NRG1_LGR4","NRG1_LGR4","NRG1_LSR","NRG1_LSR","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4"],"to":["COL9A2_a2b1 complex","COL9A2_a1b1 complex","COL9A2_a1b1 complex","NRG1_LGR4","NRG1_LGR4","NRG1_LGR4","NRG1_LSR","NRG1_LSR","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","Cholangiocytes","Endothelial Cells","Stellate Cells","Cholangiocytes","Portal Hepatocytes","Portal Fibroblasts","Portal Hepatocytes","Portal Hepatocytes","B Cells","Cholangiocytes","Cholangiocytes","Portal Hepatocytes","Portal Hepatocytes","Macrophages","Neutrophils","Portal Fibroblasts","Plasmacytoid Dendritic Cells","T Cells"],"width":[2.319549029446,2.40479107788574,3.17835186087473,4.6466679666984,4.31757291814696,4.42064114891307,5.01932974642067,2.40690317553221,3.16371372552814,4.4603590043814,2.38803614074916,3.85313323395013,2.94569280755839,2.61446126710802,3.23438552854294,3.39725107538084,2.67621227786543,2.76607597196539,2.319549029446,2.40479107788574,3.17835186087473,4.6466679666984,4.31757291814696,4.42064114891307,5.01932974642067,2.40690317553221,3.16371372552814,4.4603590043814,2.38803614074916,3.85313323395013,2.94569280755839,2.61446126710802,3.23438552854294,3.39725107538084,2.67621227786543,2.76607597196539],"color":["black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black"]},"nodesToDataframe":true,"edgesToDataframe":true,"options":{"width":"100%","height":"100%","nodes":{"shape":"dot","physics":false},"manipulation":{"enabled":false},"edges":{"smooth":false,"arrows":"to"},"physics":{"stabilization":false}},"groups":null,"width":null,"height":null,"idselection":{"enabled":false},"byselection":{"enabled":false},"main":{"text":"Central Hepatocytes","style":"font-family:Georgia, Times New Roman, Times, serif;font-weight:bold;font-size:20px;text-align:center;"},"submain":null,"footer":null,"background":"rgba(0, 0, 0, 0)","igraphlayout":{"type":"square"}},"evals":[],"jsHooks":[]}</script>

<!-- rnb-htmlwidget-end -->


<!-- rnb-htmlwidget-begin eyJkZXBlbmRlbmNpZXMiOlt7Im5hbWUiOiJodG1sd2lkZ2V0cyIsInZlcnNpb24iOiIxLjUuNCIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC9odG1sd2lkZ2V0cy93d3cifSwibWV0YSI6W10sInNjcmlwdCI6Imh0bWx3aWRnZXRzLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjp0cnVlfSx7Im5hbWUiOiJ2aXMiLCJ2ZXJzaW9uIjoiNC4yMC4xIiwic3JjIjp7ImZpbGUiOiJDOi9Vc2Vycy8xNTE3Ny9PbmVEcml2ZSAtIE1pY2hpZ2FuIFN0YXRlIFVuaXZlcnNpdHkvRG9jdW1lbnRzL1Ivd2luLWxpYnJhcnkvNC4wL3Zpc05ldHdvcmsvaHRtbHdpZGdldHMvbGliL3ZpcyJ9LCJtZXRhIjpbXSwic2NyaXB0IjoidmlzLm1pbi5qcyIsInN0eWxlc2hlZXQiOiJ2aXMuY3NzIiwiaGVhZCI6W10sImF0dGFjaG1lbnQiOltdLCJhbGxfZmlsZXMiOnRydWV9LHsibmFtZSI6InZpc05ldHdvcmstYmluZGluZyIsInZlcnNpb24iOiIyLjAuOSIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC92aXNOZXR3b3JrL2h0bWx3aWRnZXRzIn0sIm1ldGEiOltdLCJzY3JpcHQiOiJ2aXNOZXR3b3JrLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjpmYWxzZX1dLCJtZXRhZGF0YSI6eyJjbGFzc2VzIjpbInNoaW55LnRhZy5saXN0IiwibGlzdCJdLCJzaXppbmdQb2xpY3kiOltdfX0= -->

<div id="htmlwidget-fe7c8082269f95d9dda6" style="width:960px;height:500px;" class="visNetwork html-widget"></div>
<script type="application/json" data-for="htmlwidget-fe7c8082269f95d9dda6">{"x":{"nodes":{"id":["Portal Hepatocytes","Stellate Cells","Cholangiocytes","Central Hepatocytes","Portal Fibroblasts","COL9A2_a1b1 complex","NRG1_LGR4","NRG1_LSR","NRG1_ERBB4"],"type":["dot","cell","cell","cell","cell","molecule","molecule","molecule","molecule"],"shape":["dot","dot","dot","dot","dot","diamond","diamond","diamond","diamond"],"label":["Portal Hepatocytes","Stellate Cells","Cholangiocytes","Central Hepatocytes","Portal Fibroblasts","COL9A2_a1b1 complex","NRG1_LGR4","NRG1_LSR","NRG1_ERBB4"],"size":[25,20,20,20,20,10,10,10,10],"color.background":["#40bd57","#f78279","#f78279","#f78279","#f78279","#8a82ff","#8a82ff","#8a82ff","#8a82ff"],"x":[-0.329366883490624,1,-0.410415523105868,-1,-0.832523163595626,0.430855893943866,-0.546166476830739,-0.827992973639832,-0.667939949007567],"y":[0.137861616709524,0.209225914373181,0.747363817088107,0.221718495952211,-1,0.163983200134556,-0.305034814776754,1,0.0574279560648598]},"edges":{"from":["Portal Hepatocytes","Portal Hepatocytes","Portal Hepatocytes","Portal Hepatocytes","Portal Hepatocytes","Portal Hepatocytes","Portal Hepatocytes","Portal Hepatocytes","Portal Hepatocytes","COL9A2_a1b1 complex","NRG1_LGR4","NRG1_LGR4","NRG1_LGR4","NRG1_LSR","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4"],"to":["COL9A2_a1b1 complex","NRG1_LGR4","NRG1_LGR4","NRG1_LGR4","NRG1_LSR","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","Stellate Cells","Cholangiocytes","Central Hepatocytes","Portal Fibroblasts","Central Hepatocytes","Cholangiocytes","Central Hepatocytes","Central Hepatocytes","Portal Fibroblasts"],"width":[2.52009921210258,2.89869260910342,3.07156466525682,2.80026037648735,3.17468049219827,2.8176670373505,2.37563350044581,2.84715517596297,2.33329878586599,2.52009921210258,2.89869260910342,3.07156466525682,2.80026037648735,3.17468049219827,2.8176670373505,2.37563350044581,2.84715517596297,2.33329878586599],"color":["black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black"]},"nodesToDataframe":true,"edgesToDataframe":true,"options":{"width":"100%","height":"100%","nodes":{"shape":"dot","physics":false},"manipulation":{"enabled":false},"edges":{"smooth":false,"arrows":"to"},"physics":{"stabilization":false}},"groups":null,"width":null,"height":null,"idselection":{"enabled":false},"byselection":{"enabled":false},"main":{"text":"Portal Hepatocytes","style":"font-family:Georgia, Times New Roman, Times, serif;font-weight:bold;font-size:20px;text-align:center;"},"submain":null,"footer":null,"background":"rgba(0, 0, 0, 0)","igraphlayout":{"type":"square"}},"evals":[],"jsHooks":[]}</script>

<!-- rnb-htmlwidget-end -->


<!-- rnb-htmlwidget-begin eyJkZXBlbmRlbmNpZXMiOlt7Im5hbWUiOiJodG1sd2lkZ2V0cyIsInZlcnNpb24iOiIxLjUuNCIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC9odG1sd2lkZ2V0cy93d3cifSwibWV0YSI6W10sInNjcmlwdCI6Imh0bWx3aWRnZXRzLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjp0cnVlfSx7Im5hbWUiOiJ2aXMiLCJ2ZXJzaW9uIjoiNC4yMC4xIiwic3JjIjp7ImZpbGUiOiJDOi9Vc2Vycy8xNTE3Ny9PbmVEcml2ZSAtIE1pY2hpZ2FuIFN0YXRlIFVuaXZlcnNpdHkvRG9jdW1lbnRzL1Ivd2luLWxpYnJhcnkvNC4wL3Zpc05ldHdvcmsvaHRtbHdpZGdldHMvbGliL3ZpcyJ9LCJtZXRhIjpbXSwic2NyaXB0IjoidmlzLm1pbi5qcyIsInN0eWxlc2hlZXQiOiJ2aXMuY3NzIiwiaGVhZCI6W10sImF0dGFjaG1lbnQiOltdLCJhbGxfZmlsZXMiOnRydWV9LHsibmFtZSI6InZpc05ldHdvcmstYmluZGluZyIsInZlcnNpb24iOiIyLjAuOSIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC92aXNOZXR3b3JrL2h0bWx3aWRnZXRzIn0sIm1ldGEiOltdLCJzY3JpcHQiOiJ2aXNOZXR3b3JrLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjpmYWxzZX1dLCJtZXRhZGF0YSI6eyJjbGFzc2VzIjpbInNoaW55LnRhZy5saXN0IiwibGlzdCJdLCJzaXppbmdQb2xpY3kiOltdfX0= -->

<div id="htmlwidget-bf3860b1b172169d2077" style="width:960px;height:500px;" class="visNetwork html-widget"></div>
<script type="application/json" data-for="htmlwidget-bf3860b1b172169d2077">{"x":{"nodes":{"id":["Macrophages","Cholangiocytes","Portal Fibroblasts","B Cells","Endothelial Cells","Central Hepatocytes","Portal Hepatocytes","Stellate Cells","Plasmacytoid Dendritic Cells","T Cells","MERTK_GAS6","CD44_FGFR2","PTPRC_MRC1","CADM1_CADM1","CD74_APP","CSF1R_CSF1","NRG1_ERBB4","PTPRC_CD22","CSF1R_IL34"],"type":["dot","cell","cell","cell","cell","cell","cell","cell","cell","cell","molecule","molecule","molecule","molecule","molecule","molecule","molecule","molecule","molecule"],"shape":["dot","dot","dot","dot","dot","dot","dot","dot","dot","dot","diamond","diamond","diamond","diamond","diamond","diamond","diamond","diamond","diamond"],"label":["Macrophages","Cholangiocytes","Portal Fibroblasts","B Cells","Endothelial Cells","Central Hepatocytes","Portal Hepatocytes","Stellate Cells","Plasmacytoid Dendritic Cells","T Cells","MERTK_GAS6","CD44_FGFR2","PTPRC_MRC1","CADM1_CADM1","CD74_APP","CSF1R_CSF1","NRG1_ERBB4","PTPRC_CD22","CSF1R_IL34"],"size":[25,20,20,20,20,20,20,20,20,20,10,10,10,10,10,10,10,10,10],"color.background":["#40bd57","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff"],"x":[-0.169184184283468,-0.48021100115792,0.202747021964854,0.137901525898723,-0.597877860934162,0.654986937839733,0.840748453841594,0.909837486387659,0.310683231677528,1,-0.355737523447436,0.189912581374175,-1,-0.146778943135765,-0.841881191385735,0.402526393601976,0.309130971196987,-0.280257872104104,-0.897649076532288],"y":[-0.0261691535958508,0.726213351309955,0.625398457423795,-1,-0.38291114386953,-0.788779451665576,-0.444937856577255,0.139633846679588,1,0.569306989727926,0.412237244188166,0.00599603944242988,-0.191463078785195,0.716726378809623,-0.67754860103527,0.252449389650291,-0.488104943643128,-0.99237246984421,0.547416224947514]},"edges":{"from":["Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","Macrophages","MERTK_GAS6","MERTK_GAS6","CD44_FGFR2","CD44_FGFR2","CD44_FGFR2","CD44_FGFR2","CD44_FGFR2","CD44_FGFR2","CD44_FGFR2","CD44_FGFR2","CD44_FGFR2","PTPRC_MRC1","CADM1_CADM1","CADM1_CADM1","CD74_APP","CSF1R_CSF1","CSF1R_CSF1","NRG1_ERBB4","NRG1_ERBB4","PTPRC_CD22","CSF1R_IL34"],"to":["MERTK_GAS6","MERTK_GAS6","CD44_FGFR2","CD44_FGFR2","CD44_FGFR2","CD44_FGFR2","CD44_FGFR2","CD44_FGFR2","CD44_FGFR2","CD44_FGFR2","CD44_FGFR2","PTPRC_MRC1","CADM1_CADM1","CADM1_CADM1","CD74_APP","CSF1R_CSF1","CSF1R_CSF1","NRG1_ERBB4","NRG1_ERBB4","PTPRC_CD22","CSF1R_IL34","Cholangiocytes","Portal Fibroblasts","B Cells","Cholangiocytes","Endothelial Cells","Central Hepatocytes","Portal Hepatocytes","Portal Fibroblasts","Stellate Cells","Plasmacytoid Dendritic Cells","T Cells","Endothelial Cells","Cholangiocytes","Plasmacytoid Dendritic Cells","Endothelial Cells","Portal Fibroblasts","Stellate Cells","Central Hepatocytes","Portal Hepatocytes","B Cells","Cholangiocytes"],"width":[3.33194040996302,3.83759569079157,2.39638221132321,2.83528763349454,2.55076315509126,2.82645038889255,2.39220136322668,2.8441791851059,2.35728775080862,2.32542005430511,2.43472522537613,3.35210224124947,2.41326333162255,2.61949643628301,2.30405048142799,2.54124597400481,2.38181744579318,2.62708635815782,2.58711758034874,2.87725296064063,2.36744187671197,3.33194040996302,3.83759569079157,2.39638221132321,2.83528763349454,2.55076315509126,2.82645038889255,2.39220136322668,2.8441791851059,2.35728775080862,2.32542005430511,2.43472522537613,3.35210224124947,2.41326333162255,2.61949643628301,2.30405048142799,2.54124597400481,2.38181744579318,2.62708635815782,2.58711758034874,2.87725296064063,2.36744187671197],"color":["black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black"]},"nodesToDataframe":true,"edgesToDataframe":true,"options":{"width":"100%","height":"100%","nodes":{"shape":"dot","physics":false},"manipulation":{"enabled":false},"edges":{"smooth":false,"arrows":"to"},"physics":{"stabilization":false}},"groups":null,"width":null,"height":null,"idselection":{"enabled":false},"byselection":{"enabled":false},"main":{"text":"Macrophages","style":"font-family:Georgia, Times New Roman, Times, serif;font-weight:bold;font-size:20px;text-align:center;"},"submain":null,"footer":null,"background":"rgba(0, 0, 0, 0)","igraphlayout":{"type":"square"}},"evals":[],"jsHooks":[]}</script>

<!-- rnb-htmlwidget-end -->


<!-- rnb-htmlwidget-begin eyJkZXBlbmRlbmNpZXMiOlt7Im5hbWUiOiJodG1sd2lkZ2V0cyIsInZlcnNpb24iOiIxLjUuNCIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC9odG1sd2lkZ2V0cy93d3cifSwibWV0YSI6W10sInNjcmlwdCI6Imh0bWx3aWRnZXRzLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjp0cnVlfSx7Im5hbWUiOiJ2aXMiLCJ2ZXJzaW9uIjoiNC4yMC4xIiwic3JjIjp7ImZpbGUiOiJDOi9Vc2Vycy8xNTE3Ny9PbmVEcml2ZSAtIE1pY2hpZ2FuIFN0YXRlIFVuaXZlcnNpdHkvRG9jdW1lbnRzL1Ivd2luLWxpYnJhcnkvNC4wL3Zpc05ldHdvcmsvaHRtbHdpZGdldHMvbGliL3ZpcyJ9LCJtZXRhIjpbXSwic2NyaXB0IjoidmlzLm1pbi5qcyIsInN0eWxlc2hlZXQiOiJ2aXMuY3NzIiwiaGVhZCI6W10sImF0dGFjaG1lbnQiOltdLCJhbGxfZmlsZXMiOnRydWV9LHsibmFtZSI6InZpc05ldHdvcmstYmluZGluZyIsInZlcnNpb24iOiIyLjAuOSIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC92aXNOZXR3b3JrL2h0bWx3aWRnZXRzIn0sIm1ldGEiOltdLCJzY3JpcHQiOiJ2aXNOZXR3b3JrLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjpmYWxzZX1dLCJtZXRhZGF0YSI6eyJjbGFzc2VzIjpbInNoaW55LnRhZy5saXN0IiwibGlzdCJdLCJzaXppbmdQb2xpY3kiOltdfX0= -->

<div id="htmlwidget-fe3d58b5333fd9797e38" style="width:960px;height:500px;" class="visNetwork html-widget"></div>
<script type="application/json" data-for="htmlwidget-fe3d58b5333fd9797e38">{"x":{"nodes":{"id":["Neutrophils","B Cells","Cholangiocytes","Endothelial Cells","Macrophages","CD44_FGFR2","PTPRC_MRC1","PTPRC_CD22"],"type":["dot","cell","cell","cell","cell","molecule","molecule","molecule"],"shape":["dot","dot","dot","dot","dot","diamond","diamond","diamond"],"label":["Neutrophils","B Cells","Cholangiocytes","Endothelial Cells","Macrophages","CD44_FGFR2","PTPRC_MRC1","PTPRC_CD22"],"size":[25,20,20,20,20,10,10,10],"color.background":["#40bd57","#f78279","#f78279","#f78279","#f78279","#8a82ff","#8a82ff","#8a82ff"],"x":[-0.155782413537928,-1,-0.136885749634617,1,0.310052809121149,-0.316363579426607,0.292004244568306,-0.884745996742084],"y":[-0.0251100060575086,0.472288200469137,1,-0.621462375140116,-1,0.458277998165597,-0.455778546614573,0.0490332758497569]},"edges":{"from":["Neutrophils","Neutrophils","Neutrophils","Neutrophils","Neutrophils","CD44_FGFR2","CD44_FGFR2","PTPRC_MRC1","PTPRC_MRC1","PTPRC_CD22"],"to":["CD44_FGFR2","CD44_FGFR2","PTPRC_MRC1","PTPRC_MRC1","PTPRC_CD22","B Cells","Cholangiocytes","Endothelial Cells","Macrophages","B Cells"],"width":[2.319549029446,2.58957915066481,3.44351754623679,7.51071781495899,2.94569280755839,2.319549029446,2.58957915066481,3.44351754623679,7.51071781495899,2.94569280755839],"color":["black","black","black","black","black","black","black","black","black","black"]},"nodesToDataframe":true,"edgesToDataframe":true,"options":{"width":"100%","height":"100%","nodes":{"shape":"dot","physics":false},"manipulation":{"enabled":false},"edges":{"smooth":false,"arrows":"to"},"physics":{"stabilization":false}},"groups":null,"width":null,"height":null,"idselection":{"enabled":false},"byselection":{"enabled":false},"main":{"text":"Neutrophils","style":"font-family:Georgia, Times New Roman, Times, serif;font-weight:bold;font-size:20px;text-align:center;"},"submain":null,"footer":null,"background":"rgba(0, 0, 0, 0)","igraphlayout":{"type":"square"}},"evals":[],"jsHooks":[]}</script>

<!-- rnb-htmlwidget-end -->


<!-- rnb-htmlwidget-begin eyJkZXBlbmRlbmNpZXMiOlt7Im5hbWUiOiJodG1sd2lkZ2V0cyIsInZlcnNpb24iOiIxLjUuNCIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC9odG1sd2lkZ2V0cy93d3cifSwibWV0YSI6W10sInNjcmlwdCI6Imh0bWx3aWRnZXRzLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjp0cnVlfSx7Im5hbWUiOiJ2aXMiLCJ2ZXJzaW9uIjoiNC4yMC4xIiwic3JjIjp7ImZpbGUiOiJDOi9Vc2Vycy8xNTE3Ny9PbmVEcml2ZSAtIE1pY2hpZ2FuIFN0YXRlIFVuaXZlcnNpdHkvRG9jdW1lbnRzL1Ivd2luLWxpYnJhcnkvNC4wL3Zpc05ldHdvcmsvaHRtbHdpZGdldHMvbGliL3ZpcyJ9LCJtZXRhIjpbXSwic2NyaXB0IjoidmlzLm1pbi5qcyIsInN0eWxlc2hlZXQiOiJ2aXMuY3NzIiwiaGVhZCI6W10sImF0dGFjaG1lbnQiOltdLCJhbGxfZmlsZXMiOnRydWV9LHsibmFtZSI6InZpc05ldHdvcmstYmluZGluZyIsInZlcnNpb24iOiIyLjAuOSIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC92aXNOZXR3b3JrL2h0bWx3aWRnZXRzIn0sIm1ldGEiOltdLCJzY3JpcHQiOiJ2aXNOZXR3b3JrLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjpmYWxzZX1dLCJtZXRhZGF0YSI6eyJjbGFzc2VzIjpbInNoaW55LnRhZy5saXN0IiwibGlzdCJdLCJzaXppbmdQb2xpY3kiOltdfX0= -->

<div id="htmlwidget-66f61412a038b73e3c8c" style="width:960px;height:500px;" class="visNetwork html-widget"></div>
<script type="application/json" data-for="htmlwidget-66f61412a038b73e3c8c">{"x":{"nodes":{"id":["Portal Fibroblasts","Endothelial Cells","Stellate Cells","Cholangiocytes","Plasmacytoid Dendritic Cells","Central Hepatocytes","Portal Hepatocytes","Macrophages","B Cells","Neutrophils","COL4A2_a1b1 complex","COL4A5_a2b1 complex","EGFR_TGFB1","NRG1_LGR4","FGF2_CD44","NRG1_LSR","MET_HGF","EGFR_NRG1","NRG1_ERBB4","NRG2_ERBB4"],"type":["dot","cell","cell","cell","cell","cell","cell","cell","cell","cell","molecule","molecule","molecule","molecule","molecule","molecule","molecule","molecule","molecule","molecule"],"shape":["dot","dot","dot","dot","dot","dot","dot","dot","dot","dot","diamond","diamond","diamond","diamond","diamond","diamond","diamond","diamond","diamond","diamond"],"label":["Portal Fibroblasts","Endothelial Cells","Stellate Cells","Cholangiocytes","Plasmacytoid Dendritic Cells","Central Hepatocytes","Portal Hepatocytes","Macrophages","B Cells","Neutrophils","COL4A2_a1b1 complex","COL4A5_a2b1 complex","EGFR_TGFB1","NRG1_LGR4","FGF2_CD44","NRG1_LSR","MET_HGF","EGFR_NRG1","NRG1_ERBB4","NRG2_ERBB4"],"size":[25,20,20,20,20,20,20,20,20,20,10,10,10,10,10,10,10,10,10,10],"color.background":["#40bd57","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff"],"x":[-0.182325167131239,0.270781881983324,-0.0703572663902435,-0.186789188383288,1,-0.579354279641939,-0.636598640729071,-1,-0.0417428497922712,0.286935474039649,-0.0559006042009927,0.117258875358738,0.50753886501972,-0.331945178576084,-0.807453039009502,-0.50701141438662,0.193823591324033,-0.458478373250476,-0.458217539791169,-0.0020419042774793],"y":[-0.0259281099008903,-0.746965548965789,-1,0.340162761027988,-0.0360759377602144,-0.177203914694714,0.257633823143887,0.151023933003475,1,0.91112521494305,-0.515922512904808,0.230727933456944,-0.0343682490320578,0.135696664518967,-0.0330843709012928,-0.0441007759155807,-0.417594914738783,-0.416762699038785,0.0771824316054801,0.522843924380707]},"edges":{"from":["Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","Portal Fibroblasts","COL4A2_a1b1 complex","COL4A2_a1b1 complex","COL4A5_a2b1 complex","EGFR_TGFB1","NRG1_LGR4","NRG1_LGR4","NRG1_LGR4","FGF2_CD44","NRG1_LSR","NRG1_LSR","MET_HGF","EGFR_NRG1","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG2_ERBB4","NRG2_ERBB4"],"to":["COL4A2_a1b1 complex","COL4A2_a1b1 complex","COL4A5_a2b1 complex","EGFR_TGFB1","NRG1_LGR4","NRG1_LGR4","NRG1_LGR4","FGF2_CD44","NRG1_LSR","NRG1_LSR","MET_HGF","EGFR_NRG1","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG1_ERBB4","NRG2_ERBB4","NRG2_ERBB4","Endothelial Cells","Stellate Cells","Cholangiocytes","Plasmacytoid Dendritic Cells","Cholangiocytes","Central Hepatocytes","Portal Hepatocytes","Macrophages","Central Hepatocytes","Portal Hepatocytes","Endothelial Cells","Central Hepatocytes","Cholangiocytes","Central Hepatocytes","Central Hepatocytes","Portal Hepatocytes","Portal Hepatocytes","Macrophages","B Cells","Neutrophils"],"width":[2.30597536562976,3.00737263219402,2.2552187090677,2.36744187671197,2.91731760251569,3.09237825631851,2.7745444493989,2.8205888584767,3.1968280129635,3.08193828047657,2.45218908180898,3.02067375888479,2.83528763349454,2.86815867965464,2.64497134183447,2.60195936417882,2.56035433853887,2.34123595013545,2.41326333162255,2.80603902720653,2.30597536562976,3.00737263219402,2.2552187090677,2.36744187671197,2.91731760251569,3.09237825631851,2.7745444493989,2.8205888584767,3.1968280129635,3.08193828047657,2.45218908180898,3.02067375888479,2.83528763349454,2.86815867965464,2.64497134183447,2.60195936417882,2.56035433853887,2.34123595013545,2.41326333162255,2.80603902720653],"color":["black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black"]},"nodesToDataframe":true,"edgesToDataframe":true,"options":{"width":"100%","height":"100%","nodes":{"shape":"dot","physics":false},"manipulation":{"enabled":false},"edges":{"smooth":false,"arrows":"to"},"physics":{"stabilization":false}},"groups":null,"width":null,"height":null,"idselection":{"enabled":false},"byselection":{"enabled":false},"main":{"text":"Portal Fibroblasts","style":"font-family:Georgia, Times New Roman, Times, serif;font-weight:bold;font-size:20px;text-align:center;"},"submain":null,"footer":null,"background":"rgba(0, 0, 0, 0)","igraphlayout":{"type":"square"}},"evals":[],"jsHooks":[]}</script>

<!-- rnb-htmlwidget-end -->


<!-- rnb-htmlwidget-begin eyJkZXBlbmRlbmNpZXMiOlt7Im5hbWUiOiJodG1sd2lkZ2V0cyIsInZlcnNpb24iOiIxLjUuNCIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC9odG1sd2lkZ2V0cy93d3cifSwibWV0YSI6W10sInNjcmlwdCI6Imh0bWx3aWRnZXRzLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjp0cnVlfSx7Im5hbWUiOiJ2aXMiLCJ2ZXJzaW9uIjoiNC4yMC4xIiwic3JjIjp7ImZpbGUiOiJDOi9Vc2Vycy8xNTE3Ny9PbmVEcml2ZSAtIE1pY2hpZ2FuIFN0YXRlIFVuaXZlcnNpdHkvRG9jdW1lbnRzL1Ivd2luLWxpYnJhcnkvNC4wL3Zpc05ldHdvcmsvaHRtbHdpZGdldHMvbGliL3ZpcyJ9LCJtZXRhIjpbXSwic2NyaXB0IjoidmlzLm1pbi5qcyIsInN0eWxlc2hlZXQiOiJ2aXMuY3NzIiwiaGVhZCI6W10sImF0dGFjaG1lbnQiOltdLCJhbGxfZmlsZXMiOnRydWV9LHsibmFtZSI6InZpc05ldHdvcmstYmluZGluZyIsInZlcnNpb24iOiIyLjAuOSIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC92aXNOZXR3b3JrL2h0bWx3aWRnZXRzIn0sIm1ldGEiOltdLCJzY3JpcHQiOiJ2aXNOZXR3b3JrLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjpmYWxzZX1dLCJtZXRhZGF0YSI6eyJjbGFzc2VzIjpbInNoaW55LnRhZy5saXN0IiwibGlzdCJdLCJzaXppbmdQb2xpY3kiOltdfX0= -->

<div id="htmlwidget-e8a5b1096a0ad3ebf993" style="width:960px;height:500px;" class="visNetwork html-widget"></div>
<script type="application/json" data-for="htmlwidget-e8a5b1096a0ad3ebf993">{"x":{"nodes":{"id":["Stellate Cells","Cholangiocytes","Endothelial Cells","Portal Hepatocytes","Macrophages","Plasmacytoid Dendritic Cells","Portal Fibroblasts","Central Hepatocytes","COL4A1_a2b1 complex","COL3A1_a2b1 complex","TNC_a9b1 complex","COL1A2_a2b1 complex","COL4A2_a2b1 complex","TNC_a4b1 complex","COL5A2_a2b1 complex","TGFB2_TGFBR3","ADGRL1_NRG1","EGFR_NRG1"],"type":["dot","cell","cell","cell","cell","cell","cell","cell","molecule","molecule","molecule","molecule","molecule","molecule","molecule","molecule","molecule","molecule"],"shape":["dot","dot","dot","dot","dot","dot","dot","dot","diamond","diamond","diamond","diamond","diamond","diamond","diamond","diamond","diamond","diamond"],"label":["Stellate Cells","Cholangiocytes","Endothelial Cells","Portal Hepatocytes","Macrophages","Plasmacytoid Dendritic Cells","Portal Fibroblasts","Central Hepatocytes","COL4A1_a2b1 complex","COL3A1_a2b1 complex","TNC_a9b1 complex","COL1A2_a2b1 complex","COL4A2_a2b1 complex","TNC_a4b1 complex","COL5A2_a2b1 complex","TGFB2_TGFBR3","ADGRL1_NRG1","EGFR_NRG1"],"size":[25,20,20,20,20,20,20,20,10,10,10,10,10,10,10,10,10,10],"color.background":["#40bd57","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff"],"x":[-0.244255578107856,-0.592856683046516,1,0.546160331038801,0.597715970202921,0.368337676632039,0.363374205675462,-0.373607457746081,-1,-0.983416669011489,0.197058382397284,-0.398372018780494,-0.753990861869562,0.133464772641365,-0.768372846177212,0.251789699005695,-0.0310446266427024,-0.567930449227016],"y":[-0.0835298725940072,0.116230348223153,0.112090521340406,-0.33466771419736,0.456976594666274,1,-0.962463733357073,-1,-0.089402553203472,0.164623564632995,0.0410842556833042,0.407292455202511,0.388210897798266,0.435419640944128,-0.248789999222105,-0.628106990503704,-0.51329011627365,-0.673070886735464]},"edges":{"from":["Stellate Cells","Stellate Cells","Stellate Cells","Stellate Cells","Stellate Cells","Stellate Cells","Stellate Cells","Stellate Cells","Stellate Cells","Stellate Cells","Stellate Cells","Stellate Cells","Stellate Cells","Stellate Cells","Stellate Cells","Stellate Cells","COL4A1_a2b1 complex","COL3A1_a2b1 complex","TNC_a9b1 complex","TNC_a9b1 complex","TNC_a9b1 complex","TNC_a9b1 complex","COL1A2_a2b1 complex","COL4A2_a2b1 complex","TNC_a4b1 complex","TNC_a4b1 complex","COL5A2_a2b1 complex","TGFB2_TGFBR3","ADGRL1_NRG1","ADGRL1_NRG1","ADGRL1_NRG1","EGFR_NRG1"],"to":["COL4A1_a2b1 complex","COL3A1_a2b1 complex","TNC_a9b1 complex","TNC_a9b1 complex","TNC_a9b1 complex","TNC_a9b1 complex","COL1A2_a2b1 complex","COL4A2_a2b1 complex","TNC_a4b1 complex","TNC_a4b1 complex","COL5A2_a2b1 complex","TGFB2_TGFBR3","ADGRL1_NRG1","ADGRL1_NRG1","ADGRL1_NRG1","EGFR_NRG1","Cholangiocytes","Cholangiocytes","Cholangiocytes","Endothelial Cells","Portal Hepatocytes","Macrophages","Cholangiocytes","Cholangiocytes","Macrophages","Plasmacytoid Dendritic Cells","Cholangiocytes","Portal Fibroblasts","Central Hepatocytes","Portal Hepatocytes","Portal Fibroblasts","Central Hepatocytes"],"width":[2.26073585737351,2.30983575127642,2.52476683780734,2.63983615826686,2.68945024696527,2.93934130213464,2.30021128981962,2.25705442286669,3.1276643043184,2.74097559747716,2.38181744579318,2.31565299487106,4.62533523241267,2.88946630593527,2.90797622608271,2.94251375323275,2.26073585737351,2.30983575127642,2.52476683780734,2.63983615826686,2.68945024696527,2.93934130213464,2.30021128981962,2.25705442286669,3.1276643043184,2.74097559747716,2.38181744579318,2.31565299487106,4.62533523241267,2.88946630593527,2.90797622608271,2.94251375323275],"color":["black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black"]},"nodesToDataframe":true,"edgesToDataframe":true,"options":{"width":"100%","height":"100%","nodes":{"shape":"dot","physics":false},"manipulation":{"enabled":false},"edges":{"smooth":false,"arrows":"to"},"physics":{"stabilization":false}},"groups":null,"width":null,"height":null,"idselection":{"enabled":false},"byselection":{"enabled":false},"main":{"text":"Stellate Cells","style":"font-family:Georgia, Times New Roman, Times, serif;font-weight:bold;font-size:20px;text-align:center;"},"submain":null,"footer":null,"background":"rgba(0, 0, 0, 0)","igraphlayout":{"type":"square"}},"evals":[],"jsHooks":[]}</script>

<!-- rnb-htmlwidget-end -->


<!-- rnb-htmlwidget-begin eyJkZXBlbmRlbmNpZXMiOlt7Im5hbWUiOiJodG1sd2lkZ2V0cyIsInZlcnNpb24iOiIxLjUuNCIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC9odG1sd2lkZ2V0cy93d3cifSwibWV0YSI6W10sInNjcmlwdCI6Imh0bWx3aWRnZXRzLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjp0cnVlfSx7Im5hbWUiOiJ2aXMiLCJ2ZXJzaW9uIjoiNC4yMC4xIiwic3JjIjp7ImZpbGUiOiJDOi9Vc2Vycy8xNTE3Ny9PbmVEcml2ZSAtIE1pY2hpZ2FuIFN0YXRlIFVuaXZlcnNpdHkvRG9jdW1lbnRzL1Ivd2luLWxpYnJhcnkvNC4wL3Zpc05ldHdvcmsvaHRtbHdpZGdldHMvbGliL3ZpcyJ9LCJtZXRhIjpbXSwic2NyaXB0IjoidmlzLm1pbi5qcyIsInN0eWxlc2hlZXQiOiJ2aXMuY3NzIiwiaGVhZCI6W10sImF0dGFjaG1lbnQiOltdLCJhbGxfZmlsZXMiOnRydWV9LHsibmFtZSI6InZpc05ldHdvcmstYmluZGluZyIsInZlcnNpb24iOiIyLjAuOSIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC92aXNOZXR3b3JrL2h0bWx3aWRnZXRzIn0sIm1ldGEiOltdLCJzY3JpcHQiOiJ2aXNOZXR3b3JrLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjpmYWxzZX1dLCJtZXRhZGF0YSI6eyJjbGFzc2VzIjpbInNoaW55LnRhZy5saXN0IiwibGlzdCJdLCJzaXppbmdQb2xpY3kiOltdfX0= -->

<div id="htmlwidget-834de9ae1b1c0484e8d5" style="width:960px;height:500px;" class="visNetwork html-widget"></div>
<script type="application/json" data-for="htmlwidget-834de9ae1b1c0484e8d5">{"x":{"nodes":{"id":["Plasmacytoid Dendritic Cells","Endothelial Cells","Macrophages","Cholangiocytes","Portal Hepatocytes","Neutrophils","Portal Fibroblasts","Stellate Cells","Central Hepatocytes","B Cells","PTPRC_MRC1","CADM1_CADM1","CD74_APP","NRG1_ERBB4","PTPRC_CD22","NRG2_ERBB4","PECAM1_CD38"],"type":["dot","cell","cell","cell","cell","cell","cell","cell","cell","cell","molecule","molecule","molecule","molecule","molecule","molecule","molecule"],"shape":["dot","dot","dot","dot","dot","dot","dot","dot","dot","dot","diamond","diamond","diamond","diamond","diamond","diamond","diamond"],"label":["Plasmacytoid Dendritic Cells","Endothelial Cells","Macrophages","Cholangiocytes","Portal Hepatocytes","Neutrophils","Portal Fibroblasts","Stellate Cells","Central Hepatocytes","B Cells","PTPRC_MRC1","CADM1_CADM1","CD74_APP","NRG1_ERBB4","PTPRC_CD22","NRG2_ERBB4","PECAM1_CD38"],"size":[25,20,20,20,20,20,20,20,20,20,10,10,10,10,10,10,10],"color.background":["#40bd57","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#f78279","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff","#8a82ff"],"x":[0.00949375758222626,-0.0528508230253644,-0.423315369807762,0.379401997216893,0.681480731877379,1,0.838129039339245,0.754165638175154,0.588932115635344,-1,-0.148483517194293,-0.57072533181192,0.299231742941419,0.26523600671114,-0.573095219499249,0.451139087801734,-0.721514996082843],"y":[-0.0606591468038385,-0.81136674835131,-0.383158299659312,-1,0.0931965780650328,-0.585861819156746,-0.12819431020661,-0.86234103843492,0.699774597694399,1,-0.445977524673173,-0.00811262032570748,-0.368066059952803,0.361815860458746,0.561946694002419,0.218515166891766,-0.254088135747618]},"edges":{"from":["Plasmacytoid Dendritic Cells","Plasmacytoid Dendritic Cells","Plasmacytoid Dendritic Cells","Plasmacytoid Dendritic Cells","Plasmacytoid Dendritic Cells","Plasmacytoid Dendritic Cells","Plasmacytoid Dendritic Cells","Plasmacytoid Dendritic Cells","Plasmacytoid Dendritic Cells","Plasmacytoid Dendritic Cells","Plasmacytoid Dendritic Cells","Plasmacytoid Dendritic Cells","Plasmacytoid Dendritic Cells","Plasmacytoid Dendritic Cells","Plasmacytoid Dendritic Cells","Plasmacytoid Dendritic Cells","PTPRC_MRC1","PTPRC_MRC1","CADM1_CADM1","CD74_APP","CD74_APP","CD74_APP","CD74_APP","CD74_APP","CD74_APP","CD74_APP","NRG1_ERBB4","NRG1_ERBB4","PTPRC_CD22","NRG2_ERBB4","NRG2_ERBB4","PECAM1_CD38"],"to":["PTPRC_MRC1","PTPRC_MRC1","CADM1_CADM1","CD74_APP","CD74_APP","CD74_APP","CD74_APP","CD74_APP","CD74_APP","CD74_APP","NRG1_ERBB4","NRG1_ERBB4","PTPRC_CD22","NRG2_ERBB4","NRG2_ERBB4","PECAM1_CD38","Endothelial Cells","Macrophages","Macrophages","Cholangiocytes","Endothelial Cells","Portal Hepatocytes","Macrophages","Neutrophils","Portal Fibroblasts","Stellate Cells","Central Hepatocytes","Portal Hepatocytes","B Cells","Central Hepatocytes","Portal Fibroblasts","Macrophages"],"width":[3.20054725570965,6.66594083226347,2.61949643628301,2.43256076987169,2.8176670373505,2.36336889205531,2.94251375323275,2.33132364594824,2.48339650090816,2.34923208909718,2.42609187295486,2.39011680334909,2.76607597196539,2.30983575127642,2.36948406256895,2.71361317945053,3.20054725570965,6.66594083226347,2.61949643628301,2.43256076987169,2.8176670373505,2.36336889205531,2.94251375323275,2.33132364594824,2.48339650090816,2.34923208909718,2.42609187295486,2.39011680334909,2.76607597196539,2.30983575127642,2.36948406256895,2.71361317945053],"color":["black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black","black"]},"nodesToDataframe":true,"edgesToDataframe":true,"options":{"width":"100%","height":"100%","nodes":{"shape":"dot","physics":false},"manipulation":{"enabled":false},"edges":{"smooth":false,"arrows":"to"},"physics":{"stabilization":false}},"groups":null,"width":null,"height":null,"idselection":{"enabled":false},"byselection":{"enabled":false},"main":{"text":"Plasmacytoid Dendritic Cells","style":"font-family:Georgia, Times New Roman, Times, serif;font-weight:bold;font-size:20px;text-align:center;"},"submain":null,"footer":null,"background":"rgba(0, 0, 0, 0)","igraphlayout":{"type":"square"}},"evals":[],"jsHooks":[]}</script>

<!-- rnb-htmlwidget-end -->


<!-- rnb-htmlwidget-begin eyJkZXBlbmRlbmNpZXMiOlt7Im5hbWUiOiJodG1sd2lkZ2V0cyIsInZlcnNpb24iOiIxLjUuNCIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC9odG1sd2lkZ2V0cy93d3cifSwibWV0YSI6W10sInNjcmlwdCI6Imh0bWx3aWRnZXRzLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjp0cnVlfSx7Im5hbWUiOiJ2aXMiLCJ2ZXJzaW9uIjoiNC4yMC4xIiwic3JjIjp7ImZpbGUiOiJDOi9Vc2Vycy8xNTE3Ny9PbmVEcml2ZSAtIE1pY2hpZ2FuIFN0YXRlIFVuaXZlcnNpdHkvRG9jdW1lbnRzL1Ivd2luLWxpYnJhcnkvNC4wL3Zpc05ldHdvcmsvaHRtbHdpZGdldHMvbGliL3ZpcyJ9LCJtZXRhIjpbXSwic2NyaXB0IjoidmlzLm1pbi5qcyIsInN0eWxlc2hlZXQiOiJ2aXMuY3NzIiwiaGVhZCI6W10sImF0dGFjaG1lbnQiOltdLCJhbGxfZmlsZXMiOnRydWV9LHsibmFtZSI6InZpc05ldHdvcmstYmluZGluZyIsInZlcnNpb24iOiIyLjAuOSIsInNyYyI6eyJmaWxlIjoiQzovVXNlcnMvMTUxNzcvT25lRHJpdmUgLSBNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5L0RvY3VtZW50cy9SL3dpbi1saWJyYXJ5LzQuMC92aXNOZXR3b3JrL2h0bWx3aWRnZXRzIn0sIm1ldGEiOltdLCJzY3JpcHQiOiJ2aXNOZXR3b3JrLmpzIiwic3R5bGVzaGVldCI6W10sImhlYWQiOltdLCJhdHRhY2htZW50IjpbXSwiYWxsX2ZpbGVzIjpmYWxzZX1dLCJtZXRhZGF0YSI6eyJjbGFzc2VzIjpbInNoaW55LnRhZy5saXN0IiwibGlzdCJdLCJzaXppbmdQb2xpY3kiOltdfX0= -->

<div id="htmlwidget-f1c4ec1510dda67222e2" style="width:960px;height:500px;" class="visNetwork html-widget"></div>
<script type="application/json" data-for="htmlwidget-f1c4ec1510dda67222e2">{"x":{"nodes":{"id":["T Cells","Endothelial Cells","Macrophages","Central Hepatocytes","Portal Hepatocytes","B Cells","PTPRC_MRC1","NRG1_ERBB4","PTPRC_CD22","PECAM1_CD38"],"type":["dot","cell","cell","cell","cell","cell","molecule","molecule","molecule","molecule"],"shape":["dot","dot","dot","dot","dot","dot","diamond","diamond","diamond","diamond"],"label":["T Cells","Endothelial Cells","Macrophages","Central Hepatocytes","Portal Hepatocytes","B Cells","PTPRC_MRC1","NRG1_ERBB4","PTPRC_CD22","PECAM1_CD38"],"size":[25,20,20,20,20,20,10,10,10,10],"color.background":["#40bd57","#f78279","#f78279","#f78279","#f78279","#f78279","#8a82ff","#8a82ff","#8a82ff","#8a82ff"],"x":[-0.00372914009934777,-1,-0.608166658284385,0.873227606797752,1,0.0365937450100271,-0.484543678477882,0.509548527257607,0.0212155434944818,-0.224511513496925],"y":[-0.36646886891265,-0.353523355890863,-1,-0.953697403123411,-0.355398905420838,1,-0.4713255138694,-0.519462511103503,0.402591142317206,-0.92392274494267]},"edges":{"from":["T Cells","T Cells","T Cells","T Cells","T Cells","T Cells","PTPRC_MRC1","PTPRC_MRC1","NRG1_ERBB4","NRG1_ERBB4","PTPRC_CD22","PECAM1_CD38"],"to":["PTPRC_MRC1","PTPRC_MRC1","NRG1_ERBB4","NRG1_ERBB4","PTPRC_CD22","PECAM1_CD38","Endothelial Cells","Macrophages","Central Hepatocytes","Portal Hepatocytes","B Cells","Macrophages"],"width":[3.14199132166883,6.4561585316974,2.33329878586599,2.3021291255137,2.71904192107102,2.48113969112844,3.14199132166883,6.4561585316974,2.33329878586599,2.3021291255137,2.71904192107102,2.48113969112844],"color":["black","black","black","black","black","black","black","black","black","black","black","black"]},"nodesToDataframe":true,"edgesToDataframe":true,"options":{"width":"100%","height":"100%","nodes":{"shape":"dot","physics":false},"manipulation":{"enabled":false},"edges":{"smooth":false,"arrows":"to"},"physics":{"stabilization":false}},"groups":null,"width":null,"height":null,"idselection":{"enabled":false},"byselection":{"enabled":false},"main":{"text":"T Cells","style":"font-family:Georgia, Times New Roman, Times, serif;font-weight:bold;font-size:20px;text-align:center;"},"submain":null,"footer":null,"background":"rgba(0, 0, 0, 0)","igraphlayout":{"type":"square"}},"evals":[],"jsHooks":[]}</script>

<!-- rnb-htmlwidget-end -->

<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<p><strong>Figure S6.</strong> Network visualization of ligand-receptor pair interactions determined by using CellPhoneDB. Interactions were identified for each individual dose group independently including genes expressed in at least 25% of nuclei. Mean values for ligand-receptor pairs (mean of the means for each member of the interaction) was calculated at each dose and only interactions exhibiting a ≥ 2-fold increase relative to control and p-value ≤ 0.05 were kept.</p>
<!-- rnb-text-end -->

<div id="rmd-source-code">LS0tDQp0aXRsZTogIkZpZ3VyZSBTNiINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCmBgYHtyIGVjaG8gPSBGQUxTRX0NCmxpYnJhcnkocmVzaGFwZTIpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeSh0aWR5cikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkodmlzTmV0d29yaykNCmBgYA0KDQpgYGB7ciBlY2hvID0gRkFMU0V9DQpkaXIudmVjIDwtIGxpc3QuZGlycygpWy0xXQ0KDQpjcGRiLmxpc3QgPC0gbGlzdCgpDQpmb3IgKGQgaW4gZGlyLnZlYyl7DQogIGRhdGEubWVhbiA8LSByZWFkLnRhYmxlKHBhc3RlMChkLCcvbWVhbnMudHh0JyksIHNlcCA9ICdcdCcsIGhlYWRlciA9IFRSVUUpDQogIGRhdGEucHZhbCA8LSByZWFkLnRhYmxlKHBhc3RlMChkLCcvcHZhbHVlcy50eHQnKSwgc2VwID0gJ1x0JywgaGVhZGVyID0gVFJVRSkNCiAgDQogIGRhdGEubWVhbi5sb25nIDwtIG1lbHQoZGF0YS5tZWFuWyAsIGMoMToyLCA3LCAxMjpuY29sKGRhdGEubWVhbikpXSkNCiAgY29sbmFtZXMoZGF0YS5tZWFuLmxvbmcpIDwtIGMoJ2lkX2NwX2ludGVyYWN0aW9uJywgJ2ludGVyYWN0aW5nX3BhaXInLCAnc2VjcmV0ZWQnLCAndmFyaWFibGUnLCAnbWVhbicpDQogIGRhdGEucHZhbC5sb25nIDwtIG1lbHQoZGF0YS5wdmFsWyAsIGMoMToyLCA3LCAxMjpuY29sKGRhdGEucHZhbCkpXSkNCiAgY29sbmFtZXMoZGF0YS5wdmFsLmxvbmcpIDwtIGMoJ2lkX2NwX2ludGVyYWN0aW9uJywgJ2ludGVyYWN0aW5nX3BhaXInLCAnc2VjcmV0ZWQnLCAndmFyaWFibGUnLCAncHZhbCcpDQogIGNwZGIubGlzdFtbZF1dIDwtIG1lcmdlKGRhdGEubWVhbi5sb25nLCBkYXRhLnB2YWwubG9uZywgDQogICAgICAgICAgICAgICAgICBieS54ID0gYygnaWRfY3BfaW50ZXJhY3Rpb24nLCAnaW50ZXJhY3RpbmdfcGFpcicsICdzZWNyZXRlZCcsICd2YXJpYWJsZScpLCANCiAgICAgICAgICAgICAgICAgIGJ5LnkgPSBjKCdpZF9jcF9pbnRlcmFjdGlvbicsICdpbnRlcmFjdGluZ19wYWlyJywgJ3NlY3JldGVkJywgJ3ZhcmlhYmxlJykNCiAgICAgICAgICAgICAgICAgICkNCiAgY3BkYi5saXN0W1tkXV0kZG9zZSA9IGQNCn0NCg0KZGF0YS5kZiA8LSBkby5jYWxsKCdyYmluZCcsIGNwZGIubGlzdCkNCg0KY29tYmluZWQuZGYgPC0gbWVyZ2UoZGF0YS5kZiwgY3BkYi5saXN0W1snLi9EMF8wMCddXSwNCiAgICAgICAgICAgICAgICAgIGJ5LnggPSBjKCdpZF9jcF9pbnRlcmFjdGlvbicsICdpbnRlcmFjdGluZ19wYWlyJywgJ3NlY3JldGVkJywgJ3ZhcmlhYmxlJyksIA0KICAgICAgICAgICAgICAgICAgYnkueSA9IGMoJ2lkX2NwX2ludGVyYWN0aW9uJywgJ2ludGVyYWN0aW5nX3BhaXInLCAnc2VjcmV0ZWQnLCAndmFyaWFibGUnKSwNCiAgICAgICAgICAgICAgICAgIGFsbC54ID0gVFJVRQ0KICAgICAgICAgICApDQoNCmNvbG5hbWVzKGNvbWJpbmVkLmRmKSA8LSBjKCdpZF9jcF9pbnRlcmFjdGlvbicsICdpbnRlcmFjdGluZ19wYWlyJywgJ3NlY3JldGVkJywgJ3ZhcmlhYmxlJywgJ21lYW4nLCAncHZhbCcsICdkb3NlJywgJ2NfbWVhbicsICdjX3B2YWwnLCAnRDAnKQ0KY29tYmluZWQuZGZbd2hpY2goaXMubmEoY29tYmluZWQuZGYkY19tZWFuKSksICdjX21lYW4nXSA8LSAwDQoNCmNvbWJpbmVkLmRmIDwtIGNvbWJpbmVkLmRmICU+JSBzZXBhcmF0ZSh2YXJpYWJsZSwgYygic291cmNlIiwgInJlY2VpdmVyIiksIHNlcCA9ICdfJykNCmNvbWJpbmVkLmRmJEZDIDwtIGV4cChjb21iaW5lZC5kZiRtZWFuIC0gY29tYmluZWQuZGYkY19tZWFuKQ0KDQpjZWxsdHlwZXMgPC0gdW5pcXVlKGNvbWJpbmVkLmRmJHNvdXJjZSkNCm5ldy5jZWxsdHlwZXMgPC0gYygnQiBDZWxscycsICdDaG9sYW5naW9jeXRlcycsICdFbmRvdGhlbGlhbCBDZWxscycsICdDZW50cmFsIEhlcGF0b2N5dGVzJywgJ1BvcnRhbCBIZXBhdG9jeXRlcycsICdNYWNyb3BoYWdlcycsICdOZXV0cm9waGlscycsICdQb3J0YWwgRmlicm9ibGFzdHMnLCAnU3RlbGxhdGUgQ2VsbHMnLCAnUGxhc21hY3l0b2lkIERlbmRyaXRpYyBDZWxscycsICdUIENlbGxzJykNCmZvciAoaSBpbiAxOmxlbmd0aChjZWxsdHlwZXMpKXsNCiAgY3QgPC0gY2VsbHR5cGVzW2ldDQogIG5ldy5jdCA8LSBuZXcuY2VsbHR5cGVzW2ldDQogIGNvbWJpbmVkLmRmW3doaWNoKGNvbWJpbmVkLmRmJHNvdXJjZSA9PSBjdCksICdzb3VyY2UnXSA8LSBuZXcuY3QNCiAgY29tYmluZWQuZGZbd2hpY2goY29tYmluZWQuZGYkcmVjZWl2ZXIgPT0gY3QpLCAncmVjZWl2ZXInXSA8LSBuZXcuY3QNCn0NCmBgYA0KDQpgYGB7ciBmaWcuaGVpZ2h0ID0gNSwgZmlnLndpZHRoID0gOSwgZWNobyA9IEZBTFNFfQ0KZm9yIChjdCBpbiB1bmlxdWUoY29tYmluZWQuZGYkc291cmNlKSl7DQpuZXR3b3JrLnN1YnNldCA8LSBjb21iaW5lZC5kZiAlPiUgZmlsdGVyKHB2YWwgPD0gMC4wNSAmIEZDID49IDIgJiBzb3VyY2UgPT0gY3QgJiByZWNlaXZlciAhPSBjdCkNCg0KY2VsbHMgPC0gdW5pcXVlKGMobmV0d29yay5zdWJzZXQkc291cmNlLCBuZXR3b3JrLnN1YnNldCRyZWNlaXZlcikpDQptb2xlY3VsZXMgPC0gdW5pcXVlKG5ldHdvcmsuc3Vic2V0JGludGVyYWN0aW5nX3BhaXIpDQoNCm5vZGUubGlzdCA8LSBkYXRhLmZyYW1lKA0KICBpZCA9IGMoY2VsbHMsIG1vbGVjdWxlcyksDQogIHR5cGUgPSBjKHJlcCgnY2VsbCcsIGxlbmd0aChjZWxscykpLCByZXAoJ21vbGVjdWxlJywgbGVuZ3RoKG1vbGVjdWxlcykpKSwNCiAgc2hhcGUgPSBjKHJlcCgnZG90JywgbGVuZ3RoKGNlbGxzKSksIHJlcCgnZGlhbW9uZCcsIGxlbmd0aChtb2xlY3VsZXMpKSksDQogIGxhYmVsID0gYyhjZWxscywgbW9sZWN1bGVzKSwNCiAgc2l6ZSA9IGMocmVwKDIwLCBsZW5ndGgoY2VsbHMpKSwgcmVwKDEwLCBsZW5ndGgobW9sZWN1bGVzKSkpLA0KICBjb2xvci5iYWNrZ3JvdW5kID0gYyhyZXAoJyNmNzgyNzknLCBsZW5ndGgoY2VsbHMpKSwgcmVwKCcjOGE4MmZmJywgbGVuZ3RoKG1vbGVjdWxlcykpKQ0KKQ0Kbm9kZS5saXN0W3doaWNoKG5vZGUubGlzdCRpZCA9PSBjdCksICdpZCddIDwtIGN0DQpub2RlLmxpc3Rbd2hpY2gobm9kZS5saXN0JGlkID09IGN0KSwgJ3R5cGUnXSA8LSAnZG90Jw0Kbm9kZS5saXN0W3doaWNoKG5vZGUubGlzdCRpZCA9PSBjdCksICdsYWJlbCddIDwtIGN0DQpub2RlLmxpc3Rbd2hpY2gobm9kZS5saXN0JGlkID09IGN0KSwgJ3NpemUnXSA8LSAyNQ0Kbm9kZS5saXN0W3doaWNoKG5vZGUubGlzdCRpZCA9PSBjdCksICJjb2xvci5iYWNrZ3JvdW5kIl0gPC0gJyM0MGJkNTcnDQoNCmQxIDwtIG5ldHdvcmsuc3Vic2V0WyxjKCdzb3VyY2UnLCAnaW50ZXJhY3RpbmdfcGFpcicsICdGQycpXQ0KY29sbmFtZXMoZDEpIDwtIGMoJ2Zyb20nLCAndG8nLCAnd2lkdGgnKQ0KZDIgPC0gbmV0d29yay5zdWJzZXRbLGMoJ2ludGVyYWN0aW5nX3BhaXInLCAncmVjZWl2ZXInLCAnRkMnKV0NCmNvbG5hbWVzKGQyKSA8LSBjKCdmcm9tJywgJ3RvJywgJ3dpZHRoJykNCg0KZWRnZS5saXN0IDwtIHJiaW5kKA0KICBkMSwNCiAgZDINCikNCmVkZ2UubGlzdCR3aWR0aCA8LSAxLjVeZWRnZS5saXN0JHdpZHRoDQplZGdlLmxpc3QkY29sb3IgPSAnYmxhY2snDQoNCnZuIDwtIHZpc05ldHdvcmsobm9kZS5saXN0LCBlZGdlLmxpc3QsIG1haW4gPSBjdCkgJT4lIA0KICB2aXNJZ3JhcGhMYXlvdXQobGF5b3V0ID0gImxheW91dF93aXRoX2ZyIikgJT4lIA0KICB2aXNFZGdlcyhhcnJvd3MgPSAidG8iKQ0KDQpwcmludChodG1sdG9vbHM6OnRhZ0xpc3Qodm4pKQ0KfQ0KYGBgDQpfX0ZpZ3VyZSBTNi5fXyBOZXR3b3JrIHZpc3VhbGl6YXRpb24gb2YgbGlnYW5kLXJlY2VwdG9yIHBhaXIgaW50ZXJhY3Rpb25zIGRldGVybWluZWQgYnkgdXNpbmcgQ2VsbFBob25lREIuIEludGVyYWN0aW9ucyB3ZXJlIGlkZW50aWZpZWQgZm9yICBlYWNoIGluZGl2aWR1YWwgZG9zZSBncm91cCBpbmRlcGVuZGVudGx5IGluY2x1ZGluZyBnZW5lcyBleHByZXNzZWQgaW4gYXQgbGVhc3QgMjUlIG9mIG51Y2xlaS4gTWVhbiB2YWx1ZXMgZm9yIGxpZ2FuZC1yZWNlcHRvciBwYWlycyAobWVhbiBvZiB0aGUgbWVhbnMgZm9yIGVhY2ggbWVtYmVyIG9mIHRoZSBpbnRlcmFjdGlvbikgd2FzIGNhbGN1bGF0ZWQgYXQgZWFjaCBkb3NlIGFuZCBvbmx5IGludGVyYWN0aW9ucyBleGhpYml0aW5nIGEg4omlIDItZm9sZCBpbmNyZWFzZSByZWxhdGl2ZSB0byBjb250cm9sIGFuZCBwLXZhbHVlIOKJpCAwLjA1IHdlcmUga2VwdC4g</div>



</div>

<script>

// add bootstrap table styles to pandoc tables
function bootstrapStylePandocTables() {
  $('tr.odd').parent('tbody').parent('table').addClass('table table-condensed');
}
$(document).ready(function () {
  bootstrapStylePandocTables();
});

$(document).ready(function () {
  $('.knitsql-table').addClass('kable-table');
  var container = $('.kable-table');
  container.each(function() {

    // move the caption out of the table
    var table = $(this).children('table');
    var caption = table.children('caption').detach();
    caption.insertBefore($(this)).css('display', 'inherit');
  });
});

</script>

<!-- tabsets -->

<script>
$(document).ready(function () {
  window.buildTabsets("TOC");
});

$(document).ready(function () {
  $('.tabset-dropdown > .nav-tabs > li').click(function () {
    $(this).parent().toggleClass('nav-tabs-open');
  });
});
</script>

<!-- code folding -->
<script>
$(document).ready(function () {
  window.initializeSourceEmbed("FigS6-CellPhoneDB network.Rmd");
  window.initializeCodeFolding("show" === "show");
});
</script>


<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
  (function () {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src  = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
    document.getElementsByTagName("head")[0].appendChild(script);
  })();
</script>

</body>
</html>
